Smalltalk (Programmiersprache)


Smalltalk (Programmiersprache)
Smalltalk
Bild:Smalltalk-powered.gif
Logo von Smalltalk
Basisdaten
Entwickler: diverse
Aktuelle Version: Smalltalk 80  (1980)
Einflüsse: Lisp, Simula
Beeinflusste: Objective-C, Java, Ruby
Betriebssystem: Windows, Linux, Mac OS X, uvm.
Lizenz: implementierungsspezifisch
http://smalltalk.org

Smalltalk ist eine dynamische, im Original untypisierte 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, wie z. B. Objective-C, Java und Ruby beeinflusst. Smalltalk wurde von Lisp und Simula mit seinem Klassen-Konzept beeinflusst und wurde nach Simula-67 die erste populäre objektorientierte Programmiersprache.

Smalltalk ist im Gegensatz zu Sprachen wie C++ oder Java eine rein objektorientierte Programmiersprache, d. h. Daten wie Integer, Character o. ä., die in anderen objektorientierten Sprachen z. T. als primitive Datentypen repräsentiert werden, werden in Smalltalk ebenfalls über Objekte und zugehörige Klassen realisiert. Die Smalltalk-Entwicklungsumgebung enthielt viele Ideen, die später mit der Macintosh- und Atari-TOS/GEM- und dann später auch 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

Wichtige Eigenschaften von Smalltalk

  • Alles in Smalltalk ist ein Objekt, auch Zeichenketten, Integer, Boolesche Werte, Klassen(-definitionen), ausführbarer Code, Stackframes, der Speicher, Codeblöcke etc.
  • Objekte werden dadurch aktiviert, dass man ihnen Nachrichten (Messages) schickt. Dies führt dazu, dass die entsprechende Methode (Funktion) des Objekts ausgeführt wird.
  • Der gesamte Quelltext ist i. d. R. offen und kann somit verändert werden. Nur sehr wenige Methoden greifen auf echte 'Primitives' der VM (virtuellen Maschine) zurück.
  • Dynamische Bindung – erst zur Laufzeit wird ermittelt, welche Methode tatsächlich aufgerufen wird. Eine frühe („statische“) Bindung, wie dies bei der statischen Typisierung vorgesehen ist, wurde in der Smalltalk Programmiersprache bewusst ausgespart.
  • Vererbung: Jede Klasse (außer der Wurzelklasse Object) ist von genau einer Oberklasse abgeleitet, deren Verhalten sie erbt und beliebig erweitern kann (keine Mehrfachvererbung).
  • Automatische Speicherbereinigung (englisch garbage collection), die nicht durch den Programmierer beeinflusst werden muss. Ein Objekt 'lebt' solange, wie es von anderen Objekten referenziert wird.
  • Smalltalkprogramme werden in Bytecode übersetzt, der durch eine virtuelle Maschine ausgeführt wird. Dadurch laufen Smalltalk-Programme ohne jegliche Änderung auf jedem System, für das eine virtuelle Maschine existiert. 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, während sie laufen.
  • Die Quelltexteingabe erfolgt üblicherweise im Klassenbrowser. Moderne RefactoringBrowser setzen sich allmählich gegen einfache Klassenbrowser durch, weil sie automatisierte Refactoring-Funktionen unterstützen und damit die Produktivität nochmals erheblich steigern, ähnlich wie sich das in der Java-Welt mit Eclipse etabliert hat.
  • Eine überraschende Eigenschaft im Vergleich zu traditionellen Sprachen ist, dass die Kontrollstrukturen wie if-then-else, for, while nicht in die Sprache eingebaut sind. Zumindest erscheint dies dem Programmierer so. Zum Beispiel wird eine IF-Anweisung so ausgeführt, indem eine ifTrue:-Botschaft an ein Boolesches Objekt gesandt wird. Als Parameter wird ein Block (Anweisungsfolge) übergeben. Lediglich in der Klasse True wird dieser Block ausgeführt. In der Klasse False ist diese Methode zwar auch implementiert, aber sie führt den Block nicht aus.

