Erlang (Programmiersprache)
aus Wikipedia, der freien Enzyklopädie
Erlang (benannt nach Agner Krarup Erlang) ist eine Programmiersprache, die bei Ericsson von Joe Armstrong und anderen entwickelt wurde.
Inhaltsverzeichnis |
[Bearbeiten] Eigenschaften
Spricht man von Erlang, meint man meist nicht nur die relativ kompakte Sprache, sondern auch das Laufzeitsystem und die umfangreiche Bibliothek. Zusammen wird das System Erlang/OTP genannt, wobei OTP eine Abkürzung für The Open Telecom Platform ist. Es handelt sich dabei um eine Middleware für den Bau verteilter, hochverfügbarer Systeme. Positiv hervorzuheben ist z. B. die verteilte Datenbank Mnesia.
Erlang wurde ursprünglich für die Programmierung von Anwendungen in der Telekommunikation geschaffen, insbesondere für Vermittlungsstellen von Telefonnetzen (Switch).
Die dort vorhandenen besonderen Anforderungen gingen unmittelbar in den Entwurf der Programmiersprache und des Laufzeitsystems ein:
- Parallelität
- hohe Verfügbarkeit
- Fehlertoleranz
- Auswechseln von Modulen zur Laufzeit etc.
Erlang genügt den Paradigmen der funktionalen, nebenläufigen und verteilten Programmierung. Joe Armstrong, der geistige Vater von Erlang, bezeichnet sie am liebsten als COPL (Concurrency Oriented Programming Language), was in etwa als nebenläufigkeitsbasierte Programmiersprache zu übersetzen ist und andeutet, dass Prozesse die wichtigsten Objekte in Erlang sind. Den funktionalen Kern findet er weniger wichtig, auch wenn dieser wegen der Vermeidung von Nebeneffekten recht nützlich für die nebenläufige Programmierung ist.
Erlang ist eine der wenigen funktionalen Programmiersprachen, die den Sprung aus dem akademischen Bereich in die Industrie geschafft haben, insbesondere Telefon- und Netzwerkausrüster setzen Erlang ein.
Prozesse sind in Erlang sehr ressourcenschonend implementiert. Der in Erlang geschriebene Webserver Yaws mit seiner hohen Skalierbarkeit ist ein schönes Beispiel dafür.
Die Syntax von Erlang erinnert an die von Prolog, was nicht ganz verwundert, da das System anfänglich als in Prolog geschriebener Interpreter vorlag.
[Bearbeiten] Beispiele
[Bearbeiten] Berechnung der Fakultät
-module(test). -export([fac/1]). fac(0) -> 1; fac(N) -> N * fac(N-1).
[Bearbeiten] Quicksort
%% quicksort(List) %% Sort a list of items -module(quicksort). -export([qsort/1]). qsort([]) -> []; qsort([Pivot|Rest]) -> qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).
Im obigen Beispiel wird die Funktion qsort rekursiv aufgerufen, bis nichts mehr zum Sortieren vorhanden ist.
Der Ausdruck
[ X || X <- Rest, X < Pivot]
kann interpretiert werden als
Wähle alle "X", wobei "X" ein Element von "Rest" ist und "X" kleiner ist als "Pivot"
Dies hat eine sehr bequeme Art der Listenbehandlung zur Folge (in der Literatur als list comprehension bezeichnet).
[Bearbeiten] Eine kleine verteilte Anwendung, die auf zwei Erlang-Knoten läuft
-module(ping_pong). -export([ping/0, pong/0]). ping() -> Pong = spawn(ping_pong, pong, []), Pong ! {self(), ping}, receive pong -> pong end. pong() -> receive {Ping, ping} -> Ping ! pong end.
Kommuniziert wird per Message Passing. Der Operator ! sendet eine Nachricht.
[Bearbeiten] Kommerzieller Einsatz von Erlang
Erlang ist eine der wenigen funktionalen Programmiersprachen, die auch in der Industrie eingesetzt wird. Zu den bekannten Anwendern gehören:
- Amazon SimpleDB (Cloud-Computing basiertes Datenbanksystem)
- Bluetail/Alteon/Nortel (verteiltes, fehlertolerantes E-Mail-System, SSL-Beschleuniger)
- Cellpoint (Ortsbasierte mobile Dienste)
- Corelatus (SS7 signalling black box).
- Ericsson (AXD301-Switch)
- Facebook (Social Network)
- Finnish Meteorological Institute (Datenerfassung und Echtzeitüberwachung)
- IN Switch Solutions (ePIN elektronisches Zahlungssystem)
- Mobilearts (GSM und UMTS-Dienste)
- Motivity Telecom (SS7/ISDN Gateways)
- Netkit Solutions (Netzwerktechniküberwachung & Operations-Support-Systeme)
- Process-one (Kommerzialisiert den ejabberd XMPP Server)
- T-Mobile (früher: one2one)
- Telia (Telekomdienstleister)
- Vail Systems
- Tenerife Skunkworks (Online-Pokerserver)
[Bearbeiten] Weblinks
- www.erlang.org Die Homepage von Open Source Erlang
- yaws.hyber.org Die Homepage des 'Yaws'-Webservers
- Moderne Programmierung nebenläufiger und verteilter Anwendungen mit Erlang Eine kleine Einführung.
- Concurrency Oriented Programming in Erlang Konferenzvortrag über Erlang
- 24c3 - Konzeptionelle Einführung in Erlang