Erlang (benannt nach Agner Krarup Erlang) ist eine Programmiersprache, die bei Ericsson von Joe Armstrong und anderen entwickelt wurde.
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, insbesonders für Vermittlungsstellen von Telefonnetzen (Switch). Die dort vorhandenen besonderen Anforderungen gingen unmittelbar in den Entwurf der Programmiersprache und des Laufzeitsystems ein:
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 Ressourcen-schonend 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.
-module(test). -export(*). fac(0) -> 1; fac(N) -> N * fac(N-1).
(aus Getting Started Quickly with Erlang)
%% quicksort(List) %% Sort a list of items -module(quicksort). -export(*). qsort(-> [; qsort(*) -> qsort(X || X <- Rest, X < 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
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).
-module(ping_pong). -export(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. (aus Getting Started with Erlang)
Erlang ist eine der wenigen funktionalen Programmiersprachen, die auch in der Industrie eingesetzt wird. Zu den bekannten Anwendern gehören:
Funktionale_Programmiersprache | Telekommunikation
Erlang programming language | Erlang | Erlang (langage) | Erlang (linguaggio) | 얼랑 프로그래밍 언어 | Erlang (programmeertaal) | Erlang | Erlang
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Erlang (Programmiersprache)".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world