ubuntuusers.de

Erlang

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./erlang_logo.gif

Erlang 🇬🇧 ist eine OpenSource Programmiersprache, die heutzutage gerne für (massiv) parallele Programmierung und verteilte Systeme genutzt wird. Die Ursprünge liegen aber Anwendungen im Bereich Telekommunikation, entwickelt wurde die Sprache für und bei Ericsson.

Ihre Stärke ist die parallele Verarbeitung von Programmlogik, ein sehr effizientes und leichtgewichtiges Benachrichtigungsystem für die Interprozesskommunikation sowie eine ausgeprägte Fehlertoleranz („Let it crash“ Philosophie). Des weiteren ist es bei Erlang möglich, Module zur Laufzeit des Programms ohne Neustart auszutauschen bzw. zu aktualisieren, wodurch eine hohe Verfügbarkeit des Systems erreicht wird.

Es gibt im Desktop-Bereich nicht viele Anwendungen, die auf dieser Sprache basieren. Prominente Beispiele aus dem Serverbereich sind der Jabber-Server ejabberd, die dokumentenorientierte Datenbank CouchDB, der Webserver Yaws 🇬🇧, der Polygon-Modeler wings3d 🇬🇧 sowie die Key-Value Datenbank Riak 🇬🇧 .

Installation

Möchte man Erlang nutzen, muss man das Paket

  • erlang (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install erlang 

Oder mit apturl installieren, Link: apt://erlang

installieren [1]. Für weitere Informationen sind noch folgende Pakete geeignet:

  • erlang-doc (universe, PDF- und HTML-Dokumentation )

  • erlang-manpages (universe, Manpages )

Befehl zum Installieren der Pakete:

sudo apt-get install erlang-doc erlang-manpages 

Oder mit apturl installieren, Link: apt://erlang-doc,erlang-manpages

Besonderheiten der Sprache

Funktional

Erlang ist eine funktionale Programmiersprache. Dies bedeutet, dass ein komplettes Erlang-Programm ausschließlich aus einer Aneinanderreihung von Funktionen und deren Aufrufen besteht. Im Gegensatz zu imperativen Programmiersprachen gibt es keinen "Ablaufplan" eines Programms, sondern der Ablauf wird durch Funktionen, deren Rückgabewerten und Ereignissen bestimmt. Erlang kommt fast ohne Schleifen und Zuweisungen aus, setzt dafür verstärkt auf Rekursionen.

Modular

Erlang-Programme bestehen fast ausschließlich aus miteinander agierenden Modulen. Jede Funktion schreibt man in ein Modul und verschachtelt die Module miteinander.

Hohe Verfügbarkeit

Eine Stärke von Erlang liegt darin, dass man Code ohne Probleme zur Laufzeit ändern kann. Man muss eine Serveranwendung also nicht anhalten, um etwas auszubessern oder einen Bug zu beseitigen, sondern man kann das entsprechende Module einfach zur Laufzeit austauschen. Dadurch erreichen Erlang-Programme eine hohe Verfügbarkeit. Ericsson hat die Verfügbarkeit ihrer Erlang-Systeme auf über 99% im Jahr beziffert, was etwa einer Ausfallzeit von 3,65 Tagen/Jahr entspricht.

Parallelität

Erlang-Programme sind unter hohen Auslastungen weit weniger ressourcen- und rechenintensiv als Programme in anderen Sprachen. Dies liegt vor allem an der Parallelität, auch Nebenläufigkeit genannt. Die Erlang-Laufzeitumgebung erkennt Programmanweisungen, welche nicht voneinander abhängig sind, und verteilt diese auf mehrere Pipelines zur selben CPU oder auf mehrere CPUs, falls vorhanden, um diese parallel ablaufen zu lassen. Ein simples Beispiel wäre:

1
2
3
A = 1+5.
B = 4+6.
C = A+B.

In normalen Programmiersprachen würden diese drei Zuweisungen hintereinander ausgeführt werden. Erlang erkennt jedoch, dass die ersten zwei Zuweisungen nicht voneinander abhängig sind und parallelisiert sie.

Da Erlang eine eigene Prozesskontrolle implementiert, welche unabhängig von der Prozesskontrolle des Betriebssystems / der CPU ist, sind Erlang-Prozesse sehr „leichtgewichtig“, so dass diese auch in eine großen Zahl gleichzeitig laufen können.

Die Erlang-Shell

Um Erlang-Programme zu testen, zu warten oder auch einfach nur um ein bisschen mit Erlang herum zuspielen, bietet sich die Erlang-Shell an. Diese wird automatisch mit Erlang mit installiert und kann vom Terminal [2] aus durch den Befehl:

erl 

gestartet werden.

HalloWelt-Programm

In den meisten Sprachen ist das HalloWelt-Programm das erste, was man schreibt. Auch in Erlang kann man dies machen, jedoch sollte klar sein, dass dies in Erlang etwas kompliziert aussieht, da Erlang seine Stärke in komplexen und nicht in einfachen Programmen besitzt.

Zuerst erstellt man eine Datei hallo.erl mit folgendem Inhalt:

1
2
3
4
-module(hallo).                                % Der Name des Moduls - muss identisch mit dem Dateinamen sein.
-export([hallo_welt/0]).                       % Deklaration der Funktion, die aus dem Modul exportiert werden soll.

hallo_welt() -> io:format("Hallo Welt ~n").    % Was bei Aufruf der Funktion geschehen soll, hier: es soll Hallo Welt ausgegeben werden.

Danach öffnet man die Erlang-Shell, kompiliert das Modul und führt die Funktion aus:

~$ erl 
Erlang/OTP 24 [erts-12.2.1] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [jit]

Eshell V12.2.1  (abort with ^G)
1> c(hallo).
{ok,hallo}
2> hallo:hallo_welt().
Hallo Welt
ok
3>

Der Befehl

c(hallo). 

hat das Modul kompiliert und der Befehl

hallo:hallo_welt(). 

ruft aus dem kompilierten Modul hallo die Funktion hallo_welt() auf.

Diese Revision wurde am 23. April 2023 14:11 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung