The Turkey Curse
fukamis terror chatroom

Wissenswertes über Erlang

Prickle-Prickle, 9th Chaos, 3172.
Code fukami 30703 No Comments | Trackback URI

**Geschichte**

Die Idee zur Entwicklung der Sprache Erlang und der dazugehörigen Laufzeitumgebung (auch Erlang/OTP für _Open Telecom Plattform_) geht ins Jahr 1982 zurück. Zu dieser Zeit waren bei den Telcos mehr als 20 Sprachen im Einsatz, was für alles andere als gute Interoperabilität und Produktivität gesorgt hat. So experimentierten die entsprechenden Firmen Mitte der 80er Jahre mit verschiedenen Sprachen wie z.B. Lisp, Prolog oder Parlog, die zwar gewisse brauchbare Eigenschaften aufwiesen, aber alle aus dem einen oder anderen Grund am Ende doch nicht die gewünschten Ergebnisse brachten (als da z.B. wären: Parallelität, hohe Verfügbarkeit, Fehlertoleranz, Auswechseln von Modulen zur Laufzeit etc.). 1987 gab es die ersten Experimente mit einer neuen Sprache, die Erlang genannt wurde (nach dem dänischen Mathematiker Agner Krarup Erlang). Durch einen Prototypen, der PABX-Funktionalität hatte, gelang 1988 Erlang der Sprung raus dem Labor rein in die ersten realen Anwendungen. 1992 wurden die ersten grösseren Projekte in Erlang geschrieben und Sprache und Laufzeitumgebung auf Windows, VxWorks, Macintosh und andere Systeme portiert, bis es dann schliesslich 1993 möglich wurde, mit Erlang verteilte Anwendungen in homogenen Umgebungen auf heterogener Hardware laufen zu lassen. Die schwedische Firma Ericsson hat massgeblich die Implematationen und Tools vorangetrieben und gepflegt, bis sie Erlang schliesslich als Open Source unter einer eigenen Lizenz, der Erlang Public License (EPL), veröffentlicht und zum Gebrauch zur Verfügung gestellt haben.

Mittlerweile gibt es eine ganze Reihe kommerzieller Produkte und quelloffener Software, die Erlang einsetzt. Zu den bekanntesten OSS-Projekten in dem Bereich gehören wahrscheinlich ejabberd (ein robuster und hoch skalierbarer Jabber-Server), Yaws (Yet another web server) und natürlich die verteilte Datenbank Mnesia. Zu den weniger bekannten kommerziellen Anwendungen bei Telcos gehören z.B. verteilte Emailsysteme, elektronische Zahlungssysteme, Software für Gateways und Switches und diverse Messaging-, UTMS-, GMS und ISDN- und VoIP-Systeme u.a.

**Eigenschaften**

Aus dem Erlang White Paper von Joe Armstrong (der als geistiger Vater der Sprache gilt und diese gerne _COPL_ — Concurrency Oriented Programming Language — nennt), Bjarne Däcker, Thomas Lindgren und Håkan Millroth:

Erlang is a programming language which has many features more commonly associated with an operating system than with a programming language: concurrent processes, scheduling, memory management, distribution, networking, etc.

Zu den Besonderheiten der Sprache gehören also wie zum Teil schon erwähnt einige Eigenschaften, die vor allem in den Bereichen nötig sind, die wie in der Telekommunikation hoch skaliert und ausfallsicher sein müssen:

* Nebenläufigkeit
Prozesse in Erlang teilen sich keinen Shared Memory und können ausschliesslich durch asynchronen Nachrichtenaustausch Daten tauschen. Der Entwickler kann dabei entscheiden, welche Programmteile dabei sequenziell und welche parallel ablaufen.
* Verteiltheit
Die Nachrichten können über verschiedene Nodes hinweg ausgetauscht werden, wobei sich die einzelnen Teile wie eine einzige Gesamtanwendung betrachten lassen und die sogar auf völlig verschiedenen Architekturen laufen können.
* Robustheit
Erlang besitzt verschiedene Möglichkeit zur Fehlererkennung und Fehlertoleranz. Beispielsweise kann ein Prozess Status und Aktivitäten anderer Prozesse beobachten. Dies kann auch von anderen Nodes aus passieren, was sich ganz nifty für Failover-Systeme macht.
* Soft Realtime
Erlang unterstützt “weiche” Echtzeitanforderungen mit Responsezeiten in Millisekunden und nutzt aus dem Grund inkrementelle Garbage Collection-Techniken.
* Hot Code Upgrade
Im Gegensatz zu den meisten Systemen, die für Maintenance-Zwecke gestoppt werden müssen erlaubt Erlang die Änderung von Code in einem laufenden System. Während der Zeit dieses Vorgangs können alter und neuer Code koexistieren. So sind Bugfixes oder Upgrades ohne Downtime möglich.
* inkrementelles Code Loading
Man kann detailliert kontrollieren wie Code geladen werden soll. In Embedded Systemen wird der Code normalerweise z.B. beim Bootvorgang geladen, in Development-Systemen wird er oft erst geladen wenn er wirklich gebraucht ist um damit z.B. buggy Code zu ersetzen.
* externe Interfaces
Erlang-Prozesse können mit der äusseren Welt durch dieselben Mechanismen kommunizieren wie zwischen Erlang-Prozessen um damit z.B. mit C- oder Java-Programmen zu kommunizieren.

**Getting Started**

Wer jetzt Lust bekommen hat sich das Ganze mal anzusehen sollte problemlos einen Installer oder die entsprechenden Sourcen für seine Plattform finden. Nach der Installation wird man feststellen, dass Erlang, wie auch in anderen Sprachen nicht unüblich, eine Shell zum Schreiben und Ausführen von Code hat, die entfernt an eine *NIX-Shell erinnert und mit **“erl“** aufgerufen wird:

fukami@wostok % erl
Erlang (BEAM) emulator version 5.4.12 [source] [hipe] [threads:0]

Eshell V5.4.12 (abort with ^G)
1>

Als Einstieg sei auf das exzellente Tutorial von Ericssons Erlang-Seite verwiesen.

---

No Comments »

No comments yet.

RSS feed for comments on this post. | TrackBack URI

Leave a comment



"I am chaos. I am the substance from which your artists and scientists build rhythms. I am the spirit with which your children and clowns laugh in happy anarchy. I am chaos. I am alive, and I tell you that you are free." - Eris, Goddess of Chaos, Discord & Confusion.

The Turkey Curse is powered by WordPress, template idea by Priss

Entries (RSS) and Comments (RSS).
Generated in 0.050 seconds.