Introduction & History
Smalltalk is a pure object-oriented, dynamically typed, reflective programming language *and* a live programming environment.
1.1 What is Smalltalk?
Smalltalk is a pure object-oriented, dynamically typed, reflective programming language *and* a live programming environment. In Smalltalk:
Everything is an object — numbers, booleans, nil, classes, methods, blocks of code, the compiler, the debugger, even the current execution stack.
All computation happens by sending messages to objects. There are no operators, no statements like if or while built into the grammar — those are messages too.
The program lives in an image: a snapshot of all objects in memory, which you modify *while it runs*. You never "restart the program" to see a change.
The whole syntax is tiny — famously, it "fits on a postcard" (see Appendix 45.1).
1.2 Key characteristics
Pure OO: classes, single inheritance, polymorphism, late binding of every message.
Dynamic typing: variables hold references to any object; type errors surface as doesNotUnderstand: at runtime.
Garbage collected memory; no pointers, no manual freeing.
Closures (blocks) as first-class objects, used for all control flow and iteration.
Reflective: the system is written in itself and can inspect and modify itself at runtime.
Live, image-based development with an integrated browser, inspector, and debugger in which you can fix code and resume execution.
Runs on a virtual machine (bytecode + JIT), so images are portable across operating systems.
1.3 History
Alan Kay conceives the Dynabook, a personal computer for children of all ages; influenced by Simula, Sketchpad, LISP, and Logo
Smalltalk-72 at Xerox PARC's Learning Research Group — Alan Kay's design, implemented by Dan Ingalls; objects parse their own messages
Smalltalk-76 (Ingalls): classes, inheritance, a compiled bytecode VM, a modern syntax; runs on the Xerox Alto with overlapping windows and a mouse
Trygve Reenskaug describes Model–View–Controller while visiting PARC
Steve Jobs's famous visit to PARC sees the Smalltalk GUI — influencing the Lisa and Macintosh
Smalltalk-80 — metaclasses, the modern language; released to Apple, HP, DEC, Tektronix
*Smalltalk-80: The Language and its Implementation* ("the Blue Book") by Adele Goldberg and David Robson publishes the full VM specification
Commercial dialects: Tektronix Smalltalk, Digitalk Smalltalk/V (PCs), ParcPlace Systems spun out of PARC (1988)
Kent Beck and Ward Cunningham invent CRC cards and early patterns in Smalltalk
IBM VisualAge Smalltalk; Smalltalk heavily used in finance, telecom, insurance, and manufacturing; Refactoring Browser (John Brant, Don Roberts) and SUnit (Kent Beck) — the ancestor of JUnit and every xUnit framework
Squeak — Kay, Ingalls, and others at Apple release an open-source Smalltalk written in itself (VM in Slang, a Smalltalk subset translated to C)
Extreme Programming (XP) emerges from a Smalltalk project (Chrysler C3) Alan Kay receives the Turing Award
Pharo forks from Squeak to create a clean, modern, industrial-strength Smalltalk (1.0 in 2010)
Eliot Miranda's Cog JIT VM (2008) and the Spur memory manager (2014) — the OpenSmalltalk VM
Pharo 7 moves to Git via Iceberg; Glamorous Toolkit (feenk) appears as a "moldable development" environment built on Pharo
Pharo 12 (2024) and Pharo 13 (2025); Pharo 14 in development
1.4 Smalltalk's influence
Almost every modern language and tool owes something to Smalltalk:
Pure OO, message passing Objective-C, Ruby, Self, Python's object model Overlapping-window GUI, mouse, menus Xerox Alto + Smalltalk-76 Macintosh, Windows, every desktop Reenskaug at PARC, Smalltalk-80
Rails, Cocoa, ASP.NET MVC, countless frameworks IDE with class browser and live debugger
Eclipse (from VisualAge Smalltalk), IntelliJ, Visual Studio JIT compilation, inline caches Deutsch–Schiffman Smalltalk VM (1984)
Self → HotSpot JVM, V8 JavaScript engine Unit testing (xUnit) SUnit (Kent Beck) JUnit, NUnit, pytest heritage Every modern IDE's refactorings TDD, XP, design patterns, CRC, wikis Agile software development Bytecode VM + image Java,.NET, many language VMs
1.5 Dialects today
Open source, modern, the most active — used in this course pharo.org (Chapter 3)
The original open-source Smalltalk (Squeak 6.x), education, Etoys squeak.org — all-in-one bundles
Minimal, clean Squeak derivative focused on simplicity GNU Smalltalk
File-based, scripting-friendly syntax; largely dormant (3.2.x) but useful
apt install gnu-smalltalk; Homebrew or source builds VisualWorks (Cincom) Commercial, mature, cross-platform
Cincom — personal-use edition on request VA Smalltalk (Instantiations)
Commercial descendant of IBM VisualAge Smalltalk Instantiations — evaluation editions GemStone/S (GemTalk Systems)
Multi-user, transactional object database + Smalltalk server gemtalksystems.com — community license; GsDevKit Dolphin Smalltalk Windows-native, open source since 2016 GitHub (dolphinsmalltalk) Glamorous Toolkit
Moldable development environment built on Pharo