Smalltalk ist die Sprache, die den Begriff der objektorientierten Programmierung prägte: Alan Kay entwickelte sie ab 1972 am Xerox PARC, die standardisierte Version Smalltalk-80 erschien 1980 (mit Adele Goldberg und Dan Ingalls, inspiriert vom Dynabook-Konzept). Zwei Prinzipien sind radikal: alles ist ein Objekt und alles ist Nachrichtenaustausch (Message Passing). Auch das Model-View-Controller-Muster (MVC) stammt aus der Smalltalk-Welt.
Grundprinzip
Ein Programm besteht aus Objekten, die sich gegenseitig Nachrichten senden. Selbst Rechenoperationen sind Nachrichten:
"Hallo Welt" printString
3 + 4 "Nachricht + an die Zahl 3"
'abc' asUppercase
Zuweisung :=, Rückgabe ^, temporäre Variablen | x |, Blöcke [ :param | … ] (Funktionen), Symbole #name und Zeichen $c als Literale. Mehrere Nachrichten an dasselbe Objekt werden mit ; verkettet (Kaskade).
Die Umgebung als Befehlssatz
- Playground/Workspace: Code ausprobieren —
doItführt aus,printItzeigt das Ergebnis,inspectItöffnet den Inspektor - Transcript: Ausgabekonsole —
Transcript show: 'Hallo' - System Browser: Klassen und Methoden durchsuchen,
Smalltalk systemals Einstieg - Paketverwaltung: Monticello und Metacello, Start über den Pharo Launcher
- Reflection:
class,instVarNames,methodsliefern Metainformationen zur Laufzeit
Wichtige Implementierungen
- Squeak (1996, offen, Basis vieler Lernumgebungen wie Scratch)
- Pharo (2008, Abspaltung von Squeak, moderne IDE und aktive Community)
- GNU Smalltalk und VisualWorks (kommerziell, Cincom)
- SUnit (Kent Beck) — Urvater aller xUnit-Testframeworks
Verwandte Grundlagen: Objective-C-Befehle, Ruby-Befehle, Java-Befehle, Tcl-Befehle, Haxe-Befehle.