www.wikidata.de-de.nina.az
Erlang ist eine Programmiersprache die bei Ericsson von Joe Armstrong und anderen entwickelt wurde Sie ist nach dem danischen Mathematiker Agner Krarup Erlang benannt der Name kann aber auch fur Ericsson language stehen 2 ErlangFunktionale ProgrammierspracheBasisdatenParadigmen funktional nebenlaufig pradikativErscheinungsjahr 1987Designer Joe Armstrong Robert Virding Mike WilliamsEntwickler EricssonAktuelle Version 26 1 2 1 12 Oktober 2023 Typisierung dynamisch starkWichtige Implementierungen ErlangBeeinflusst von PrologBeeinflusste Clojure Scala ElixirBetriebssystem Windows Linux macOS SolarisLizenz Apache Software License 2 0www erlang orgDas LYME Softwarepaket grundet auf Erlang und stellt eine Alternative zum Softwarepaket LAMP dar Inhaltsverzeichnis 1 Eigenschaften 1 1 Mitgelieferte Software 2 Beispiele 2 1 Berechnung der Fakultat 2 2 Quicksort 2 3 Eine kleine verteilte Anwendung die auf zwei Erlang Prozessen lauft 2 4 Mnesia 3 Prominente Anwendungen 4 Kommerzieller Einsatz von Erlang 5 Literatur 6 Weblinks 7 EinzelnachweiseEigenschaften BearbeitenSpricht man von Erlang meint man meistens nicht nur die relativ kompakte Sprache sondern auch das Laufzeitsystem und die umfangreiche Bibliothek Zusammen wird das System Erlang OTP genannt wobei OTP eine Abkurzung fur The Open Telecom Platform ist Es handelt sich dabei um eine Middleware fur den Bau verteilter hochverfugbarer Systeme Hervorzuheben sind z B die verteilten Datenbanken Mnesia und CouchDB Erlang wurde ursprunglich fur die Programmierung von Anwendungen in der Telekommunikation geschaffen insbesondere fur Vermittlungsstellen von Telefonnetzen Switch Die dort vorhandenen besonderen Anforderungen gingen unmittelbar in den Entwurf der Programmiersprache und des Laufzeitsystems ein Parallelitat hohe Verfugbarkeit Fehlertoleranz Auswechseln von Modulen zur Laufzeit etc Erlang genugt den Paradigmen der funktionalen nebenlaufigen und verteilten Programmierung Joe Armstrong der geistige Vater von Erlang bezeichnete sie am liebsten als Concurrency Oriented Programming Language COPL was in etwa als nebenlaufig ausgerichtete Programmiersprache zu ubersetzen ist und andeutet dass Prozesse die wichtigsten Objekte in Erlang sind Den funktionalen Kern fand er weniger wichtig auch wenn dieser wegen der Vermeidung von Nebeneffekten recht nutzlich fur die nebenlaufige Programmierung ist Erlang ist eine der wenigen funktionalen Programmiersprachen die in der Industrie eingesetzt werden Insbesondere Telefon und Netzwerkausruster setzen Erlang wegen seiner guten Skalierbarkeit und Parallelitat ein Prozesse sind in Erlang sehr ressourcenschonend implementiert Der in Erlang geschriebene Webserver Yaws mit seiner hohen Skalierbarkeit ist ein Beispiel dafur Die Syntax von Erlang erinnert an die von Prolog was nicht ganz verwundert da das System anfanglich als in Prolog geschriebener Interpreter vorlag Basierend auf dem von Erlang verwendeten Binarformat 3 wurde das allgemeine Binarformat BERT und ein darauf aufbauendes Remote Procedure Call Protokoll entwickelt 4 Mitgelieferte Software Bearbeiten Mit der Erlang Distribution werden viele nutzliche Zusatzwerkzeuge mitgeliefert die die Programmierung von Anwendungen deutlich erleichtern OTP Die Open Telecom Platform erleichtert das Bauen von wirklich stabilen parallelen Anwendungen mit zusatzlichen Eigenschaften wie das dynamische Austauschen des Codes wahrend der Laufzeit OTP ist eine Bibliothek die verschiedene Behaviors Verhalten zur Verfugung stellt die die Funktionalitat einer Anwendung von dem Modell dahinter Funktionsaufruf Client Server usw trennen ETS DETS ETS und DETS Disk Erlang Term Storage sind zwei eng verwandte Speichersysteme fur Erlang Terme Tupel Listen Atome also eingebaute Datentypen die eine grosse Skalierbarkeit und eine kleine Zugriffszeit bieten Die grundlegenden Operationen sind insert und lookup Genutzt wird eine Schlussel Wert Struktur Key Value Storage Mnesia Mnesia ist ein vollwertiges eingebautes Datenbanksystem DBMS Ahnlich wie bei ETS werden Erlang Terme gespeichert Mnesia bietet eine Verteilung uber mehrere Erlang Knoten Nodes die Speicherung im RAM oder auf der Festplatte mehrere Tabellen und atomare Transaktionen Ausserdem besitzt die Standardbibliothek machtige Socket Funktionen fur TCP und UDP und viele andere kleine Werkzeugfunktionen fur Listen Binardaten etc Beispiele BearbeitenBerechnung der Fakultat Bearbeiten Dieser Code muss in der Datei test erl stehen da das Modul Zeile 1 ebenfalls test heisst Die Export Direktive macht die Funktion fac auch von ausserhalb aufrufbar Die beiden Zeilen die mit fac beginnen werden clauses genannt Im C Jargon konnte man die Nutzung von clauses mit dem Uberladen vergleichen Bei jedem Aufruf einer Funktion wird der Reihe nach durchprobiert zu welchem clause die gegebenen Argumente passen match wobei der erste passende clause genutzt wird Der letzte clause endet mit alle vorherigen mit module test export fac 1 fac tr 1 nicht endrekursive Version fac 0 gt 1 fac N gt N fac N 1 endrekursive Version tail recursive fac tr 0 Yet gt Yet fac tr N Yet gt fac tr N 1 Yet N Hilfsfunktion fac tr N gt fac tr N 1 Quicksort Bearbeiten quicksort List Sort a list of items module quicksort export qsort 1 qsort gt qsort Pivot Rest gt qsort X X lt Rest X lt Pivot Pivot qsort Y Y lt Rest Y gt Pivot Im obigen Beispiel wird die Funktion qsort rekursiv aufgerufen bis nichts mehr zum Sortieren vorhanden ist Der Ausdruck X X lt Rest X lt Pivot kann interpretiert werden als wahle 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 Praktisch bedeutet dies dass eine Liste zuruckgegeben wird die alle Elemente aus Rest enthalt die kleiner als Pivot sind aber nicht notwendigerweise nach Grosse geordnet sind Eine kleine verteilte Anwendung die auf zwei Erlang Prozessen lauft Bearbeiten module ping pong export ping 0 pong 0 ping gt Receiver spawn ping pong pong Receiver self ping receive pong gt ping end pong gt receive Sender ping gt Sender pong end Kommuniziert wird per Message Passing Der Operator sendet eine Nachricht die asynchron ubertragen wird d h der Prozess wartet nicht bis die Nachricht empfangen wurde Mnesia Bearbeiten Eintrage in der Mnesia Datenbank siehe oben sind Erlang Records Records sind syntaktischer Zucker zum einfacheren Umgang mit grossen Tupeln sprich Tupel nach dem Muster recordname key feld1 feld2 feld3 Das erste Feld im Tupel muss der Tabellenname sein bei Records ist das erste Feld im generierten Tupel der Name des Records das zweite Feld ist die fur relationale Datenbanken typische eindeutige ID in der jeweiligen Tabelle Beispiel Shell Sitzung Record definieren rd table1 field1 field2 Mnesia Instanz erzeugen Struktur im aktuellen Verzeichnis mnesia create schema node Mnesia Server starten mnesia start Definiere Tabelle table1 mit den Feldern field1 und field2 Wie der Record mnesia create table table1 attributes record info fields table1 Definiere Transaktion die einen Datensatz einfugt F fun gt Record table1 field1 helloWorld field2 xyz mnesia write Record end Das gleiche wie F fun gt Record table1 helloWorld xyz mnesia write Record end Fuhre atomare Transaktion aus mnesia transaction F Query Transaktion qlc q kompiliert eine Listenkomprehension qlc e fuhrt sie aus G fun gt Query qlc q X X lt mnesia table table1 qlc e Query end Fuhre Transaktion aus ListOfTuples ist eine Liste der Tupel die die Anfrage erfullen atomic ListOfTuples mnesia transaction G mnesia stop Prominente Anwendungen BearbeitenAnyDesk Fernwartungssoftware CouchDB Dokumentenorientierte Datenbank ejabberd XMPP Server RabbitMQ AMQP Messaging Server Riak Datenbank SimpleDB Datenbank der Amazon Web Services WhatsApp Backend Mobilfunk Messenger Wings 3D Modeler YXA SIP Server Zotonic CMS FrameworkKommerzieller Einsatz von Erlang BearbeitenErlang ist eine der wenigen funktionalen Programmiersprachen die auch in der Industrie eingesetzt werden Zu den bekannten Anwendern gehoren Alteon Bluetail Nortel verteiltes fehlertolerantes E Mail System SSL Beschleuniger AnyDesk Fernwartungssoftware Cellpoint Ortsbasierte mobile Dienste Corelatus SS7 signalling black box Ericsson AXD301 Switch Facebook ejabberd based Chat Engine Finnish Meteorological Institute Datenerfassung und Echtzeituberwachung GitHub fur RPC 5 IN Switch Solutions ePIN elektronisches Zahlungssystem Mobilearts GSM und UMTS Dienste Motivity Telecom SS7 ISDN Gateways Netkit Solutions Netzwerktechnikuberwachung amp Operations Support Systeme Process one Kommerzialisiert den ejabberd XMPP Server Telekom Deutschland Mobilfunkbetreiber Telia Telekomdienstleister Tenerife Skunkworks Online Pokerserver Clustrx HPC OS 6 WhatsApp Mobiler Messenger via XMPP 7 Tambur io WebSocket Messaging Gateway als Software as a Service 8 Discord Echtzeit Kommunikation 9 Literatur BearbeitenPavlo Baron Erlang OTP Plattform fur massiv parallele und fehlertolerante Systeme Open Source Press Munchen 2012 ISBN 978 3 941841 45 1Weblinks Bearbeiten nbsp Commons Erlang Programmiersprache Sammlung von Bildern Videos und Audiodateien www erlang org Homepage von Open Source Erlang erlangcentral org Erlang Community Seite Tim Pritlove Erlang Podcast auf CRE Marz 2008 24c3 Konzeptionelle Einfuhrung in Erlang Video Programming Rules and Conventions yaws hyber org Homepage des Yaws WebserversEinzelnachweise Bearbeiten Release 26 1 2 12 Oktober 2023 abgerufen am 19 Oktober 2023 Interview mit Joe Armstrong auf CIO com au Memento des Originals vom 19 Juni 2009 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www cio com au englisch erlang org bert rpc org github com erlang solutions com Memento vom 30 Dezember 2011 im Internet Archive blog whatsapp com tambur io Matt Nowack Using Rust to Scale Elixir for 11 Million Concurrent Users 17 Mai 2019 abgerufen am 15 Oktober 2020 englisch Normdaten Sachbegriff GND 4324177 3 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Erlang Programmiersprache amp oldid 233083430