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

Veränderung (letzte Änderung) (Autor, Normalansicht)

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

Verändert: 18,19c18,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: 23c23
Vorteile der Sprache
== Vorteile der Sprache =

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

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

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

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

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

Verändert: 54c54
Community
== Community =

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


Verändert: 68c70
Programmierbeispiele
== Programmierbeispiele =

Verändert: 71c73
Kontrollstrukturen
== Kontrollstrukturen =

Verändert: 85c87
Kapselung
== Kapselung =

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