Erlang (Programmiersprache)

Erlang (Programmiersprache)
Erlang
Erlang logo.png

Funktionale Programmiersprache
Basisdaten
Paradigmen: Funktionale Programmiersprache, Nebenläufige Programmierung
Erscheinungsjahr: 1987
Entwickler: Ericsson
Aktuelle Version: R14B04  (5. Oktober 2011)
Typisierung: dynamisch, stark
wichtige Implementierungen: Erlang
Einflüsse: Prolog
Beeinflusste: Clojure, Scala
Betriebssystem: Windows, Linux, Mac OS X, Solaris
Lizenz: Abgewandelte MPL
Erlang.org

Erlang ist eine Programmiersprache, die bei Ericsson von Joe Armstrong und anderen entwickelt wurde. Sie ist nach dem dänischen Mathematiker Agner Krarup Erlang benannt, kann aber auch für Ericsson language stehen.[1]

Inhaltsverzeichnis

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. Hervorzuheben sind z. B. die verteilten Datenbanken Mnesia und CouchDB.

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:

Erlang genügt den Paradigmen der funktionalen, nebenläufigen und verteilten Programmierung. Joe Armstrong, der geistige Vater von Erlang, bezeichnet sie am liebsten als Concurrency Oriented Programming Language (COPL), was in etwa als nebenläufig ausgerichtete 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 Seiteneffekten 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 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.

Basierend auf dem von Erlang verwendeten Binärformat[2] wurde das allgemeine Binärformat BERT und ein darauf aufbauendes Remote Procedure Call-Protokoll entwickelt.[3]

Beispiele

Berechnung der Fakultät

-module(test).
-export([fac/1]).
 
fac(0) -> 1;
fac(N) -> N * fac(N-1).

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).

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, die asynchron übertragen wird, d.h. der Prozess wartet nicht, bis die Nachricht empfangen wurde.

Prominente Anwendungen

  • CouchDB – Datenbank mit Fokus auf Dokumentenverwaltung
  • ejabberd – XMPP Server
  • RabbitMQ – AMQP Messaging Server
  • SimpleDB – Datenbank
  • Wings 3D – Modeler
  • Yaws – Webserver
  • YXA – SIP Server

Kommerzieller Einsatz von Erlang

Erlang ist eine der wenigen funktionalen Programmiersprachen, die auch in der Industrie eingesetzt wird. Zu den bekannten Anwendern gehören:

  • Bluetail/Alteon/Nortel (verteiltes, fehlertolerantes E-Mail-System, SSL-Beschleuniger)
  • Cellpoint (Ortsbasierte mobile Dienste)
  • Corelatus (SS7 signalling black box).
  • Ericsson (AXD301-Switch)
  • Facebook (ejabberd-based Chat Engine)
  • Finnish Meteorological Institute (Datenerfassung und Echtzeitüberwachung)
  • GitHub (Als Git-Server[4] und für RPC[5])
  • 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 (Mobilfunkbetreiber)
  • Telia (Telekomdienstleister)
  • Vail Systems
  • Tenerife Skunkworks (Online-Pokerserver)
  • Clustrx (HPC-OS)[6]
  • WhatsApp (Mobiler Messenger) [7]

Einzelnachweise

  1. Interview mit Joe Armstrong auf CIO.com.au (englisch)
  2. http://erlang.org/doc/apps/erts/erl_ext_dist.html
  3. http://bert-rpc.org/
  4. http://github.com/blog/112-supercharged-git-daemon
  5. http://github.com/blog/531-introducing-bert-and-bert-rpc
  6. http://www.erlang-solutions.com/section/113/
  7. http://blog.whatsapp.com/index.php/2011/09/one-million/

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Erlang — bezeichnet: Agner Krarup Erlang (1878–1929), dänischer Mathematiker und Ingenieur eine Pseudomaßeinheit für die Verkehrsbelastung von Netzwerkleitungen, siehe Erlang (Einheit) ein Warteschlangenmodell, siehe Erlang C bzw. Erlang B eine… …   Deutsch Wikipedia

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • Deklarative Programmiersprache — Die deklarative Programmierung ist ein Programmierparadigma, bei dem die Beschreibung des Problems im Vordergrund steht. Der Lösungsweg wird dann automatisch ermittelt. Zu den deklarativen Programmiersprachen gehören: funktionale Sprachen (z. B.… …   Deutsch Wikipedia

  • Prolog (Programmiersprache) — Prolog Paradigmen: logisch, deklarativ, oft auch constraintbasiert Erscheinungsjahr: 1972 Designer: Alain Colmerauer Entwickler: Philippe Roussell …   Deutsch Wikipedia

  • Scala (Programmiersprache) — Scala Paradigmen: objektorientiert, funktional, imperativ Erscheinungsjahr: Seit 2001: Interne Arbeiten an der EPFL 2003: Version 1 2006: Version 2 Entwickler: École polytechnique fédérale de Lausanne unter Leitung von Martin Oders …   Deutsch Wikipedia

  • Agner Krarup Erlang — (* 1. Januar 1878 in Lonborg, Dänemark; † 3. Februar 1929 in Kopenhagen) war ein dänischer Mathematiker und Ingenieur. Er machte sich unter anderem Gedanken über Warteschlangenprobleme in der Telef …   Deutsch Wikipedia

  • Oz (Programmiersprache) — Dieser Artikel wurde aufgrund von inhaltlichen Mängeln auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf… …   Deutsch Wikipedia

  • ICFPC — Der ICFP Contest ist ein Programmierwettbewerb, der jährlich im Umfeld der ICFP Konferenz ausgerichtet wird. Der erste ICFP Contest fand 1998 statt. Inhaltsverzeichnis 1 Austragungsmodus 2 Teilnehmer 3 Austragungsort 4 Preise …   Deutsch Wikipedia

  • ICFP Contest — Der ICFP Contest ist ein Programmierwettbewerb, der jährlich im Umfeld der ICFP Konferenz ausgerichtet wird. Der erste ICFP Contest fand 1998 statt. Inhaltsverzeichnis 1 Austragungsmodus 2 Teilnehmer 3 Austragungsort 4 Preise …   Deutsch Wikipedia

  • Liste von Hallo-Welt-Programmen/Programmiersprachen — Dies ist eine Liste von Hallo Welt Programmen für gebräuchliche Programmiersprachen. Weitere Beispiele für grafische Benutzeroberflächen, Web Technologien, exotische Programmiersprachen und Textauszeichnungssprachen sind unter Liste von Hallo… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”