Zum Forum
Passwort vergessen?
Noch keinen Account?
lexikon
Hauptseite
Zufälliger Artikel
Diskussion
Diskussion : Smalltalk (Programmiersprache)
Links
Forum
Portale
Reisen
Versicherung
Inhaltsverzeichnis
Hauptmenü
Home
Editorial
Bildung
E-Learning
Fremdsprachen
Magazin
Wissen
Wörterbücher
Enzyklopädien
Expertendienste
Wissenswertes
Praktische Ratgeber
--------------------------
Biologie
Chemie
Computer
Film/ Theater
Geografie
Geschichte
Jura
Kunst
Literatur
Mathematik
Medizin
Musik
Philosophie
Physik/ Astronomie
Politik
Psychologie
Religionen
Sport
Umwelt
Wirtschaft
Reisen
Lexikon
Versicherung
Suchen
Schnellsuche
Suchmaschinen
Metasuchmaschinen
Webkataloge
News
Treffpunkt
Chat
Forum
Suche
Schnellsuche
Sitemap
Kontakt
Impressum
Smalltalk (Programmiersprache)
Stichpunkte
Allgemein
Dan Ingalls
Adele Goldberg und andere entwickelt wurde
die in den 70er Jahren am Xerox PARC Forschungszentrum durch Alan Kay
Smalltalk ist eine dynamisch typisierte objektorientierte Programmiersprache und zugleich eine vollständige Entwicklungsumgebung
Sie wurde allgemein unter dem Namen Smalltalk-80 freigegeben und hat die Entwicklung vieler späterer Programmiersprachen beeinflusst (z.B
Java)
die bei der Entwicklung von Simula gewonnen wurden; das erste Smalltalk-System wurde in Simula geschrieben
Smalltalk basiert stark auf den ersten objektorientierten Konzepten
d.h
Smalltalk ist im Gegensatz zu Sprachen wie C++
Java oder C# eine rein objektorientierte Programmiersprache
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
"Verbergen") 1 Wichtige Eigenschaften von Smalltalk 2 Ausdrücke (Expression) 3 Zuweisungsanweisungen 4 Blöcke 5 Kontrollstrukturen 5.1 IF-Anweisung 5.2 Schleifen 6 Collections 7 Programmbeispiel 8 Weblinks 8.1 Implementierungen [Bearbeiten]
Das Model-View-Controller-Konzept (MVC) spielte in der Smalltalk-80-Entwicklungsumgebung eine wesentliche Rolle. Inhaltsverzeichnis showTocToggle("Anzeigen"
Wichtige Eigenschaften von Smalltalk
auch Zeichenketten
Stack-frames
dass man ihnen Nachrichten (Messages) schickt
Boolesche Werte
der Speicher
Integer
Codeblöcke etc. Objekte werden dadurch aktiviert
ausführbarer Code
Alles in Smalltalk ist ein Objekt
Klassen(-definitionen)
dass die entsprechende Methode (Funktion) des Objekts ausgeführt wird. Der gesamte Quelltext ist i.d.R. offen und kann somit verändert werden
Dies führt dazu
welche Methode tatsächlich aufgerufen wird
Nur sehr wenige Methoden greifen auf echte 'Primitives' der VM (virtuellen Maschine) zurück. Dynamische Typisierung - erst zur Laufzeit wird ermittelt
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
Im Vergleich zu C++ muss dies nicht explizit angegeben werden. Vererbung: Jede Klasse (außer der Wurzelklasse Object) ist von genau einer Oberklasse abgeleitet
der durch eine virtuelle Maschine ausgeführt wird
Ein Objekt 'lebt' solange
wie es von anderen Objekten referenziert wird. Smalltalkprogramme werden in Bytecode übersetzt
Dadurch laufen Smalltalk-Programme ohne jegliche Änderung auf jedem System
für das eine virtuelle Maschine existiert
während sie laufen. Die Quelltexteingabe erfolgt üblicherweise im sog
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
dass die Kontrollstrukturen wie if-then-else
for
while nicht in die Sprache eingebaut sind
Class-Browser. Eine überraschende Eigenschaft im Vergleich zu traditionellen Sprachen ist
Zumindest erscheint dies dem Programmierer so
Zum Beispiel wird eine IF-Anweisung so ausgeführt
indem eine ifTrue:-Botschaft an ein Boole'sches Objekt gesandt wird
wenn das Boole'sche Objekt den Wert True zurückgibt. Es gibt nur drei eingebaute ausführbare Konstrukte: Senden einer Botschaft an ein Objekt Zuweisen eines Objekt an eine Variable Ein Objekt als Rückgabewert einer Methode liefern [Bearbeiten]
die ausgeführt wird
Als Parameter wird ein Block (Anweisungsfolge) übergeben
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
d.h. statt nur aus einem Bezeichner kann sie aus mehreren sog
Die message kann komplex sein
Selektoren und Parametern bestehen. anObject selektor. heisst unäre Nachricht. anObject selektor: einParameter. heisst binäre Nachricht
oder :. D.h. auch nichtalphabetische Zeichen sind Methodennamen. anObject selektor1: einParameterObjekt1 selektor2: einParameterObjekt2. ist eine Schlüsselwortbotschaft
*
Arithmetische Operationen sind so implementiert. anObject operator einParameter. Ein Operator ist +
-
Ausdrücke können kombiniert und mit Klammern geschachtelt werden
Sollen einem Objekt in Folge mehrere Nachrichten geschickt werden
diese Nachrichten mit einem Semikolon (;) zu verketten: anObject message1; message2; message3. [Bearbeiten]
so besteht die Möglichkeit
Zuweisungsanweisungen
Eine Zuweisung ist von der Form aVariable := anExpression. Zuweisungen werden mit einem Punkt abgeschlossen. [Bearbeiten]
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' [Bearbeiten]
Kontrollstrukturen
Die Kontrollstrukturen werden mit booleschen Ausdrücken und Blöcken implementiert
Ein boolescher Ausdruck liefert nach der Auswertung ein Boolesches Objekt
die als Parameter einen ausführbaren Block hat
Diesem wird dann eine Message zugesandt
Der Programmtext sieht aber ähnlich aus
so dass man wie dort einfach gewisse Kontrollstrukturen als gegeben anwenden kann
wie bei anderen Programmiersprachen auch
Einige Beispiele. [Bearbeiten]
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: [ ... ] [Bearbeiten]
Schleifen
der ein boole'sches Objekt zurückgibt ] whileTrue [ ein Block
[ ein Block
der ein boole'sches Objekt zurückgibt ] whileFalse: [ einAndererBlock ] einIntegerStartWert to: einIntegerEndwert do: [ :laufvariable | Anweisungsfolge ] [Bearbeiten]
der ein boole'sches Objekt zurückgibt ] whileTrue: [ einAndererBlock ] [ ein Block
der ein boole'sches Objekt zurückgibt ] whileFalse [ ein Block
Collections
Die Smalltalkumgebungen sind mit einer großen Klassenbibliothek ausgestattet
d.h
Ein wichtiger allgemeiner Objekttyp (Klasse) sind die Collections
Sammlungen von Objekten
Die Klasse Collection steht an der Wurzel einer ganzen Hierarchie von Klassen
die man mit einem Collection-Objekt durchführen kann ist für jedes Element der Collection einen Block von Anweisungen auszuführen
Eine wichtige Arbeit
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 | yWerter do: [:eachY | map addPoint: eachX withY: eachY] [Bearbeiten]
Programmbeispiel
auf dem man Dinge protokollieren kann (ein Ausgabefenster)
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
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. [Bearbeiten]
Weblinks
eine Sammlung von Büchern über Smalltalk zum Download Smalltalk User Groups: European Smalltalk Users' Group (http://www.esug.org/) German Smalltalk Users' Group (http://www.gsug.org/) [Bearbeiten]
eine Portalseite rund um Smalltalk Smalltalk Free Books (http://www.iam.unibe.ch/~ducasse/FreeBooks.html)
"Why Smalltalk?" (http://www.whysmalltalk.com)
Implementierungen
eine freie Multimedia-Smalltalk Implementierung Deutschsprachige Seite für Squeak (http://www.squeak.de) englische Hauptseite für Squeak (http://www.squeak.org) VisualWorks (http://www.cincom.com/smalltalk) IBM VisualAge for Smalltalk (http://www-4.ibm.com/software/ad/smalltalk/) - Smalltalk Umgebung von IBM Smalltalk/X (http://www.exept.de/sites/exept/deutsch/Smalltalk/frame_uebersicht.html) - Smalltalk der Firma eXept Software
die für sehr viele verschiedene Plattformen verfügbar ist Dolphin Smalltalk (http://www.object-arts.com/) - Ein komfortables auf Windows spezialisierter Smalltalk Dialekt Cincom Smalltalk (http://smalltalk.cincom.com/index.ssp) - Smalltalk-Dialekt der Firma Cincom (http://www.cincom.com)
Squeak
Angeboten werden folgende Umgebungen: ObjectStudio (http://smalltalk.cincom.com/prodinformation/index.ssp?content=osfactsheet) - Entwicklungsumgebung für Microsoft Windows mit COM- und ODBC-Schnittstellen VisualWorks (http://smalltalk.cincom.com/prodinformation/index.ssp?content=vwfactsheet) Für Client-Server
PowerMac
das zu nativen EXEs kompiliert Ausführliche Liste von Smalltalk-Implemetierungen (http://www.heeg.de/smalltalk/systeme1.html) Siehe auch: Objective-C en:Smalltalk es:Smalltalk fi:Smalltalk fr:Smalltalk it:Smalltalk ja:Smalltalk nl:Programmeertaal Smalltalk pl:Smalltalk ru:Smalltalk sk:Smalltalk sv:Smalltalk uk:Smalltalk zh:Smalltalk
Server und Web-basierte Entwicklung
auf mehreren Plattformen verfügbar: Microsoft Windows
Linux sowie diversen Unix-Derivaten Smalltalk MT bei Object Connect (http://www.objectconnect.com) oder Smalltalk MT bei Genify (http://www.genify.com) - Ein C++ nahes Smalltalk Derivat (C++ mit Smalltalk Syntax)
[X] Schliessen
Dieser Artikel basiert auf dem Artikel
Smalltalk (Programmiersprache)
aus der freien Enzyklopädie
wikipedia
und steht unter der
GNU Lizenz für freie Dokumentation
. In der wikipedia ist eine
Liste der Autoren
verfügbar.
Silvio Gesell
Sally Potter
Stamm (Biologie)
Stammgruppe
Sankt-Lorenz-Strom
Schlagader
Struktur (Sprachwissenschaft)
Schmelzpunkt
Sed
[ Zurück ]
Inhalt Lexikon:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
Chat
|
Lexikon
|
Reisen
|
Versicherung
|
Forum
|
Kontakt