Io (Programmiersprache)

Io (Programmiersprache)

Io ist eine kompakte Prototypen-basierte, objektorientierte Programmiersprache. Der Erfinder und Hauptentwickler, der Amerikaner Steve Dekorte, legt bei der Entwicklung großen Wert auf Minimalismus, sowohl was die Codegröße als auch die Komplexität der Syntax und den Speicherverbrauch angeht. Das spiegelt sich auch im Motto der Sprache Io – less is more wider. In Io gilt stärker als in anderen Programmiersprachen: „Alles ist ein Objekt“. Die Sprache wurde hauptsächlich von Smalltalk (alle Werte sind Objekte), Self, NewtonScript, Act1 (Prototypen-basierte Vererbung, Actors und Zugriff), Lisp (Code zur Laufzeit betracht- und modifizierbar) und Lua (kompakt, einbettbar) inspiriert.

Charakteristische Eigenschaften

Interessant an Io ist vor allem der prototypenbasierte Ansatz der objektorientierten Programmierung, bei dem keine Klassen zum Einsatz kommen. Stattdessen werden Objekten sogenannte Prototypen zugewiesen. Nicht existente Methoden oder Felder werden dann automatisch im Prototypen gesucht. Damit definiert sich ein Objekt durch die Eigenschaften seines Prototyps und seine spezifischen Unterschiede in Zustand und Verhalten dem Prototyp gegenüber. Diese Art der objektorientierten Programmierung ähnelt der von JavaScript.

Eine weitere interessante Eigenschaft von Io ist die Verwendung so genannter Actors, um Nebenläufigkeit zu erreichen. Ein Actor ist dabei gleichsam ein „lebendes“ Objekt; es stellt einen leichtgewichtigen Thread dar, der asynchrone Methodenaufrufe in einer Queue speichert und dann einen nach dem anderen ausführt. Synchronisationsprobleme können damit elegant umgangen werden. Ein solcher asynchroner Methodenaufruf liefert als Ergebnis eine transparente Future zurück. Diese Future blockiert Zugriffe, bis tatsächlich ein Wert vorliegt und wird dann das Ergebnis.

Io wird, wie andere Skriptsprachen auch, in einen AST übersetzt. Der Parser ist in C geschrieben, eine Io-Version ist in Entwicklung (November 2005). Als Besonderheit besteht dieser AST ausschließlich aus Message-Objekten: Jedes dieser Objekte repräsentiert einen der in OO-Sprachen üblichen Vorgänge des Sendens einer Nachricht an einen Empfänger. Dieser Baum von Nachrichtensendungen kann zur Laufzeit inspiziert und gegebenenfalls auch manipuliert werden. Das ermöglicht es, Lisp-artige Makros zu schreiben.

Der Nachrichtenbaum wird von einer einfachen virtuellen Maschine interpretiert, die nur aus rund zehntausend Zeilen ISO-C-Code besteht. Die virtuelle Maschine bietet inkrementelle automatische Speicherbereinigung (englisch garbage collection) mit Unterstützung schwacher Referenzen (weak references). Neben dieser Minimal-VM stehen mit Add-ons für die wichtigsten Anwendungsgebiete erweiterte VMs bereit, darunter reguläre Ausdrücke, ein XML-Parser, Blowfish-Verschlüsselung sowie ein OpenGL-, ein PortAudio- und ein FreeType-Binding. Unterstützte Plattformen sind zur Zeit Mac OS X, Linux, die BSD-Systeme, IRIX, Windows, Symbian OS und L4.

Io steht unter der BSD-Lizenz.

Beispielcode

// Kommentare im C++-Stil können benutzt werden
# sowie Shell-Kommentare
/* und Kommentare im Stil von C */
 
"Hello world" print // Hello World
 
for(i, 1, 10, i print) // Gibt die Zahlen von 1 bis 10 aus
 
x := Object clone // Syntax wie in Smalltalk: ':=' erzeugt neue Slots
x = Map clone // '=' wird zum überschreiben benutzt
x prettyprint := method( // Erstellt eine Methode ohne Argumente
    foreach(key, value, write(key, ": ", value, "\n")) // Schleife über 'map'
)
x atPut("hi", 1) // Schlüssel-Wert-Paar in 'map' schreiben
x atPut("hello", 2)
x prettyprint
/* Ausgabe:
     hi: 1
     hello: 2
*/

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

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

  • Programmiersprache — Programmiersprache …   Deutsch Wörterbuch

  • 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 C — C Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Dennis Ritchie Bell Labs wichtige Implementierungen …   Deutsch Wikipedia

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

  • Programmiersprache — Quelltext eines Programms in der Programmiersprache C++. Eine Programmiersprache ist eine formale Sprache, die zur Formulierung von Computerprogrammen verwendet wird. Die Anweisungen (Befehle) können dabei entweder in Maschinencode geschrieben… …   Deutsch Wikipedia

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

  • Programmiersprache Haskell — Haskell Basisdaten Paradigmen: funktional, nicht strikt, modular …   Deutsch Wikipedia

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

  • Programmiersprache Eiffel — Eiffel ist eine universelle, rein objektorientierte Programmiersprache und wurde 1985 von dem französischen Informatiker Bertrand Meyer und seiner Firma Interactive Software Engineering Inc. (Goleta, Kalifornien) als Alternative zu C++ entworfen …   Deutsch Wikipedia

  • Programmiersprache D — D Paradigmen: imperativ, objekt orientiert, generisch, modular Erscheinungsjahr: 2007 Entwickler: Walter Bright Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Pascal — Pascal Paradigmen: imperativ, strukturiert Erscheinungsjahr: 1972 Entwickler: Niklaus Wirth Dialekte: UCSD Pascal …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”