Hauptseite | Deutsche Enzyklopädie

Smalltalk (Programmiersprache)

{}
{}
{}
Entwickler: {}
Aktuelle Version: {} / {}
Betriebssystem: {}
Kategorie: {}
Lizenz: {}
Website: {}

Smalltalk ist eine dynamisch typisierte objektorientierte Programmiersprache und zugleich 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 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. Smalltalk ist im Gegensatz zu Sprachen wie C++, Java oder C# eine rein objektorientierte Programmiersprache, d.h. Datentypen wie Integer, String o.ä. sind ebenfalls vollwertige Objekte. 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. Das Model-View-Controller-Konzept (MVC) spielte in der Smalltalk-80-Entwicklungsumgebung eine wesentliche Rolle.

Inhaltsverzeichnis
1 Wichtige Eigenschaften von Smalltalk
2 Ausdrücke (Expression)
3 Zuweisungsanweisungen
4 Blöcke
5 Kontrollstrukturen
6 Collections
7 Programmbeispiel
8 Weblinks

Wichtige Eigenschaften von Smalltalk

Es gibt nur drei eingebaute ausführbare Konstrukte:

Ausdrücke (Expression)

Ausdrücke sind von der Form

 anObject message.

D.h. man sendet einem Objekt eine Message. Das Objekt antwortet mit einem Antwortobjekt. Jeder Ausdruck muss mit einem Punkt beendet werden.

Die message kann komplex sein, d.h. statt nur aus einem Bezeichner kann sie aus mehreren sog. Selektoren und Parametern bestehen.

 anObject selektor.

heißt unäre Nachricht.

 anObject selektor: einParameter.

heißt binäre Nachricht. Arithmetische Operationen sind so implementiert.

 anObject operator einParameter.

Ein Operator ist +,-,*, oder :. D.h. auch nichtalphabetische Zeichen sind Methodennamen.

 anObject selektor1: einParameterObjekt1 selektor2: einParameterObjekt2.

ist eine Schlüsselwortbotschaft.

Ausdrücke können kombiniert und mit Klammern geschachtelt werden.

Sollen einem Objekt in Folge mehrere Nachrichten geschickt werden, so besteht die Möglichkeit, diese Nachrichten mit einem Semikolon (;) zu verketten:

 anObject message1;
          message2;
          message3.

Zuweisungsanweisungen

Eine Zuweisung ist von der Form

 aVariable := anExpression.

Zuweisungen werden mit einem Punkt abgeschlossen.

Blöcke

Blöcke sind Sequenzen von Zuweisungsanweisungen und Expressions. Sie werden durch eckige Klammern eingeschlossen. Blöcke können parameterlos sein oder auch Parameter aufweisen.

 blockEins := [ Anweisungen ]
 blockZwei := [ :einParameter | Transcript show: einParameter ]

Diese Blöcke behalten ihren Kontext, so dass diese bei der Ausführung mit den Objekten arbeiten, die bei der Erzeugung von dort aus verfügbar waren. Um einen Block ohne Parameter auszuführen gibt es eine Parameterlose Methode. Bei dem Aufruf von Blöcken mit Parametern müssen diese mit Werten versorgt werden.

 blockEins value
 blockZwei value: 'Test'

Kontrollstrukturen

Die Kontrollstrukturen werden mit booleschen Ausdrücken und Blöcken implementiert. Ein boolescher Ausdruck liefert nach der Auswertung ein Boolesches Objekt. Diesem wird dann eine Message zugesandt, die als Parameter einen ausführbaren Block hat. Der Programmtext sieht aber ähnlich aus, wie bei anderen Programmiersprachen auch, so dass man wie dort einfach gewisse Kontrollstrukturen als gegeben anwenden kann.

Einige Beispiele.

IF-Anweisung

  aBoolean ifTrue: [ ein Block mit Anweisungen ]
oder
  ( einAusdruck ) ifTrue: [ ein Block mit Anweisungen ]
Das aus anderen Programmiersprachen bekannte else sähe folgendermaßen aus:
  aBoolean ifTrue: [ ... ] ifFalse: [ ... ]

