menu Navigation
Elixir – ein Best Of für das Internet der Dinge

Elixir – ein Best Of für das Internet der Dinge

19. Februar 2014

Gestern fand wieder einmal das monatliche Treffen der Softwerkskammer Hamburg (@swk_hh) statt. Dabei handelt es sich um die lokale Software Craftsmanship Community, deren Mitglieder sich an jedem dritten Dienstag des Monats treffen um sich über unser Handwerk auszutauschen, d.h. neue Sprachen oder Technologien kennen zu lernen, das Handwerk zu üben (Code Katas), Vorträge zu hören, oder einfach nur um zu diskutieren.

logo_softwerkskammer_hamburgDiesmal waren wir zu Gast im Hamburger Headquarter der XING AG, welche uns freundlicherweise ihre super ausgestatteten Räumlichkeiten und auch Getränke zur Verfügung gestellt hat. Dafür an dieser Stelle erst einmal ein ganz herzliches Dankeschön!

Ganz besonders gefreut habe ich mich diesmal auf das Thema: die Programmiersprache Elixir! Björn Rochel (@BjoernRochel), Software Architekt bei XING, hat sich angeboten darüber einen Vortrag zu halten und uns seine ersten Erfahrungen mit Elixir mitzuteilen. Ich hatte zuvor schon mal gelegentlich von Elixir gehört, u.a. gab es im vergangenen Jahr eine Artikelserie vom legendären Dave Thomas (Einer der Autoren des berühmten Pragmatic Programmer) im PragProg-Magazine über diese Sprache. Außer dem Namen, und dass es sich um eine funktionale Programmiersprache handelt, wusste ich aber bislang so gut wie nichts darüber.

Björns Vortrag war in drei Abschnitte aufgeteilt. In der Einleitung ging es vor allem um das Warum. Was passiert gerade im Internet, wie verändert es sich, und vor welche Herausforderungen werden Softwareentwickler dadurch gestellt?

Früher war alles einfacher. Die Kommunikation über das Internet war zumeist bidirektional. Ein Gerät sendete Informationen einfach an einen zentralen Server, der irgendwo stand. Dieser antwortete ggf. noch an das Gerät. Für diese Kommunikation konnte zumeist eine HTTP-basierte API verwendet werden. Doch das wandelt sich gerade…

Ganz klar geht jetzt der Trend in Richtung große, verteilte Systeme, die zunehmend Echtzeit-Eigenschaften haben müssen. Treibende Kraft für diese Entwicklung ist die Tatsache, dass sich nicht nur die Menschen, sondern auch die Dinge (Temperatursensoren, Lichtsensoren, Servomotoren, Pumpen, Schalter, usw.) miteinander vernetzen – Stichwort: Internet Of Things. Und da IPv6 langsam Fahrt aufnimmt, werden bald auch alle diese Dinge eine IP-Adresse haben.

Doch welche Technologien eignen sich dafür? Was brauche ich, um mit der rasant ansteigenden Anzahl von sich miteinander verbindenden und kommunizierenden Geräten adäquat umgehen zu können? Sind unsere bekannten, alten Programmierparadigmen überhaupt geeignet für diese Form von Systemarchitekturen?

Entwickler werden vor große Herausforderungen gestellt, wenn sie ein System entwickeln sollen, welches Daten, die über viele Tausende von TCP/IP-Verbindungen ausgetauscht werden, gleichzeitig und effizient verarbeiten können muss. Neben der Performanz spielt dabei vor allem die Skalierbarkeit eine wesentliche Rolle, denn es ist damit zu rechnen, dass in absehbarer Zeit Systeme sogar mehrere Millionen dieser Verbindungen simultan bedienen müssen.

Schon seit Mitte der 1980er Jahre gibt es eine funktionale Programmiersprache inkl. Laufzeitumgebung (Virtual Machine), die für die Entwicklung von sehr gut skalierbaren Echtzeit-Systemen mit hoher Verfügbarkeit geeignet ist: Erlang. Erlang wurde beim schwedischen Telekommunikationsunternehmen Ericsson entwickelt und dort insbesondere für die Entwicklung von Software für Vermittlungsstellen von Telefonnetzen (sog. Switches) eingesetzt. Erlang bietet massive Skalierbarkeit und Parallelität, eine hohe Verfügbarkeit, Fehlertoleranz, und als besonders interessante Eigenschaft das Auswechseln von Softwaremodulen zur Laufzeit, sprich: geplante Ausfallzeiten für Updates oder andere Wartungsarbeiten können entfallen.

Die Programmiersprache Erlang hat allerdings auch einen großen Nachteil: ihre Syntax erinnert an die von Prolog und schreckt viele Entwickler ab. Björn Rochel dazu: „Die Sprache macht einfach gar keinen Spaß.“ Nichtsdestotrotz hat Erlang durchaus eine bemerkenswerte Verbreitung, so ist u.a. der Messenger-Dienst WhatsApp (täglich mehr als siebzehn Milliarden Nachrichten!) in dieser Sprache geschrieben.

An dieser Stelle kommt nun Elixir ins Spiel. Ihr Erfinder, José Valim, wollte die guten Eigenschaften der Erlang VM nutzen, aber den Entwicklern eine elegante, funktionale Programmiersprache bieten, in der zudem viele bewährte Konzepte aus anderen, funktionalen Sprachen miteinander vereint sind – sozusagen ein Best Of der funktionalen Welt.

So ist die Syntax der Sprache sehr stark angelehnt an Ruby. Von Clojure ist das Konzept Polymorphism via Protocols eingeflossen, sowie ein mit Leiningen vergleichbares Build-Tool namens mix. Aus F# wurde der Pipe operator übernommen, mit dessen Hilfe ein elegantes Method-Chaining möglich ist. Weiterhin enthalten ist first-class Support für Pattern-Matching, sowie Macro-Unterstützung, Aliase, assoziative Datenstrukturen, uvm. Und das Tolle ist: Elixir und Erlang basieren auf demselben Bytecode für die Erlang VM, somit können in Erlang geschriebene Programmteile aus Elixir aufgerufen werden, und umgekehrt.

Nach diesem Einführungs-Teil hat uns Björn ein paar Codebeispiele gezeigt, die er mit anderen XING-Entwicklern im Rahmen interner Weiterbildungstage angefertigt hat. Das kleine Projekt apex (Awesome Print for Elixir) ist bei GitHub zu finden. Abschluss und Fazit bildeten dann die Erfahrungen, die mit Elixir gemacht wurden. Man muss beachten, dass sich die Sprache noch ein einem Beta-Entwicklungsstadium befindet (aktuelle Version heute ist 0.12.0) und daher noch nicht 100%tig ausgereift ist. Eine Version 1.0 ist allerdings etwa für Mai/Juni 2014 geplant.

Alles in allem war Björns Vortrag eine sehr runde Sache, die mir viel Spaß gemacht, und – ich muss es zugeben – auch ausgesprochen neugierig gemacht hat. Es juckt förmlich in den Fingern. Elixir steht jetzt auf meiner Liste der Sprachen, die ich mir als nächstes einmal anschauen werde, weit oben.

Ein ganz großes Danke noch einmal an Björn Rochel, XING und die Organisatoren der Softwerkskammer Hamburg (Roland, Sven, Dennis, et al.). Das nächste Treffen der Softwerkskammer findet am Dienstag, den 18. März 2014 statt; Anmeldungen bitte über die Meetup-Gruppe vornehmen. Die Location wird noch bekannt gegeben.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.