[[Vorlage(Getestet, focal)]] [[Vorlage(Ausbaufähig, "Das Paketmanager [githib:IoLanguage/eerie:eerie] kann noch beschrieben werden.")]] {{{#!vorlage Wissen [:Packprogramme: Archive entpacken] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] }}} [[Inhaltsverzeichnis()]] [http://iolanguage.com/ Io] {en} ist eine strikt [wikipedia:Objektorientierte_Programmierung:objektorientierte], [wikipedia:Prototypenbasierte_Programmierung:prototypenbasierte] Programmiersprache. Die Sprache hat eine klare Syntax mit minimalistischen Ansätzen, der eigentliche Parser der Sprache ist sehr kompakt und verbraucht wenig Speicher. Weiterhin ist Io dadurch, ähnlich wie [:Lua:], einbettbar. Io ist durch Module erweiterbar. Io besitzt Sprachkonstrukte, die den Umgang mit [wikipedia:Nebenläufigkeit:] stark erleichtern und es somit recht einfach macht, entsprechende Programm zu schreiben. = Installation = == einzelnes Paket == Io nicht in den Paketquellen enthalten, es wird auf der Projektseite aber ein DEB-Pakete bereit gestellt. Dazu geht man auf die Seite [https://iolanguage.org/binaries.html] {en} und wählt das Paket der mit der passenden Architektur (also z.B. x64deb). Es wird ein Archiv heruntergeladen, das man entpackt[1], dann kann man das darin enthaltene DEB-Paket installieren[2]. = Benutzung = Io besitzt einen interaktive Kommandozeile, welche durch den Aufruf von {{{#!vorlage Befehl io }}} gestartet wird. Natürlich kann man auch Io-Programme mit einem beliebigem Editor erstellen, diese mit der Dateieindung '''.io''' abspeichern und dann per {{{#!vorlage Befehl io mein_programm.io }}} aufrufen. Das obligatorische „Hallo Welt“ sieht am interaktiven Prompt eingegeben so aus: {{{#!vorlage Befehl Io> "Hallo Welt" println Hallo Welt ==> Hallo Welt }}} Hier wird auch eines der Grundkonzepte sichtbar: Im Io-Jargon ist `println` kein Befehl, sondern eine „Message“ (auf Deutsch: „Nachricht“). Die Message steht rechts und wird an den links stehenden „Receiver“ (auf Deutsch: „Empfänger“) gesendet. In Io sind die allermeisten Befehle Messages. Wie in der Einleitung bereits erwähnt, ist Io prototypenbasiert und objektorientiert. Alles ist ein Objekt, es gibt keine Klassen. Neue Objekte werden von bestehenden Objekten abgeleitet, wobei noch zu erwähnen ist, dass Objekte in Io per Konvention mit einem Großbuchstaben beginnen müssen. Jedes Objekt kann beliebige Schlüssel-Werte Paare beinhalten, welche in „Slots“ abgelegt werden. Der Wert kann dabei ein Objekt, eine Funktion usw. sein. Im folgenden Beispiel wird am interaktiven Prompt ein neues Objekt „Ubuntu“ angelegt, der Schlüssel „Typ“ mit dem Wert „Linux Distribution“ hinzugefügt und eine Methode erstellt, welche die Länge des Werts des Schlüssels „Typ“ zurück gibt. Anschließend werden sowohl der Schlüssel als auch die Methode aufgerufen: {{{#!vorlage Befehl Io> Ubuntu := Object clone ==> Ubuntu_0x190d920: type = "Ubuntu" Io> Ubuntu Typ := "Linux Distribution" ==> Linux Distribution Io> Ubuntu Info := method(self Typ size) ==> method( self Typ size ) Io> Ubuntu Typ ==> Linux Distribution Io> Ubuntu Info ==> 18 }}} Alle Slots eines Objekts kann man wie folgt anzeigen lassen: {{{#!vorlage Befehl Io> Ubuntu slotNames ==> list(type, Info, Typ) }}} Diese werden dann als Liste zurück gegeben. = Links = * [http://iolanguage.org/guide/guide.html Guide] {en} - offizielle Einführung in Io * [github:IoLanguage/io:Github Seite] vin Io * [wikipedia:Io_(Programmiersprache):Wikipediaeintrag] zu Io * [http://en.wikibooks.org/wiki/Io_Programming Wikibook] {en} zu Io #tag: Programmierung