Schleifen

  [ ein Block, der ein boole'sches Objekt zurückgibt ] whileTrue
  [ ein Block, der ein boole'sches Objekt zurückgibt ] whileFalse
  [ ein Block, der ein boole'sches Objekt zurückgibt ] whileTrue: [ einAndererBlock ]
  [ ein Block, der ein boole'sches Objekt zurückgibt ] whileFalse: [ einAndererBlock ]

einIntegerStartWert to: einIntegerEndwert do: [ :laufvariable | Anweisungsfolge ]

Collections

Die Smalltalkumgebungen sind mit einer großen Klassenbibliothek ausgestattet. Ein wichtiger allgemeiner Objekttyp (Klasse) sind die Collections, d.h. Sammlungen von Objekten. Die Klasse Collection steht an der Wurzel einer ganzen Hierarchie von Klassen.

Eine wichtige Arbeit, die man mit einem Collection-Objekt durchführen kann ist für jedes Element der Collection einen Block von Anweisungen auszuführen. Andere Programmiersprachen brauchen hierfür spezielle Konstrukte (Iteratoren).

  aCollection do: [ :einElement  | auszuführendeArbeitFürDiesesElementMit: einElement ]

Es hat sich eingebürgert, den Parameter als each zu bezeichnen, so dass direkt klar ist was hierbei gemeint ist. Bei Verwendung von mehreren Collections sollte man dem noch eine genaue Bezeichnung nachsetzten. Iteriert man bspw. über alle x und y Werte aus zwei unterschiedlichen Collections:

  xWerte do: [:eachX | yWerte do: [:eachY | map addPoint: eachX withY: eachY

Programmbeispiel

Das klassische HelloWorld-Beispiel sieht wie folgt aus:

Transcript show: 'Hello World!'.

Transcript ist eine in jeder Smalltalkumgebung vordefinierte globale Variable, die ein Objekt enthält, auf dem man Dinge protokollieren kann (ein Ausgabefenster).

Wir senden diesem Objekt die Message

   show: aString

Ein bereits etwas komplexeres Beispiel:

'Hello World' do: [ :eachChar|
    Transcript show: eachChar ; cr.
].

gibt den Text "Hello World" vertikal aus. 'Hello World' ist ein String (Zeichenkette). Die Klasse dieses Objektes ist eine Unterklasse von Collection. Ein String ist also eine Collection von Zeichen. Indem wir dem Objekt String die Message

  aString do: [ :eachChar | OperationenMitDiesemBuchstaben ]

senden gehen wir alle Buchstaben (Elemente) des Strings einzeln durch.

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').

Alternativ können die Nachrichten auch wie bereits beschrieben verkettet werden:

   d := Dictionary new.
   d at: 'grün' put: 'green';
     at: 'blau' put: 'blue';
     at: 'rot'  put: 'red'.
  
   Transcript show: (d at: 'blau').

Auch das Dictionary ist eine Unterklasse von Collection. Diese Datenstruktur entspricht dem assoziativen Array in anderen Programmiersprachen.

Weblinks

Implementierungen

Siehe auch: Objective-C



Limit search to: Body and Title Deutsche Seiten Path

Websites for Smalltalk
Showing page 1 (1 - 10 of 403 hits) Next »
Much Smalltalk information: full text of many publications and tutorial ... a suite of team productivity tools for VisualWorks Smalltalk and ENVY/Developer, The Bytesmiths Toolkit; information on Smalltalk consulting services. One of the Web's earliest Smalltalk sites: begun 1994. Much Smalltalk information: full text of many publications and ...
Free object-oriented database management system for Dolphin Smalltalk/98, Visual Smalltalk, VisualAge Smalltalk, VisualWorks Smalltalk, Squeak. Provides storage and retrieval of complex Smalltalk objects. Free object-oriented database management system ...
Smalltalk-80 implementation, runs on most Unix types and ... of Free Software Foundation, FSF. [Open source, GPL] Smalltalk-80 implementation, runs on most Unix types and ...
Smalltalk/JVM, Smalltalk compiler for the Java virtual machine, lets Smalltalk run on any JVM, makes 100% Java class ... OS, easy, scalable, distributed application development with VisualAge Smalltalk. Smalltalk/JVM, Smalltalk compiler for the Java virtual ...
sharp-Smalltalk compiler implements Smalltalk to run natively on .NET framework, allows using ... programs; class library is mostly compatible with ANSI Smalltalk. [Open Software License] sharp-Smalltalk compiler implements Smalltalk to run natively on .NET framework, allows ...
By Dan Ingalls. Centerpiece article from the historic Smalltalk special issue, which sets out the main philosophy ... By Dan Ingalls. Centerpiece article from the historic Smalltalk special issue, which sets out the main philosophy ...
... defines full reference implementation for original 16-bit Smalltalk-80 Virtual Machine needed to run image. Code is all Smalltalk, written for clarity, not speed; optimizations left to ... defines full reference implementation for original 16-bit Smalltalk-80 Virtual Machine needed to run image. Code is all Smalltalk, written for clarity, not speed; optimizations left to ...
Compiled Smalltalk. Design and deploy fastest Smalltalk applications available, head-to-head with C/C ... callbacks, COM components directly from development environment. Compiled Smalltalk. Design and deploy fastest Smalltalk applications available, head-to-head with C/C ...
Brief list: archives (FTP, base page, comp.lang.smalltalk), FAQ. Brief list: archives (FTP, base page, comp.lang.smalltalk), FAQ.
... базе языка Smalltalk для Windows 3.x, с� ... базе языка Smalltalk для Windows 3.x, с� ...

Next »

Help build the largest human-edited directory on the web.
Submit a Site - Open Directory Project - Become an Editor
Free thumbnail preview by Thumbshots.org

Search for products at amazon.com:
Search:
Keywords:
amazon.com books on 'Smalltalk (Programmiersprache)':
Search at Google.com:
Google
WebCalSky.com Enzyklopädie

Suchresultate aus unserem günstigen CalSky-Shop