Objektorientierte Programmiersprache mit ungewöhnlich einfacher Syntax. Zusammen mit SpracheSimula eine der beiden Ur-OO-Sprachen. Heute die Nummer 3 nach Java und C++. (Siehe auch SmalltalkResourcen) |
Objektorientierte Programmiersprache mit ungewöhnlich einfacher Syntax. Zusammen mit SpracheSimula eine der beiden Ur-OO-Sprachen. |
Smalltalk wurde ursprünglich im Rahmen eines Projektes am XeroxParc entwickelt, bei dem es darum ging, Lösungen für eine möglichst menschenfreundliche Kommunikation zwischen Mensch und Computer zu finden. Auch der Typ grafischer Benutzeroberflächen wie sie heute allgemein üblich sind, war ein Ergebnis dieses Projekts. Smalltalk war als Sprache für End-Anwender gedacht. Siehe: [[Link]Design Principles Behind Smalltalk[Url= http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html]], The Xerox "Star": A Retrospective |
* SmalltalkResourcen * /Geschichte * /Vorurteile * /Portabilität * SmalltalkDialekte * /Neuigkeiten |
Besonderheiten der Sprache |
== Besonderheiten der Sprache = |
Besonderheiten typischer Entwicklungsumgebungen * Smalltalk Code befindet sich normalerweise nicht in Textdateien, sondern in einer Art Datenbank, die in die Entwicklungsumgebung integriert ist, und deren Daten in Form einer großen Binärdatei abgespeichert werden. Diese Datei wird Image genannt, weil sie ein Abbild des Zustandes der gesamten Entwicklungsumgebung ist. Das beinhaltet die Standardbibliothek, Anwendungen und den Zustand der Benutzeroberfläche. Es ist traditionell nicht unüblich zur Entwicklung einer Anwendung dem System nicht nur Klassen hinzuzufügen, sondern auch Methoden zu bestehenden Klassen, was den Einsatz von über übliche VersionsKontrolle a la CVS hinausgehende Code-Verwaltung unabdingbar macht. (Letzteres ist dann natürlich auch in die Entwicklungsumgebung integriert.) In einigen neueren Entwicklungsumgebungen wurde Smalltalk um Namespaces erweitert. (Allgemeines zum Thema Entwicklungsumgebungen siehe IDE). |
== Besonderheiten typischer Entwicklungsumgebungen = * Smalltalk Code befindet sich normalerweise nicht in Textdateien, sondern in einer Art Datenbank, die in die Entwicklungsumgebung integriert ist, und deren Daten in Form einer großen Binärdatei abgespeichert werden. Diese Datei wird Image genannt, weil sie ein Abbild des Zustandes der gesamten Entwicklungsumgebung ist. Das beinhaltet die Standardbibliothek, Anwendungen und den Zustand der Benutzeroberfläche. Es ist traditionell nicht unüblich zur Entwicklung einer Anwendung dem System nicht nur Klassen hinzuzufügen, sondern auch Methoden zu bestehenden Klassen, was den Einsatz von über übliche VersionsKontrolle a la CVS hinausgehende Code-Verwaltung unabdingbar macht. (Letzteres ist dann natürlich auch in die Entwicklungsumgebung integriert.) In einigen neueren Entwicklungsumgebungen wurde Smalltalk um Namespaces erweitert. (Allgemeines zum Thema Entwicklungsumgebungen siehe IDE, siehe auch MartinFowlers Artikel über Repository Based Code). |
Vorteile der Sprache |
== Vorteile der Sprache = |
Nachteile der Sprache |
== Nachteile der Sprache = |
Vorteile typischer Entwicklungsumgebungen |
== Vorteile typischer Entwicklungsumgebungen = |
Nachteile typischer Entwicklungsumgebungen |
== Nachteile typischer Entwicklungsumgebungen = |
Vorteile einiger Entwicklungsumgebungen |
== Vorteile einiger Entwicklungsumgebungen = |
Typische Anwendungsbereiche |
== Typische Anwendungsbereiche = |
Freie Implementierungen * SqueakSmalltalk ( http://www.squeak.org/) * GnuSmalltalk * #Smalltalk (SharpSmalltalk, .NET) Kommerzielle Implementationen * VisualAge Smalltalk (IBM, http://www.software.ibm.com/ad/smalltalk) (nicht-kommerzielle Version umsonst) * VisualWorksSmalltalk (nicht-kommerzielle Version ist umsonst) * ObjectStudioSmalltalk * PocketSmalltalk * DolphinSmalltalk * SmalltalkX (lizenzfrei) * S# (Smallscript, .NET) * ... Community |
== Community = |
== Sprachverwandtschaft = |
Programmierbeispiele |
== Programmierbeispiele = |
Kontrollstrukturen |
== Kontrollstrukturen = |
Kapselung |
== Kapselung = |
== Weitere Themen = * /Vorurteile * /Portabilität * /Neuigkeiten |
Typische Smalltalk-Entwicklungsumgebungen unterscheiden sich erheblich von allen anderen (sofern diese nicht von Smalltalk beeinflusst sind, wie z.B. IBM Visual Age for Java [1] ).
Besonderheiten der Sprache |
Besonderheiten typischer Entwicklungsumgebungen |
Vorteile der Sprache |
Nachteile der Sprache |
Vorteile typischer Entwicklungsumgebungen |
Nachteile typischer Entwicklungsumgebungen |
Vorteile einiger Entwicklungsumgebungen |
Typische Anwendungsbereiche |
Community |
Sprachverwandtschaft |
Andere Sprachen oder Entwicklungsumgebungen, die besonders stark von Smalltalk beeinflusst sind:
Programmierbeispiele |
Kontrollstrukturen |
Eine weitere erwähnenswerte Besonderheit ist die Abwesenheit von in die Sprache eingebauten Kontrollstrukturen. Kontrollstrukturen werden über DynamicClosures realisiert. Diese heißen in Smalltalk Blöcke und werden mit eckigen Klammern erzeugt. Kontrollstrukturen sind als Methoden von Boolean oder BlockClosure implementiert und es lassen sich beliebige Konstrukte nachrüsten. Die Implementation von whileTrue: bei BlockClosure könnte z. B. so aussehen:
whileTrue: aBlock Werte aBlock solange aus, wie mein Wert wahr ergibt.
|
Wer das begriffen hat, wird keine Probleme haben, die Methoden Boolean>>ifTrue:ifFalse oder Collection>>do: zu implementieren. Die mitgelieferte Klassenbibliothek hält eine Reihe von in dieser Form implementierten Kontrollstrukturen bereit. Diese werden i. A. durch die VirtuelleMaschine optimiert behandelt und sind daher Eigenkreationen vorzuziehen.
Kapselung |
Alle Instanzvariablen sind protected. Es ist durchaus üblich, trotzdem Zugriffsmethoden bereitzustellen, diese aber in ein Protokoll private zu verschieben. Das ist letztenendes eine Frage der persönlichen Vorlieben. Will man eine Methode als private kennzeichnen, so ist man generell auf solche Konventionen angewiesen. Die SpracheSmalltalk kennt keine privaten Methoden.
Diskussion |
"Heute die Nummer 3 nach Java und C+" -- Und Delphi? Wäre das nicht Nr. 3?
"Dazu sind - im Gegensatz zu Lisp - keine Makros nötig":
Was soll so schlecht an Makros sein - bitte nicht verwechseln: C-Preprocessor-Makros und Lisp-Makros[1] VisualAge for Java ist ein Smalltalk mit Java-Aufsatz und verstecktem Smalltalk !
Warum steht PocketSmalltalk unter kommerziell? Auf der Homepage dazu steht "free open source". ...