Es gibt nur drei eingebaute ausführbare Konstrukte:

  • Senden einer Botschaft an ein Objekt
  • Zuweisen eines Objekts an eine Variable
  • Ein Objekt als Rückgabewert einer Methode liefern

Geschichte und Bedeutung von Smalltalk

1970–1980

In diese Zeit fällt die Entwicklung der ersten Versionen von Smalltalk-71, Smalltalk-72, Smalltalk-74 und Smalltalk-76[1] bis hin zum heute verbreiteten Standard Smalltalk-80 am Forschungszentrum Xerox PARC.

1980–1990

Die Programmierung mit Klassenbrowser und die Verwendung einer virtuellen Maschine zur Ausführung stellte von Anfang an gewisse Mindestanforderungen an die Hardware. Dies geschah zu einer Zeit in der die erschwinglichen Computer nicht über graphische Benutzeroberflächen verfügten und die Rechenleistung nicht für eine solche ausreichte. Smalltalk war seiner Zeit voraus und konnte zu Beginn nur auf Workstations effektiv eingesetzt werden. Im Ergebnis gab es daher nur wenige Smalltalk-Entwickler – dafür umso mehr C-Programmierer. Mit dem Aufkommen der graphischen Benutzeroberflächen im Mikrocomputerbereich entstand das objektorientierte C++ und da die meisten Entwickler C bereits kannten, konnte sich C++ sehr schnell verbreiten und Smalltalk blieb eine Randerscheinung. Zudem geschah dies in einer Zeit, in der Performance sehr wichtig war und Smalltalk auf hohe Ausführungsgeschwindigkeiten keinen besonderen Wert legte (Alan Kay: „It's still fast enough for our neurons“).

1990–2000

Anfang und Mitte der Neunziger Jahre wurde Smalltalk in vielen Bereichen populär, in denen es auf die Beherrschung von Komplexität ankam (z.B. bei Expertensystemen). Verschiedene große Anbieter wie IBM begannen, Smalltalk stark zu unterstützen und in Großkundenprojekten einzusetzen. Es gab eine sprunghafte Zunahme verschiedener Implementierungen von Smalltalk. Mit dem Internet-Boom und dem davon profitierendem Java, büßte Smalltalk Ende der 90er Jahre seine gerade aufkommende Popularität jedoch wieder ein.

In Java wurden einige Konzepte von Smalltalk (wie z.B. die Virtuelle Maschine und der Garbage Collector) übernommen. Die Syntax war jedoch wieder an C angelehnt. Auch kamen erneut traditionelle Mittel zum Einsatz, wie die Vermischung der Objektorientierung mit einfachen Datentypen und imperative Strukturen, geringe Selbstbezüglichkeit und der Edit-Compile-Test-Debug-Zyklus mit Quellcode als reiner Textdatei etc. Java dafür bot Normierung, Aufstiegspfade für C-Programmierer und nicht zuletzt Allianzmöglichkeiten gegen die MS-Windows-Dominanz. Zudem wurde es von Sun kostenlos zur Verfügung gestellt.

Das Ende des kurzen Smalltalk-Booms wurde durch den Niedergang der Firma ParcPlace unterstrichen, die als Ausgründung des Xerox PARC mit VisualWorks (heute bei Cincom) den direkten Nachfolger der Originalimplementierung anbot, der die damals mächtigste Smalltalk-Entwicklungsumgebung darstellte: Mit VisualWorks geschaffene Anwendungen liefen bereits 1997 bitkompatibel (durch VM) auf Windows, Mac OS, Solaris (und anderen UNIX-Systemen) und konnte deren verschiedene Benutzeroberflächen mit „Camelon View“ unabhängig vom Laufzeitsystem simulieren.

Die aufkommende Dominanz von Microsoft Windows entwertete jedoch diese und andere interessante Eigenschaften, da sich die Frage nach der Plattformunabhängigkeit dadurch für immer weniger Anwender stellte. Die Wettbewerber von Microsoft suchten stattdessen nach Mitteln, die MS Windows Dominanz zurückzudrängen. Nachdem sich bedeutende Firmen wie IBM und Sun für Java entschieden und dafür Marketing betrieben, gewannen Java und C++ klar die Oberhand bezüglich kommerzieller Unterstützung, was zur heutigen Situation führte.

Obwohl Smalltalk sehr leicht zu erlernen (nur wenige Sprachkonstrukte) und zu debuggen ist (selten ist eine zeitaufwändige explizite Neukompilierung und -erstellung sowie ein Neustart des Programms erforderlich) und das Performanceproblem – zum Teil durch effektivere Implementierungen, zum Teil durch leistungsfähigere Hardware – inzwischen gelöst ist, wird Smalltalk heute noch immer in wenigen Bereichen eingesetzt. Einer der Gründe hierfür kann in der mangelnden Einheitlichkeit der Programmbibliotheken verschiedener Implementationen gesehen werden, von denen bisher keine eine „natürliche Dominanz“ (wie die von Sun für Java) entwickelt hat.

Nachdem ParcPlace als Player ausgeschieden war, IBM sein Smalltalk-Engagement zugunsten von Java eingestellt hatte und verschiedenen zunächst erfolgsversprechende Smalltalk-Implementationen eingestellt wurden (z.B. Dolphin Smalltalk), gab es nur noch wenige Überzeugte Anhänger, die an einen großen Durchbruch glaubten. Smalltalk blieb weiter ein Insiderthema.

2000–2007

In den letzten Jahren gibt es mit der Etablierung von freien Implementierungen eine Art „Renaissance“ von Smalltalk. Insbesondere das von ursprünglichen Smalltalk-Erfindern entwickelte plattformübergreifende Squeak und das darauf aufbauende Croquet erhalten wachsende Unterstützung aus Wissenschaft, IT-Industrie und einer großen freien Entwicklergemeinschaft. Squeak wurde erstmals im September 1996 als erstes freies Smalltalk veröffentlicht. Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace und Alan Kay schreiben, dass hier, was 1980 fehlschlug, geglückt sei.[2]

Alan Kays Konzept einer interaktiven, computer- und netzwerkvermittelten Interaktion, das Dynabook, ist Bestandteil in der Softwareentwicklung für das One Laptop per Child-Projekt.[3] Standardmäßig werden auf den Schülerlaptops EToys, auf Squeak basierende Bausteine, installiert.

Mit Croquet wird, mit dem Hintergrund des heutigen Wissensstands, erneut eine Antwort auf die generelle Frage nach der optimalen Computer-Mensch-Schnittstelle gesucht. In den 80er Jahren war dies die – erstmals mit Smalltalk implementierte – zweidimensionale graphische Benutzeroberfläche, die ihre Verbreitung durch Apple und Microsoft fand. Heute sehen Alan Kay und andere darin eine dreidimensionale, plattformunabhängige, vernetzte Multibenutzerumgebung, in der Objekte fließend zwischen den verschiedenen teilnehmenden Rechnern ausgetauscht werden können. Die dazu notwendigen Eigenschaften besitzt nach Auffassung der Mitglieder des 2001 gestarteten und 2007 veröffentlichten Croquet-Projektes speziell Squeak Smalltalk, welches das ursprünglich zur Implementierung vorgesehene Java daher ersetzte. Damit ist die Zukunft von Smalltalk – 30 Jahre nach seiner Entstehung – wieder offen.

Typisierte Variante von Smalltalk

Smalltalk verfügt nicht über ein statisches Typsystem. Insbesondere findet man dort keine Typdefinitionen und Typannotationen an Variablen oder für die Ein-/Ausgabeparameter von Methoden. Demgemäß finden auch keinerlei Typprüfungen bei Wertzuweisungen statt, wie dies für typisierte Sprachen üblich ist, und zwar weder dynamisch (zur Laufzeit) noch statisch (zur Übersetzungszeit). Die Klassenhierarchie von Smalltalk darf nicht mit einer Subtypenhierarchie verwechselt werden - auch wenn moderne objektorientierte Programmiersprachen oftmals Typ- und Klassendefinitionen als einen einzigen Vorgang betrachten, handelt es sich hier um unterschiedliche Konzepte und auch unterschiedliche Komponenten des Übersetzers und des Laufzeitsystems einer Sprache. Smalltalk verfügt hinsichtlich der Bildung und Prüfung von Typen keine solche Komponente.

Es gibt allerdings Varianten von Smalltalk, die über ein statisches Typsystem verfügen, so etwa Strongtalk. Strongtalk ermöglicht die klassenunabhängige Definition von Typen in einer eigenen Typhierarchie und in der Folge auch die Annotation solcher Typen an Variablen und Methoden.

Ausdrücke (Expressions)

Ausdrücke haben folgende Form:

   objekt nachricht

Das heißt man sendet einem Objekt eine Nachricht. Das Objekt antwortet mit einem Antwortobjekt. Ausdrücke müssen mit einem Punkt getrennt werden.

Es gibt drei Arten von Nachrichten, unäre Nachrichten, binäre Nachrichten und Schlüsselwort-Nachrichten.

Unäre Nachrichten haben keinen Parameter und bestehen aus einem Bezeichner:

  objekt nachricht

Eine binäre Nachricht hat genau einen Parameter und besteht aus einem oder mehreren Sonderzeichen. Vier Beispiele:

  1 + 3
  100 @ 200
  vorname , nachname
  10 // 3

Die meisten arithmetischen Operationen sind in Smalltalk als binäre Nachrichten implementiert.

Eine Schlüsselwort-Nachricht hat eine oder mehrere Parameter, wobei vor den Parametern Doppelpunkte stehen.

  objekt nachricht: parameter

Diese Schlüsselwort-Nachricht heißt nachricht: und hat einen Parameter parameter.

  objekt nachricht: parameter1 nachricht: parameter2

Diese Schlüsselwort-Nachricht heißt nachricht:nachricht: und hat zwei Parameter. D. h. Parameter können bei Schlüsselwort-Nachrichten mitten in die Nachricht eingefügt werden. Diese Besonderheit macht es möglich, in Smalltalk besonders leicht lesbare Programme zu schreiben:

  collection copyFrom: 1 to: 10

Das klingt wie ein Satz. In Java würde man das folgendermaßen schreiben:

  collection.copyFromTo(1, 10);

Ausdrücke können kombiniert und mit Klammern geschachtelt werden. Ohne Klammern werden Ausdrücke in folgender Reihenfolge ausgeführt: Unäre Nachrichten vor binären Nachrichten vor Schlüsselwort-Nachrichten.

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

  objekt
    nachricht1;
    nachricht2;
    nachricht3

Zuweisungen

Eine Zuweisung hat folgende Form:

  variable := ausdruck

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

   10 timesRepeat: [ Transcript show: '.' ].
   1 to: 10 do: [ :i | Transcript show: i printString ].
   [ "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: [ "Block mit Schleifenrumpf" ].
   [ "ein Block, der ein boole'sches Objekt zurückgibt" ] whileFalse: [ "Block mit Schleifenrumpf" ]

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 | einElement auszuführendeArbeitFürDiesesElement ]

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 (= Sammlung) 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.

Schreibweise

Smalltalk wird mit kleinem T geschrieben. Häufig findet sich die falsche Schreibweise SmallTalk, selbst auf den offiziellen IBM-Webseiten (allerdings nicht durchgehend). Der Fehler rührt möglicherweise daher, dass zusammengesetzte Namen in Smalltalk selbst durch Binnenmajuskel strukturiert werden.

Literatur

  • Adele Goldberg: Smalltalk-80, The Interactive Programming Environment. Addison-Wesley, 1983, ISBN 0201113724
  • Glen Krasner: Smalltalk-80, Bits of History, Words of Advice. Addison-Wesley, 1. August 1983, ISBN 0-201-11669-3
  • Johannes Brauer: Grundkurs Smalltalk · Objektorientierung von Anfang an. Eine Einführung in die Programmierung Vieweg-Verlag, 3. Auflage 2009, ISBN 3834807125
  • Sherman R. Alpert, Kyle Brown, Bobby Woolf: The Design Patterns Smalltalk Companion. Addison-Wesley Professional, 10. Februar 1998, ISBN 0201184621
  • Mark J. Guzdial: Squeak: Object-Oriented Design with Multimedia Applications. Prentice Hall, 20. Dezember 2000, ISBN 0130280283
  • Mark J. Guzdial, Kimberly M. Rose: Squeak: Open Personal Computing and Multimedia. Prentice Hall, 2. August 2001, ISBN 0130280917
  • Simon Lewis: The Art and Science of Smalltalk. Prentice Hall, 1. März 1995, ISBN 0133713458
  • Günther Vinek: Objektorientierte Softwareentwicklung mit Smalltalk. Springer Verlag, 24. April 1997, ISBN 978-3-540-62558-2
  • Smalltalk-Bücher als PDF-Dokumente zum Herunterladen

Einzelnachweise

  1. Vgl. Kay, Alan C. (1993), »The early history of Smalltalk«, in: »ACM SIGPLAN notices« (Tagungsjournal), Bd. 28, No. 3, März, Association for Computing Machinery, New York, S. 69 ff. – PDF: 2004-0924-2355 (1999-0802-2121).
  2. Back to the Future: The Story of Squeak
  3. Windleys Technometria, 23. Februar 2006: Alan Kay: The $100 Laptop and Powerful Ideas

Weblinks

Implementierungen

Siehe auch


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Programmiersprache Smalltalk — Smalltalk Logo von Smalltalk Basisdaten Entwickler: diverse Aktuelle Version: Smalltalk 80  (1980) …   Deutsch Wikipedia

  • Smalltalk-80 — Smalltalk Logo von Smalltalk Basisdaten Entwickler: diverse Aktuelle Version: Smalltalk 80  (1980) …   Deutsch Wikipedia

  • Smalltalk-80 (Programmiersprache) — Smalltalk Basisdaten Erscheinungsjahr: 1972 (Entwicklung ab 1969) Designer: Alan Kay, Dan Ingalls, Adele Goldberg E …   Deutsch Wikipedia

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • Programmiersprache Java — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Perl — Perl Paradigmen: prozedural, modular, teilweise objektorientiert Erscheinungsjahr: 1987 Entwickler: Larry Wall, Perl Porter Aktuelle  …   Deutsch Wikipedia

  • Smalltalk — bezeichnet: eine beiläufige Konversation ohne Tiefgang, siehe Alltagsgespräch eine Programmiersprache, siehe Smalltalk 80 (Programmiersprache) Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben …   Deutsch Wikipedia

  • Programmiersprache — Pro|gram|mier|spra|che 〈f. 19〉 formalisierbare Sprache mit eindeutigen Zeichen zum Programmieren von EDV Anlagen * * * Pro|gram|mier|spra|che, die (EDV): System von Wörtern u. Symbolen, die zur Formulierung von ↑ Programmen (4) für die… …   Universal-Lexikon

  • Smalltalk — Small|talk 〈[smɔ:ltɔ:k]〉 auch: Small Talk 〈m. od. n.; ( ) s; unz.〉 leichte, oberflächliche Unterhaltung [engl., „kleines Gespräch“] * * * Small Talk, der, auch: das; s, s, Small|talk, der, auch: das; s, s [engl. small talk, zu: talk = Gespräch,… …   Universal-Lexikon

  • Smalltalk — von der Firma Rank Xerox im Palo Alto Research Center (USA) Ende der 80er Jahre entwickelte ⇡ Programmiersprache. S. ist die erste objektorientierte Sprache, in der das Klassenkonzept der Programmiersprache Simula in weiterentwickelter Form… …   Lexikon der Economics