Gelesen: Programming Erlang
Erlang ist eine funktionale Sprache, welche bei Ericsson zur Programmierung von Telekommunikations-Equipment geschaffen wurde. Der Autor (und Hauptentwickler) nennt sie auch eine “Concurrency Oriented Programming Language”, denn in diesem Gebiet ist Erlang besonders stark.
Weshalb? Nun, das mühsamste bei der Parallel-Programmierung ist doch, aufzupassen, dass die gemeinsam genutzten Ressourcen korrekt benützt werden und auch keine Deadlocks auftreten können (und dabei das Programm auch wirklich noch parallel läuft!). Bei Erlang hat man dieses Problem insofern gelöst, als dass es keine geteilten Ressourcen gibt (naja, vereinfacht gesagt). Also keine globalen Variablen oder geteilten Speicher, die verschiedenen Prozesse kommunizieren nur durch Messages miteinander. Eigentlich gibt es nicht mal Variablen im eigentlichen Sinn, denn wenn eine Variable einmal einen Wert angenommen hat, lässt sich dies nicht mehr ändern (für Java-Programmierer: Es gibt nur lokale, final Variablen).
Ich weiss, nur Code spricht die Wahrheit, also, ein kleines Beispiel. Ein Programm zur Berechnung der Fakultät sieht folgendermassen aus:
fac(1) -> 1;
fac(N) -> N * fac(N-1).
Die erste Variante von fac nimmt als Parameter eine 1 und evaluiert dies zu 1. Rufen wir also fac(1) auf, dann erhalten wir als Resultat 1. Rufen wir fac allerdings mit Bsp. 3 auf, dann wird die zweite Alternative aufgerufen und die Variable N wird an den Wert 3 gebunden. Danach kommt wie erwartet die Rekursion. Wer mehr Code sehen möchte, dem sei das Erlang Whitepaper empfohlen (hier gibt es noch mehr gute Links).
Zu Erlang gibt es auch noch ein recht umfangreiches Framework zur Erstellung von C/S-Applikationen, sowie eine eigene Datenbank, welche auf die doch recht speziellen Bedürfnisse zugeschnitten ist. Dies wird natürlich alles im Buch behandelt, ausserdem schreibt man einen Chatserver, einen MP3-Streamingserver und weitere interessante Beispielprogramme.
Ich würde jedem, der schon mal etwas mit Parallel- und Netzwerkprogrammierung zu tun hatte (also sicher mal alle HSR-Informatikstudenten) empfehlen, einen Blick auf Erlang zu werfen.
Zu Beginn fand ich es recht anstrengend den Beispielen zu folgen, aber wenn man sich mal daran gewöhnt hat, dass andauernd rekursiert und neue Threads gespawnt werden und wie das Messaging funktioniert, macht es eigentlich ziemlich Spass




