ubuntuusers.de

Io

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

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.

Installation

Leider ist Io nicht in den Paketquellen enthalten, so dass man selbst kompilieren muss. Dazu muss als erstes CMake installiert werden [1] :

  • cmake

Paketliste zum Kopieren:

sudo apt-get install cmake 

Oder mit apturl installieren, Link: apt://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.

Zusatzmodule mit kompilieren

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.

Benutzung

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.

Deinstallation

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.

Diese Revision wurde am 18. Oktober 2016 20:46 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung