Wenn Objekte Smalltalk machen
Smalltalk gilt als wesentlich für die Ausprägung der objektorientierten Programmiersprachen. Dabei ist Smalltalk mehr als nur eine Sprache, es ist ebenso Entwicklungsumgebung wie auch ein Softwaresystem mit eigener Philosophie.
![Wenn Objekte Smalltalk machen](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/3/9/1/9/0/3/bauen-075710f8fc5a6ae2.jpeg)
- Hans Nikolaus Beck
Der Satz "Make things as simple as possible, but not simpler" stammt von Albert Einstein. In der Realität der Softwareentwicklung verfehlen Teams dieses Ziel oft genug. Um der Komplexität zu Leibe zu rücken, entstanden viele Programmiersprachen mit raffinierten Konzepten. Entwickler können sich mit Funktionen ausdrücken, Klassen und Objekte ersinnen und Agenten an die Arbeit schicken. Trotz dieser Vielfalt scheinen Funktionen, Objekte und Schritt-für-Schritt Anweisungen (also imperative Programmierung) immer noch so etwas wie wesentliche Säulen der Programmierung zu sein.
Smalltalk ist dabei fast in Vergessenheit geraten. Die Entwicklung der Programmiersprache reicht in die frühen siebziger Jahre zurück. Sich mit ihr zu beschäftigen kommt einer wunderbaren Zeit- und Erkenntnisreise gleich. Man erkennt Intention und Sinn vieler für Entwickler selbstverständlichen Ideen. Dabei zeigt Smalltalk in seinem Aufbau eine klare Synthese von Objektprogrammierung, Funktionen und Typen. Die Sprache ist trotz ihres Alters auf dem Stand der Technik. Mit der interaktiven Umgebung und dynamischen Anlage ist sie mehr denn je schlagkräftig für die Beherrschung von Softwarekomplexität und -qualität. Aktuelle Smalltalk-Systeme bieten alles für den Umgang zeitgemäßer Techniken und laden zu einer Entdeckungsreise ein.
Wie sich Smalltalk anfühlt
Für die praktische Betrachtung sei das Beispiel Pharo herangezogen. Nach dem Start zeigt es ein Fenster, das wieder mehrere Fenster enthalten kann (vgl. Abb. 1)
Aufrufbar über das Kontextmenü existieren beispielsweise das Playground- und das Workspace-Fenster, ein leeres Textfenster, in dem Entwickler Smalltalk-Ausdrücke eingeben und direkt ausführen können, nach bestem REPL-Prinzip (Read-Eval-Print Loop).
Unter anderem steht ein Systembrowser zur Verfügung, der es erlaubt, alle im System verfügbaren Klassen und Methoden einzusehen. Mit dem Playground lassen sich ein paar einfache Experimente durchführen, um Erfahrungen bei der Arbeit mit Smalltalk zu sammeln.
Geschickte Interaktion
Smalltalk zeichnet sich durch seine Interaktivität aus. Ausdrücke lassen sich markieren und ausführen beziehungsweise evaluieren. Geben Entwickler beispielsweise 3+4 ein, markieren den Text und bestätigen mit der Tastenkombination Ctrl + P, so erscheint 7. Soweit so gut. Spannend ist, Objekten "live" Nachrichten zu schicken. Nach der Eingabe folgender Befehle in den Playground:
myObject := OrderedCollection new.
myObject add: 'eins'.
myObject add: 'zwei'.
myObject.
und dem Markieren des gesamten Textes erscheint nach dem Druck auf Ctrl + P folgende Ausgabe:
an OrderedCollection ('eins' 'zwei')
Ctrl + P löst die Evaluierung des markierten Ausdrucks und die Ausgabe des Ergebnisses aus. Die erste Zeile erzeugt ein neues Objekt der Klasse beziehungsweise des Typs OrderedCollection, das in der Variablen myObject gespeichert und zugreifbar ist. Die folgende Zeile schickte dem Objekt die Nachricht add: mit dem Parameter 'eins'. Das Vorgehen heißt in anderen Sprachen Methodenaufruf. Die dritte Zeile fügt den String 'zwei' hinzu. Schließlich sorgt die letzte Zeile für den Zugriff auf das Objekt in der Variablen. Das Ergebnis dieser Zeile ist das Objekt selbst.