Elixir – mit Erlangs Erben in die Zukunft

Sprachen  –  10 Kommentare

Trotz seines zarten Alters von gerade einmal drei Jahren ist Elixir aufgrund seiner Wurzeln bereits einen Blick wert. Vor allem, da die Sprache eine Reihe von Eigenschaften mitbringt, die sich für die vernetzte Zukunft als vorteilhaft erweisen könnten.

Eine aktuelle McKinsey-Studie bescheinigt dem Internet der Dinge eine rosige Zukunft. Die Verfasser der Studie gehen von einem ökonomischen Gewinn in Höhe von elf Billionen Euro aus. Beispielsweise können Städte und Kommunen dadurch profitieren, dass man Mülltonnen nur noch dann leert, wenn sie tatsächlich voll sind. Aber auch der Straßenverkehr soll sich mit automatischer Stauumfahrung effizienter steuern lassen.

Die Ideen für diese schöne neue Welt sind nahezu unbegrenzt – allerdings braucht es zu ihrer Umsetzung besonders effektive Programmiersprachen. Eine von ihnen schickt sich gerade an, die Entwicklung des Internets der Dinge massiv voranzutreiben: Elixir, eine vergleichsweise neue Sprache, die auf Erlang setzt.

Bis vor wenigen Jahren funktionierte das Internet denkbar einfach. Üblicherweise sendeten Geräte Signale an einen Server, der bei Bedarf eine Antwort zurückgab. Die Kommunikation lief dabei zumeist über HTTP. Für die Anforderungen, die das Internet der Dinge stellt, reicht das allerdings nicht mehr. Denn jetzt sollen ganz unterschiedliche Geräte eigenständig miteinander kommunizieren können. So sind moderne Häuser häufig bereits mit zahlreichen Sensoren für Licht, Temperatur, Küchengeräte, TV und Zugangskontrollen ausgestattet, die es gilt miteinander zu vernetzen.

Mit IPv6 lassen sich die Geräte zukünftig zudem jeweils mit einer eigenen IP-Adresse ausstatten. Wie viele es letztendlich sein werden, lässt sich aktuell nur schätzen. Gartner geht von bis zu 26 Milliarden, IDC sogar von 212 Milliarden IP-fähigen Geräten weltweit aus.

Erlang als Ursprung

Kommt die Rede auf Erlang, ist zumeist nicht nur die Sprache an sich gemeint. Vielmehr umfasst die Bezeichnung fast immer auch die Bibliothek und die Laufzeitumgebung. Genau genommen handelt es sich bei diesem Paket allerdings um Erlang/OTP, wobei OTP für The Open Telecom Platform steht. Der Einfachheit halber kommt meistens, so auch in diesem Artikel, schlicht der Begriff Erlang zum Einsatz.

Erlang gibt es mittlerweile seit mehr als 25 Jahren. Das verwundert, schließlich ist die Sprache immer noch in weiten Kreisen unbekannt. Das liegt aber eher an der traditionell schwachen Position funktionaler Sprachen als an bestimmten Schwächen von Erlang. Trotz der vergleichsweise geringen Bekanntheit findet sich Erlang in vielen Anwendungen wie Facebook, GitHub, bei T-Mobile und WhatsApp.

Entwickelt wurde die Programmiersprache ursprünglich für den Einsatz in der Telekommunikation. Die Anforderungen, die in dieser Branche an eine Sprache gestellt werden, lassen sich fast unverändert auf das Internet der Dinge übertragen. Entscheidend sind nämlich dort wie hier hohe Verfügbarkeit und Parallelität. Da sich Erlang-Code zur Laufzeit verändern lässt, müssen damit verfasste Applikationen bei Anpassungen nicht angehalten werden. Dadurch sind die Anwendungen vergleichsweise gut erreichbar: Offiziellen Angaben zufolge geht man bei Erlang-Systemen von einer Verfügbarkeit im Bereich von 99 Prozent pro Jahr aus. Dabei ist allerdings zu beachten, dass dies zwar beim ersten hören gut klingen mag, drei bis vier Tage Ausfallzeit pro Jahr allerdings je nach Anwendung sehr viel sein können.

Ein Kernelement von Erlang sind die sogenannten Prozesse, die sich am ehesten mit Threads vergleichen lassen, allerdings weniger umfangreich sind. Die Sprache ermöglicht den Start mehrerer tausend Prozesse, die sich dann auf CPUs verteilen lassen.

Hallo, Erlang!

Wie in der Entwicklergemeinde üblich, soll auch im vorliegenden Artikel ein Hallo-Welt-Beispiel dazu dienen, einen ersten Eindruck von Erlang zu bekommen. Aber Achtung: Die Syntax ist für dieses sehr einfache Beispiel, beziehungsweise das daraus resultierende Ergebnis, vergleichsweise aufwendig und umständlich. Das liegt allerdings nicht an der Komplexität Erlangs, sondern eben daran, dass die Sprache auf komplexe Anwendungen spezialisiert ist.

Hier der angenommene Inhalt einer welt.erl:

-module(hallo).  % Das ist der Modulname.
-export([hallo_welt/0]). % Die Funktion wird deklariert.

hallo_welt() -> io:format("Hallo, Welt! ~n").
% Legt fest, was nach dem Aufruf der Funktion geschehen soll.

Der Code beschreibt ein sehr einfaches Erlang-Modul. Er gibt lediglich den definierten Begrüßungstext aus. Anschließend lässt sich innerhalb der Erlang-Shell, die über ~$ erl aufgerufen wird, das Modul kompilieren und die Funktion ausführen.

Eshell V5.5.5  (abort with ^G)
1> c(hallo).
{ok,hallo}
2> hallo:hallo_welt().
Hallo, Welt!
ok
3>

Mit c(hallo). starten Nutzer den Kompiliervorgang, hallo:hallo_welt(). ruft aus dem kompilierten Modul hallo die Funktion hallo_welt() auf.

Das Beispiel zeigt natürlich nur eine einfache Anwendung, die aber trotzdem vermitteln sollte, wie sich Erlang grundlegend verhält. Ausführliche Informationen zur Sprache und den aktuellen Entwicklungen gibt es auf der Projektseite. Dort finden sich übrigens nicht nur eine ausführliche Dokumentation, sondern auch zahlreiche praxistaugliche Beispiele.