Smalltalk ist ein Sammelbegriff einerseits für eine dynamische, im Original untypisierte objektorientierte Programmiersprache und andererseits für eine vollständige Entwicklungsumgebung, die in den 1970er Jahren am Xerox PARC Forschungszentrum durch Alan Kay, Dan Ingalls, Adele Goldberg und andere entwickelt wurde. Sie wurde allgemein unter dem Namen Smalltalk-80 freigegeben und hat die Entwicklung vieler späterer Programmiersprachen, wie etwa Objective-C, Java und Ruby beeinflusst. Smalltalk wurde von Lisp mit seiner automatischen Speicherbereinigung und Simula mit seinem Klassen-Konzept beeinflusst und gilt neben Simula-67 als eine der ersten objektorientierten Programmiersprachen.
Smalltalk ist im Gegensatz zu Sprachen wie C++ oder Java eine rein objektorientierte Programmiersprache, das heißt, Daten wie Integer, Character und ähnliche, die in anderen objektorientierten Sprachen zum Teil als elementare Datentypen repräsentiert werden, sind in Smalltalk ebenfalls über Objekte und zugehörige Klassen realisiert. Die Smalltalk-Entwicklungsumgebung enthielt viele Ideen, die später mit der Macintosh- und Atari-TOS/GEM- und dann später auch Windows-Benutzeroberfläche verbreitet wurden. Verwendet wurde ein Grafikbildschirm mit verschiebbaren Fenstern, Aufklappmenüs und Schriften von verschiedener Größe. Eine Maus mit drei Tasten – rot, blau und gelb – diente erstmals als zusätzliches Eingabegerät. Das Model-View-Controller-Konzept (MVC) spielte in der Smalltalk-80-Entwicklungsumgebung eine wesentliche Rolle.
Wichtige Eigenschaften von Smalltalk Alles in Smalltalk ist ein Objekt, auch Zeichenketten, Integer, boolesche Werte, Klassen(-definitionen), ausführbarer Code, Stackframes, der Speicher, Codeblöcke etc. Objekte werden dadurch aktiviert, dass man ihnen Nachrichten (englisch „messages“) schickt. Dies führt dazu, dass die entsprechende Methode (Funktion) des Objekts ausgeführt wird. Der gesamte Quelltext ist in der Regel offen und kann somit verändert werden. Nur sehr wenige Methoden greifen auf echte 'Primitives' der virtuellen Maschine zurück. Dynamische Bindung – erst zur Laufzeit wird ermittelt, welche Methode tatsächlich aufgerufen wird. Eine frühe („statische“) Bindung, wie dies bei der statischen Typisierung vorgesehen ist, wurde in der Smalltalk-Programmiersprache bewusst ausgespart. Vererbung: In den meisten Smalltalk-Systemen ist jede Klasse (außer der Wurzelklasse Object oder ProtoObject) von genau einer Oberklasse abgeleitet, deren Verhalten sie erbt und beliebig erweitern kann (keine Mehrfachvererbung). Smalltalk-80 unterstützt allerdings eine einfache Form der Mehrfachvererbung. Automatische Speicherbereinigung (englisch garbage collection), die nicht durch den Programmierer beeinflusst werden kann. Ein Objekt existiert so lange, wie es von anderen Objekten referenziert wird. Smalltalkprogramme werden in Bytecode kompiliert, der durch eine virtuelle Maschine übersetzt wird. Ursprünglich wurde der Bytecode zu nativem Maschinencode interpretiert; kommerzielle Umgebungen arbeiten inzwischen fast ausschließlich mit dynamischer Übersetzung. Die Programmierumgebung erlaubt Änderungen im Quelltext, während das Programm läuft, und setzt diese unmittelbar während der Laufzeit um. Die Quelltexteingabe erfolgt in einem Klassenbrowser. Moderne Refactoring-Browser setzen sich allmählich gegen einfache Klassenbrowser durch, weil sie automatisierte Refactoring-Funktionen unterstützen und damit die Produktivität nochmals erheblich steigern, ähnlich wie sich Eclipse in der Java-Welt etabliert hat. Eine typische Eigenschaft im Vergleich zu nicht-objektorientierten Sprachen ist, dass die Kontrollstrukturen wie if-then-else, for, while nicht in die Sprache eingebaut sind. Zum Beispiel wird eine If-Anweisung ausgeführt, indem eine ifTrue:-Botschaft an ein boolesches Objekt gesandt wird. Als Parameter wird ein Block (Anweisungsfolge) übergeben. Lediglich in der Klasse True wird dieser Block ausgeführt. In der Klasse False ist diese Methode zwar auch implementiert, aber sie führt den Block nicht aus. Das gesamte System (inklusive Entwicklungswerkzeugen) wird in einem Image gespeichert.
Es gibt nur drei fest integrierte ausführbare Funktionen: eine Botschaft an ein Objekt senden ein Objekt einer Variablen zuweisen ein Objekt als Rückgabewert einer Methode liefern
Geschichte und Bedeutung von Smalltalk 1970–1980 In diese Zeit fällt die Entwicklung der ersten Versionen von Smalltalk-71, Smalltalk-72, Smalltalk-74 und Smalltalk-76Vgl. Alan C. Kay: The early history of Smalltalk. In: »ACM SIGPLAN notices« (Tagungsjournal), Band 28, No. 3, März 1993, Association for Computing Machinery, New York, S. 69 ff. – (PDF; 3,9 MB). bis hin zum heute verbreiteten Standard Smalltalk-80 am Forschungszentrum Xerox PARC.
1980–1990 Die Programmierung mit Klassenbrowser und die Verwendung einer virtuellen Maschine zur Ausführung stellte von Anfang an gewisse Mindestanforderungen an die Hardware. Dies geschah zu einer Zeit, in der die erschwinglichen Computer nicht über grafische Benutzeroberflächen verfügten und die Rechenleistung nicht für eine solche ausreichte. Smalltalk war seiner Zeit voraus und konnte zu Beginn nur auf Workstations effektiv eingesetzt werden. Im Ergebnis gab es daher nur wenige Smalltalk-Entwickler – dafür umso mehr C-Programmierer. Mit dem Aufkommen der grafischen Benutzeroberflächen im Mikrocomputerbereich entstand das objektorientierte C++, und da die meisten Entwickler C bereits kannten, konnte sich C++ sehr schnell verbreiten, sodass Smalltalk eine Nischenprogrammiersprache blieb. Im Gegensatz zu C und C++ legte Smalltalk auch auf hohe Ausführungsgeschwindigkeiten keinen besonderen Wert (Alan Kay: „It's still fast enough for our neurons“).
1990–2000 Anfang und Mitte der 1990er Jahre wurde Smalltalk in vielen Bereichen populär, in denen es auf die Beherrschung von Komplexität ankam (z. B. bei Expertensystemen). Verschiedene große Anbieter wie IBM begannen, Smalltalk stark zu unterstützen und in Großkundenprojekten einzusetzen. Es gab eine sprunghafte Zunahme verschiedener Implementierungen von Smalltalk. Mit dem Internet-Boom und dem davon profitierenden Java büßte Smalltalk Ende der 1990er Jahre seine gerade aufkommende Popularität jedoch wieder ein.
In Java wurden einige Konzepte von Smalltalk (wie z. B. die virtuelle Maschine und der Garbage Collector) übernommen. Die Syntax war jedoch wieder an C angelehnt. Auch kamen erneut nicht-objektorientierte Mittel zum Einsatz, wie die Vermischung der Objektorientierung mit einfachen Datentypen und imperative Strukturen, geringe Selbstbezüglichkeit und der Edit-Compile-Test-Debug-Zyklus mit Quellcode als reiner Textdatei etc. Java bot dafür Normierung, Aufstiegspfade für C-Programmierer und nicht zuletzt Allianzmöglichkeiten gegen die MS-Windows-Dominanz. Zudem wurde es von Sun Microsystems kostenlos zur Verfügung gestellt.
Das Ende des kurzen Smalltalk-Booms wurde durch den Niedergang der Firma ParcPlace unterstrichen, die als Ausgründung des Xerox PARC mit VisualWorksVisualWorks in der englischsprachigen Wikipedia (heute bei Cincom)Cincom in der englischsprachigen Wikipedia den direkten Nachfolger der Originalimplementierung anbot, der die damals mächtigste Smalltalk-Entwicklungsumgebung darstellte: Mit VisualWorks geschaffene Anwendungen liefen bereits 1991 bitkompatibel (durch VM) unter Windows, Mac OS Classic, Solaris (und anderen Unix-Systemen) und konnte ab 1994 deren verschiedene Benutzeroberflächen mit „Camelon View“ unabhängig vom Laufzeitsystem simulieren. Ein Konkurrent zu VisualWorks war die auf Windows und OS/2 zugeschnittene Entwicklungsumgebung Smalltalk/V (später Visual Smalltalk Enterprise genannt) der Firma Digitalk, die zuletzt bei Cincom erhältlich war. auf cincomsmalltalk.com (englisch)
Obwohl Smalltalk sehr leicht zu erlernen (nur wenige Sprachkonstrukte) und zu debuggen ist (selten ist eine zeitaufwendige explizite Neukompilierung und -erstellung sowie ein Neustart des Programms erforderlich) und das Problem mit der Ausführungsgeschwindigkeit – zum Teil durch effektivere Implementierungen, zum Teil durch leistungsfähigere Hardware – inzwischen gelöst ist, wird Smalltalk heute noch immer in wenigen Bereichen eingesetzt. Einer der Gründe hierfür kann in der mangelnden Einheitlichkeit der Programmbibliotheken verschiedener Implementationen gesehen werden, von denen bisher keine eine „natürliche Dominanz“ (wie die von Sun Microsystems für Java) entwickelt hat.
Nachdem ParcPlace als Player ausgeschieden war, IBM sein Smalltalk-Engagement zugunsten von Java eingestellt hatte und verschiedene zunächst erfolgversprechende Smalltalk-Implementierungen eingestellt worden waren (z. B. Dolphin Smalltalk 2007), gab es nur noch wenige überzeugte Anhänger, die an einen großen Durchbruch glaubten. Smalltalk blieb weiter ein Insiderthema.
Seit 2000 In den letzten Jahren gibt es mit der Etablierung von freien Implementierungen eine Art Renaissance von Smalltalk. Insbesondere das von ursprünglichen Smalltalk-Erfindern entwickelte plattformübergreifende Squeak und das darauf aufbauende Croquet erhalten wachsende Unterstützung aus Wissenschaft, IT-Industrie und einer großen freien Entwickler-Community. Squeak wurde erstmals im September 1996 als erstes freies Smalltalk veröffentlicht. Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace und Alan Kay schreiben, dass hier geglückt sei, was 1980 fehlschlug.
Alan Kays Konzept einer interaktiven, computer- und netzwerkvermittelten Interaktion, das Dynabook, ist Bestandteil in der Softwareentwicklung für das One Laptop per Child-Projekt.Alan Kay: The $100 Laptop and Powerful Ideas, Windleys Technometria, 23. Februar 2006. Standardmäßig werden auf den Schülerlaptops EToys, auf Squeak basierende Bausteine, installiert.
Mit Croquet wird, mit dem Hintergrund des heutigen Wissensstands, erneut eine Antwort auf die generelle Frage nach der optimalen Computer-Mensch-Schnittstelle gesucht. In den 1980er Jahren war dies die – erstmals mit Smalltalk implementierte – zweidimensionale grafische Benutzeroberfläche, die ihre Verbreitung durch Apple und Microsoft fand. Heute sehen Alan Kay und andere darin eine dreidimensionale, plattformunabhängige, vernetzte Multibenutzerumgebung, in der Objekte fließend zwischen den verschiedenen teilnehmenden Rechnern ausgetauscht werden können. Die dazu notwendigen Eigenschaften besitzt nach Auffassung der Mitglieder des 2001 gestarteten und 2007 veröffentlichten Croquet-Projektes speziell Squeak Smalltalk, welches das ursprünglich zur Implementierung vorgesehene Java daher ersetzte.
2008 startete das Pharo-Projekt, das auf der Basis von Squeak eine freie, stabile Smalltalk-Plattform bietet, um weitere Anwendungsbereiche mit freiem Smalltalk zu erreichen.
Am 15. April 2019 wurde VisualWorks 8.3.2 von Cincom Systems veröffentlicht. Cincom übernahm VisualWorks 1999 von Objectshare.computerwoche.de
Image-Konzept