Ubuntu 16.04 Xenial Xerus
Io ist eine strikt objektorientierte, 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 Nebenläufigkeit stark erleichtern und es somit recht einfach macht, entsprechende Programm zu schreiben.
Leider ist Io nicht in den Paketquellen enthalten, so dass man selbst kompilieren muss. Dazu muss als erstes CMake installiert werden [1] :
cmake
mit apturl
Paketliste zum Kopieren:
sudo apt-get install cmake
sudo aptitude install cmake
Dies reicht, um die Virtuelle Maschine inklusive interaktivem Prompt zu übersetzen.
Danach lädt man die aktuellste Version von der Homepage herunter und entpackt die zip-Datei in eine beliebiges Verzeichnis [5] . Im folgenden wird davon ausgegangen, dass das Archiv ins Homeverzeichnis entpackt wurde.
Dann wechselt man in das Verzeichnis, legt von Hand ein Verzeichnis build an, wechselt dort hinein und nimmt die Kompilierung vor [2] [3] :
mkdir build cd build cmake .. sudo make install
Nach erfolgreicher Installation befindet sich Io unter /usr/local/bin/io und /usr/local/bin/io_static
Sollte nach dem Aufruf von CMake ein Fehlermeldung wie
CMake Error at CMakeLists.txt:143 (string): string sub-command REGEX, mode REPLACE needs at least 6 arguments total to command.
auftreten, so wechselt man ins übergeordnete Verzeichnis, öffnet die Datei CMakeLists.txt mit einem Editor [5] und kommentiert die Zeile entsprechend der Fehlermeldung (hier also 143) aus, in dem man ein Raute-Zeichen #
an den Zeilenanfang setzt. Danach wechselt man wieder nach build und führt cmake
erneut aus.
Das Quellpaket von Io beinhaltet bereits eine Reihe von Modulen, z.B. für Datenbankanbindung, Kryptographie, Webprogrammierung, reguläre Ausdrücke usw. Diese werden automatisch mit übersetzt, sofern die für das jeweilige Modul benötigte Bibliothek auf dem System installiert ist. Einen vollständigen Überblick findet man in dem unter Links angegebenen Blogeintrag.
Io besitzt einen interaktive Kommandozeile, welche durch den Aufruf von
io
gestartet wird.
Natürlich kann man auch Io-Programme mit einem beliebigem Editor erstellen, diese mit der Dateieindung .io abspeichern und dann per
io mein_programm.io
aufrufen.
Das obligatorische „Hallo Welt“ sieht am interaktiven Prompt eingegeben so aus:
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:
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:
Io> Ubuntu slotNames ==> list(type, Info, Typ)
Diese werden dann als Liste zurück gegeben.
Leider besitzt das Quellpaket von Io keine Deinstallationsroutine. Von daher muss man zum Entfernen von Io die Verzeichnisse /usr/local/bin/io, /usr/local/bin/io_static und /usr/local/lib/io inklusive Unterverzeichnissen von Hand löschen. Dafür sind Root-Rechte [4] notwendig.
Guide - offizielle Einführung in Io
Wikipediaeintrag zu Io
Wikibook zu Io
Blogeintrag zu Io, inklusive kürzer Einführung in die Module von Io
Diese Revision wurde am 18. Oktober 2016 20:46 von noisefloor erstellt.