Smalltalk
The pioneering object-oriented language that defined what OOP means - every concept is an object, every action is a message
Created by Alan Kay, Dan Ingalls, Adele Goldberg (Xerox PARC)
Smalltalk is not just a programming language - it’s a complete philosophy of computing. Created at Xerox PARC in the 1970s by Alan Kay’s Learning Research Group, Smalltalk introduced many concepts we now take for granted: graphical user interfaces, the modern IDE, and the very idea of object-oriented programming as we know it today.
History & Origins
In 1968, Alan Kay had a vision: computers as “Dynabooks” - personal, portable devices that children could use to learn and create. To realize this vision, he needed a programming environment that was powerful yet accessible. At Xerox PARC in the early 1970s, Kay assembled a team including Dan Ingalls, Adele Goldberg, and others to create Smalltalk.
The Evolution
Smalltalk-72 was the first implementation, featuring the core messaging concept. Every interaction was a message sent to an object.
Smalltalk-76 introduced the class browser, the iconic tool that lets programmers navigate and modify the entire system. It also established the inheritance model.
Smalltalk-80 became the canonical version, released to the outside world through a famous issue of BYTE Magazine in August 1981. This version established Smalltalk’s syntax and class library that persist today.
The PARC Legacy
Smalltalk wasn’t developed in isolation. The same Xerox PARC environment produced:
- The graphical user interface (windows, icons, menus, pointing devices)
- The WYSIWYG document editor
- Ethernet networking
- Laser printing
Smalltalk tied these innovations together, demonstrating what personal computing could become.
Core Philosophy
Everything is an Object
In Smalltalk, there are no primitives, no special cases. Numbers are objects. Classes are objects. Even nil, true, and false are objects. This purity makes the system consistent and learnable.
| |
Everything is a Message
All computation happens through message passing. The syntax is remarkably simple:
- Unary messages:
object message(e.g.,3 negated) - Binary messages:
object operator argument(e.g.,3 + 4) - Keyword messages:
object keyword: argument(e.g.,list at: 1 put: 'hello')
The Image
Unlike most languages where programs are text files compiled into executables, Smalltalk maintains a living “image” - a snapshot of all objects in memory. When you save your work, you save the entire state of the system. When you restart, you continue exactly where you left off.
The Browser
Smalltalk pioneered the integrated development environment. The class browser lets you:
- Navigate all classes in the system
- Edit methods directly
- See inheritance hierarchies
- Search and refactor code
Modern IDEs owe their existence to Smalltalk’s browser.
Language Features
Clean Syntax
Smalltalk’s syntax fits on a postcard:
| |
Blocks as First-Class Objects
Blocks (closures) are fundamental to Smalltalk:
| |
Reflection and Metaclasses
Smalltalk is fully reflective. Programs can inspect and modify themselves:
| |
Live Development
In Smalltalk, you don’t write code and then run it. You interact with living objects:
- Inspect any object to see its state
- Modify methods while the program runs
- Fix bugs without restarting
- Explore the system interactively
Modern Implementations
Pharo
The most actively developed modern Smalltalk:
- Clean, modern syntax extensions
- Git integration via Iceberg
- Web development with Seaside and Teapot
- Active community and conferences
- MIT licensed
Squeak
Maintained by original PARC team members:
- Educational focus with Etoys
- Morphic graphical framework
- Cross-platform including Raspberry Pi
- Emphasis on multimedia and simulation
GNU Smalltalk
Command-line oriented Smalltalk:
- Script-friendly (no GUI required)
- Package management via packages
- Good for server-side applications
- Traditional Unix tool philosophy
VisualWorks (Cincom)
Commercial Smalltalk:
- Enterprise features
- Web services support
- Used in financial systems
- Professional support
Smalltalk’s Influence
Smalltalk’s ideas permeate modern programming:
Objective-C and Swift
Brad Cox created Objective-C by adding Smalltalk’s messaging to C. This became the language of NeXT and later Apple. Swift continues many Objective-C (and thus Smalltalk) conventions.
Ruby
Matz explicitly based Ruby on Smalltalk’s object model:
- Everything is an object
- Blocks as first-class values
- Dynamic typing
- Message-based design
Java
While Java’s syntax came from C++, its class library design, garbage collection, and object model show clear Smalltalk influence.
Design Patterns
The Gang of Four’s “Design Patterns” book used Smalltalk (alongside C++) for examples. Many patterns originated in the Smalltalk community.
Agile Development
Kent Beck developed Extreme Programming (XP) while working in Smalltalk. The language’s interactive nature encouraged:
- Test-driven development
- Refactoring
- Pair programming
- Continuous integration
JUnit, the grandfather of unit testing frameworks, was inspired by SUnit for Smalltalk.
Why Smalltalk Matters Today
Educational Value
Smalltalk’s consistency makes it excellent for learning OOP:
- One concept (messaging) explains everything
- No magic or special cases
- Immediate feedback
- Self-documenting system
Prototype Development
The live environment excels at exploration:
- Try ideas instantly
- Change anything without recompilation
- Debug interactively
- Refactor fearlessly
Domain-Specific Languages
Smalltalk’s clean syntax makes it ideal for DSLs:
- Keyword messages read like English
- Blocks provide deferred execution
- Metaclasses enable framework building
Web Development
Modern Smalltalk frameworks like Seaside offer:
- Component-based architecture
- Continuation-based control flow
- Live debugging of web apps
- No need for templates
The Smalltalk Community
Despite not being mainstream, Smalltalk has a dedicated community:
- ESUG - European Smalltalk Users Group, annual conference
- Pharo Consortium - Industry support for Pharo
- Smalltalk Discord/Reddit - Active online communities
- Pharoers - Weekly development streams
Many Smalltalkers have decades of experience and are passionate about sharing the language’s elegance.
Learning Smalltalk
Recommended resources:
- Pharo by Example - Free book for modern Smalltalk
- Squeak by Example - Introduction using Squeak
- Smalltalk Best Practice Patterns - Kent Beck’s classic
- Object-Oriented Software Construction - Bertrand Meyer
Why So Few Use It?
Given its influence, why isn’t Smalltalk more popular?
- Image-based persistence - Different from file-based workflows
- IDE coupling - Requires learning a specific environment
- Vendor fragmentation - Multiple incompatible implementations
- Timing - C++ and Java gained corporate backing first
- Inertia - Industry momentum favors established choices
Yet those who learn Smalltalk often become lifelong advocates. Its ideas are so powerful that they’ve been copied everywhere - just not the language itself.
Conclusion
Smalltalk represents a vision of computing that’s still ahead of its time in some ways. Its concepts of live development, objects all the way down, and powerful abstraction continue to influence new languages and tools.
Learning Smalltalk isn’t just about picking up another language - it’s about understanding where object-oriented programming came from and experiencing computing as its creators envisioned it. Whether or not you use Smalltalk professionally, studying it will make you a better programmer in any language.
As Alan Kay said: “The best way to predict the future is to invent it.” Smalltalk invented much of our programming present.
Timeline
Notable Uses & Legacy
Apple Lisa & Macintosh
The graphical user interface paradigm pioneered at Xerox PARC with Smalltalk directly inspired the Lisa and Mac interfaces.
Tektronix & HP Instruments
Scientific instruments and test equipment used Smalltalk for their graphical interfaces in the 1980s-90s.
JPMorgan's Kapital
One of the largest Smalltalk codebases, handling exotic derivatives trading for one of the world's largest banks.
Oriental Daily News
Hong Kong's largest newspaper used Smalltalk for their complete editorial and publishing system.
Scratch Programming
MIT's Scratch visual programming language for children was originally implemented in Squeak Smalltalk.
OLPC XO Laptop
The One Laptop Per Child project included Squeak/Etoys as an educational programming environment.
Language Influence
Influenced By
Influenced
Running Today
Run examples using the official Docker image:
docker pull sl4m/gnu-smalltalk:latestExample usage:
docker run --rm -v $(pwd):/app -w /app sl4m/gnu-smalltalk gst hello.st