Funktionale Programmiersprache Elixir: Pragmatisch und leicht zu erlernen
Mit der funktionalen Programmiersprache Elixir lassen sich skalierbare und robuste Programme schreiben.
- Martin Grotz
Die funktionale Programmiersprache Elixir ist auf Nebenläufigkeit ausgerichtet. Sie ist dynamisch typisiert, verwendet eine an Ruby angelehnte Syntax und ist noch recht jung – Version 1.0 erschien im September 2014. Der Elixir-Compiler erzeugt Erlang-Bytecode. Es besteht eine hundertprozentige Kompatibilität: Erlang-Code lässt sich problemlos aus Elixir heraus nutzen und umgekehrt. Dies gilt auch für alle Sprachbibliotheken. Dadurch profitiert Elixir vom Erlang-Ökosystem und erbt durch die Erlang-Basis zugleich zahlreiche Laufzeitvorteile.
Die Basis jedes Elixir-Systems sind Aktoren. Das theoretische Aktormodell entstand allerdings unabhängig von der Implementierung in der Erlang-Runtime, deshalb unterscheiden sich viele Bezeichnungen leider in Theorie und Praxis. Aktoren sind jeweils vollständig voneinander unabhängige Laufzeitkomponenten, die sich keinerlei Zustand mit anderen Aktoren teilen. Die Kommunikation erfolgt nachrichtenbasiert.
Dazu besitzt jeder Aktor eine Eingangswarteschlange, um alle Nachrichten von anderen Aktoren für die spätere Bearbeitung zu sammeln. Die anschließende sequenzielle Verarbeitung der Nachrichten erleichtert die Programmierung, da im Code keine Parallelverarbeitung zu berücksichtigen ist. Innerhalb eines Aktors wird also immer nur genau eine Nachricht gleichzeitig verarbeitet. Für die Skalierung des Gesamtsystems muss das jeweilige Programm zusätzliche Aktoren starten. Da die Kommunikation nur über Nachrichten funktioniert, ist es nicht erforderlich, die Aktoren auf dem gleichen System auszuführen, damit sie miteinander kommunizieren können. Eine Verteilung über beliebig viele Rechnersysteme ist problemlos möglich.