Smalltalk (Programmiersprache)

objektorientierte Programmiersprache
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. September 2003 um 09:45 Uhr durch 212.117.212.194 (Diskussion) (interwiki fr:). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Smalltalk ist eine objektorientierte Programmiersprache, die in den 70er-Jahren am Xerox PARC Forschungszentrum durch Adele Goldberg, Dan Ingalls, Alan Kay 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).

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 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, dazu die entsprechende Methode (Funktion) des Objekts ausgeführt wird.
  • Der gesamte Quelltext ist i.d.R. offen und kann 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 anderen Objektorientierten Programmiersprachen (Bsp. C++) muss man dieses Verhalten explizit vorher angeben.
  • Vererbung: jede Klasse 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 interpretiert wird.
  • Ü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 assoziativem Array.