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 — doIt führt aus, printIt zeigt das Ergebnis, inspectIt öffnet den Inspektor
  • Transcript: Ausgabekonsole — Transcript show: 'Hallo'
  • System Browser: Klassen und Methoden durchsuchen, Smalltalk system als Einstieg
  • Paketverwaltung: Monticello und Metacello, Start über den Pharo Launcher
  • Reflection: class, instVarNames, methods liefern 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.