<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Io_%28Programmiersprache%29</id>
	<title>Io (Programmiersprache) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Io_%28Programmiersprache%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Io_(Programmiersprache)&amp;action=history"/>
	<updated>2026-06-03T11:06:18Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Io_(Programmiersprache)&amp;diff=114176&amp;oldid=prev</id>
		<title>imported&gt;Gak69: Reference-Tag eingefügt, Einzelnachweis benannt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Io_(Programmiersprache)&amp;diff=114176&amp;oldid=prev"/>
		<updated>2026-01-14T07:33:01Z</updated>

		<summary type="html">&lt;p&gt;Reference-Tag eingefügt, Einzelnachweis benannt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Io&amp;#039;&amp;#039;&amp;#039; ist eine kompakte [[Prototypenbasierte Programmierung|Prototypen-basierte]], [[Objektorientierte Programmierung|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 &amp;#039;&amp;#039;Io – less is more&amp;#039;&amp;#039; wider. In Io gilt stärker als in anderen Programmiersprachen: „Alles ist ein Objekt“. Die Sprache wurde hauptsächlich von [[Smalltalk (Programmiersprache)|Smalltalk]] (alle Werte sind Objekte), [[Self (Programmiersprache)|Self]], [[NewtonScript]], [[Act1]] (Prototypen-basierte Vererbung, Actors und Zugriff), [[Lisp]] (Code zur Laufzeit betracht- und modifizierbar) und [[Lua]] (kompakt, einbettbar) inspiriert.&lt;br /&gt;
&lt;br /&gt;
== Charakteristische Eigenschaften ==&lt;br /&gt;
Interessant an Io ist vor allem der prototypenbasierte Ansatz der [[Objektorientierte Programmierung|objektorientierten Programmierung]], bei dem keine [[Klasse (Objektorientierung)|Klassen]] zum Einsatz kommen. Stattdessen werden [[Objekt (Programmierung)|Objekten]] sogenannte Prototypen zugewiesen. Nicht existente Methoden oder Felder werden dann automatisch im Prototyp 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]].&lt;br /&gt;
&amp;lt;!-- Ein Objekt in Io besteht aus beliebig vielen &amp;quot;Slots&amp;quot;, die zur Laufzeit hinzugefügt und entfernt werden können. Ein Slot enthält eine Referenz auf ein anderes Objekt. Dieses Objekt kann vom Typ &amp;lt;code&amp;gt;Method&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;Block&amp;lt;/code&amp;gt; sein, ein Zugriff auf den enthaltenden Slot wird damit zum Aufruf der Methode oder des Blocks.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine weitere interessante Eigenschaft von Io ist die Verwendung so genannter [[Actor Model|Actor]]s, um [[Nebenläufigkeit]] zu erreichen. Ein Actor ist dabei gleichsam ein „lebendes“ Objekt; es stellt einen leichtgewichtigen [[Thread (Informatik)|Thread]] dar, der asynchrone Methodenaufrufe in einer [[Warteschlange (Datenstruktur)|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 (Programmierung)|Future]] zurück. Diese Future blockiert Zugriffe, bis tatsächlich ein Wert vorliegt und &amp;#039;&amp;#039;wird&amp;#039;&amp;#039; dann das Ergebnis.&lt;br /&gt;
&lt;br /&gt;
Io wird, wie andere [[Skriptsprache]]n auch, in einen [[Abstrakter Syntaxbaum|abstrakten Syntaxbaum]] (AST) übersetzt. Der Parser ist in C geschrieben.&amp;lt;ref&amp;gt;[https://github.com/IoLanguage/io/tree/master/libs/iovm/source IoLanguage], auf github.com, aufgerufen am 13. Januar 2026&amp;lt;/ref&amp;gt; Als Besonderheit besteht dieser AST ausschließlich aus &amp;lt;code&amp;gt;Message&amp;lt;/code&amp;gt;-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 [[Makro]]s zu schreiben.&lt;br /&gt;
&lt;br /&gt;
Der Nachrichtenbaum wird von einer einfachen [[Virtuelle Maschine|virtuellen Maschine]] interpretiert, die nur aus rund zehntausend Zeilen [[ISO-C]]-Code besteht. Die virtuelle Maschine bietet inkrementelle [[automatische Speicherbereinigung]] (englisch &amp;#039;&amp;#039;garbage collection&amp;#039;&amp;#039;) mit Unterstützung schwacher [[Referenz (Programmierung)|Referenzen]] (&amp;#039;&amp;#039;weak references&amp;#039;&amp;#039;). Neben dieser Minimal-VM stehen mit Add-ons für die wichtigsten Anwendungsgebiete erweiterte VMs bereit, darunter [[Regulärer Ausdruck|reguläre Ausdrücke]], ein [[Extensible Markup Language|XML]]-Parser, [[Blowfish]]-Verschlüsselung sowie ein [[OpenGL]]-, ein &amp;#039;&amp;#039;PortAudio&amp;#039;&amp;#039;- und ein [[FreeType]]-Binding. Unterstützte Plattformen sind zurzeit [[macOS]], [[Linux]], die [[Berkeley Software Distribution|BSD]]-Systeme, [[IRIX]], [[Microsoft Windows|Windows]], [[Symbian OS]] und [[L4 (Mikrokernel)|L4]].&lt;br /&gt;
&lt;br /&gt;
Io steht unter der [[BSD-Lizenz]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* pur objektorientiert&lt;br /&gt;
* Typen und Objekte werden eins&lt;br /&gt;
* alles ist ein Objekt (wie in Smalltalk)&lt;br /&gt;
* dynamische Sprache&lt;br /&gt;
* flow control sind wird per Messages realisiert&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispielcode ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;io&amp;quot;&amp;gt;&lt;br /&gt;
// Kommentare im C++-Stil können benutzt werden&lt;br /&gt;
# sowie Shell-Kommentare&lt;br /&gt;
/* und Kommentare im Stil von C */&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Hello world&amp;quot; print // Hello World&lt;br /&gt;
&lt;br /&gt;
for(i, 1, 10, i print) // Gibt die Zahlen von 1 bis 10 aus&lt;br /&gt;
&lt;br /&gt;
x := Object clone // Syntax wie in Smalltalk: &amp;#039;:=&amp;#039; erzeugt neue Slots&lt;br /&gt;
x = Map clone // &amp;#039;=&amp;#039; wird zum Überschreiben benutzt&lt;br /&gt;
x prettyprint := method( // Erstellt eine Methode ohne Argumente&lt;br /&gt;
    foreach(key, value, write(key, &amp;quot;: &amp;quot;, value, &amp;quot;\n&amp;quot;)) // Schleife über &amp;#039;map&amp;#039;&lt;br /&gt;
)&lt;br /&gt;
x atPut(&amp;quot;hi&amp;quot;, 1) // Schlüssel-Wert-Paar in &amp;#039;map&amp;#039; schreiben&lt;br /&gt;
x atPut(&amp;quot;hello&amp;quot;, 2)&lt;br /&gt;
x prettyprint&lt;br /&gt;
/* Ausgabe:&lt;br /&gt;
     hi: 1&lt;br /&gt;
     hello: 2&lt;br /&gt;
* /&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://iolanguage.org Offizielle Website]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Objektorientierte Programmiersprache]]&lt;br /&gt;
[[Kategorie:Skriptsprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Gak69</name></author>
	</entry>
</feed>