Sprache Smalltalk
 
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (zum vorhergehenden Autor) (Änderung, Korrektur, Normalansicht)

Verändert: 1c1
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.

Verändert: 3,5c3,8
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

Verändert: 9c12
Besonderheiten der Sprache
== Besonderheiten der Sprache =

Verändert: 15,16c18,19
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).

Verändert: 20c23
Vorteile der Sprache
== Vorteile der Sprache =

Verändert: 24c27
Nachteile der Sprache
== Nachteile der Sprache =

Verändert: 28c31
Vorteile typischer Entwicklungsumgebungen
== Vorteile typischer Entwicklungsumgebungen =

Verändert: 34c37
Nachteile typischer Entwicklungsumgebungen
== Nachteile typischer Entwicklungsumgebungen =

Verändert: 38c41
Vorteile einiger Entwicklungsumgebungen
== Vorteile einiger Entwicklungsumgebungen =

Verändert: 43c46
Typische Anwendungsbereiche
== Typische Anwendungsbereiche =

Verändert: 51,66c54
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 =

Hinzugefügt: 70a59,60
== Sprachverwandtschaft =


Verändert: 80c70
Programmierbeispiele
== Programmierbeispiele =

Verändert: 83c73
Kontrollstrukturen
== Kontrollstrukturen =

Verändert: 97c87
Kapselung
== Kapselung =

Entfernt: 100,105d89

== Weitere Themen =

* /Vorurteile
* /Portabilität
* /Neuigkeiten

Objektorientierte Programmiersprache mit ungewöhnlich einfacher Syntax. Zusammen mit SpracheSimula eine der beiden Ur-OO-Sprachen.

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.
  ^self value
    ifTrue: [
      aBlock value
      [ self value ] whileTrue: [ aBlock value ]]

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". ...


KategorieProgrammierSprache KategorieSmalltalk
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 21. Januar 2008 14:26 (diff))
Suchbegriff: gesucht wird
im Titel
im Text