Smalltalk (Programmiersprache)
Smalltalk ist eine dynamisch typisierte objektorientierte Programmiersprache und zugleich eine vollständige Entwicklungsumgebung, die in den 70er 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 beeinflusst (z.B. Java). Smalltalk basiert stark auf den ersten objektorientierten Konzepten, die bei der Entwicklung von Simula gewonnen wurden; das erste Smalltalk-System wurde in Simula geschrieben.
Die Smalltalk-Entwicklungsumgebung enthielt viele Ideen, die später mit der Macintosh- und dann 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.
Wichtige Eigenschaften von Smalltalk
- Alles in Smalltalk ist ein Objekt, auch Zeichenketten, Integer, Boolesche Werte, Klassen(-definitionen), ausführbarer Code, Stack-frames, der Speicher, Codeblöcke etc.
- Objekte werden dadurch aktiviert, dass man ihnen Nachrichten (Messages) schickt. Dies führt dazu, dass die entsprechende Methode (Funktion) des Objekts ausgeführt wird.
- Der gesamte Quelltext ist i.d.R. offen und kann somit verändert werden. Nur sehr wenige Methoden greifen auf echte 'Primitives' der VM (virtuellen Maschine) zurück.
- Dynamische Typisierung - erst zur Laufzeit eines Programms wird ermittelt, welche Funktion - in Smalltalk 'Methode' genannt - tatsächlich aufgerufen wird. In manchen anderen objektorientierten Programmiersprachen (z.B. C++) muss man dieses Verhalten explizit vorher angeben.
- Vererbung: Jede Klasse (außer der Wurzelklasse
Object
) ist von genau einer Oberklasse abgeleitet, deren Verhalten sie erbt und beliebig erweitern kann (keine Mehrfachvererbung). - Automatische Speicherbereinigung (engl. garbage collection = Mülleinsammeln), die nicht durch den Programmierer beeinflusst werden muss. Ein Objekt 'lebt' solange, wie es von anderen Objekten referenziert wird.
- Smalltalkprogramme werden in Bytecode übersetzt, der durch eine virtuelle Maschine ausgeführt wird. Dadurch laufen Smalltalk-Programme ohne jegliche Änderung auf jedem System, für das eine virtuelle Maschine existiert. Ursprünglich wurde der Bytecode interpretiert; kommerzielle Umgebungen arbeiten inzwischen fast ausschließlich mit dynamischer Übersetzung.
- Üblicherweise hat man eine Programmierumgebung (selbst in Smalltalk geschrieben), in der man Quelltext am "lebenden" Objekt ändern und dann auch direkt in der geänderten Form (weiter)ausführen kann. "Smalltalkprogramme" kann man ändern, während sie laufen.
- Die Quelltexteingabe erfolgt üblicherweise im sog. Class-Browser.
Programmbeispiel (Bibliotheksabhängig)
'Hello World' do: [ :eachChar| eachChar out. ].
gibt den Text "Hello World" vertikal aus.
Das Dictionary (in Perl Hash, in Java HashMap) ist eine in Smalltalk häufig verwendete Datenstruktur:
d := Dictionary new. d at: 'grün' put: 'green'. d at: 'blau' put: 'blue'. d at: 'rot' put: 'red'. Transcript show: (d at: 'blau').
Diese Datenstruktur entspricht dem assoziativen Array.
Weblinks
- "Why Smalltalk?", eine Portalseite rund um Smalltalk
- Smalltalk Free Books, eine Sammlung von Büchern über Smalltalk zum Download
- Smalltalk User Groups:
Implementierungen
- Squeak, eine freie Multimedia-Smalltalk Implementierung
- VisualWorks
- IBM VisualAge for Smalltalk - Smalltalk Umgebung von IBM
- Smalltalk/X - Smalltalk der Firma eXept Software, die für sehr viele verschiedene Plattformen verfügbar ist
- Dolphin Smalltalk - Ein komfortables auf Windows spezialisierter Smalltalk Dialekt
- Smalltalk MT bei Object Connect oder Smalltalk MT bei Genify - Ein C++ nahes Smalltalk Derivat (C++ mit Smalltalk Syntax), das zu nativen EXEs kompiliert
Siehe auch: Objective-C