Zum Inhalt springen

Erlang (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie
{{#if:
Datei:Erlang logo.png
| {{#if: | {{#if:funktional, nebenläufig, prädikativ| {{#if:1987| {{#if:Joe Armstrong, Robert Virding, Mike Williams| {{#if:Ericsson| {{#if:| {{#if:| {{#if:dynamisch, stark| {{#if:Erlang| {{#if:| {{#if:| {{#if:Prolog| {{#if:Clojure, Scala, Elixir| {{#if:Windows, Linux, macOS, Solaris| {{#if:Apache Software License 2.0| {{#if:www.erlang.org|
{{#if: Erlang | Erlang | {{#invoke:WLink|getArticleBase}} }}
colspan="2" class="notheme" style="text-align:center; background-color:#Vorlage:Standardfarbe;" |
Datei:Erlang logo.png
|
 {{#if: {{#invoke:Wikidata|claim|P154}} |
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
 }}

}}

{{{Screenshot}}}{{#if: Funktionale Programmiersprache |
Funktionale Programmiersprache }}|

}}

Basisdaten
Paradigmen: funktional, nebenläufig, prädikativ

}}

Erscheinungsjahr:
 {{#if: {{#invoke:Wikidata|claim|P571}} | 
Erscheinungsjahr: claim|P571|references=ja}}
 }}

}}

Designer: Joe Armstrong, Robert Virding, Mike Williams |
 {{#if: {{#invoke:Wikidata|claim|P287}} | 
Designer: claim|P287|parameter=link|references=ja|list=, }}
 }}

}}

Entwickler: Ericsson |
 {{#if: {{#invoke:Wikidata|claim|P178}} | 
Entwickler: claim|P178|parameter=link|references=ja|list=, }}
 }}

}}

Aktuelle Version:  () |

{{#if: {{#invoke:Wikidata|claim|P348}} |

Aktuelle Version {{#invoke:Wikidata|claim|P348|references=ja}}{{#if: {{#invoke:Wikidata|claim|Version|qualifier=P577}} | ({{#invoke:Wikidata|claim|Version|qualifier=P577}})}}}}

}}

Aktuelle Vorabversion:  ()

}}

Typisierung: dynamisch, stark

}}

Wichtige Implementierungen: Erlang

}}

Dialekte:

}}

Standardisierungen:

}}

Beeinflusst von: Prolog |
 {{#if: {{#invoke:Wikidata|claim|P737}} | 
Beeinflusst von: claim|P737|parameter=link|references=ja|list=, }}
 }}

}}

Beeinflusste: Clojure, Scala, Elixir

}}

Betriebssystem: Windows, Linux, macOS, Solaris |
 {{#if: {{#invoke:Wikidata|claim|P306}} | 
Betriebssystem: claim|P306|parameter=link|references=ja|list=, }}
 }}

}}

Lizenz: Apache Software License 2.0 |
 {{#if: {{#invoke:Wikidata|claim|P275}} | 
Lizenz: claim|P275|parameter=link|references=ja|list=, }}
 }}

}}

www.erlang.org |
 {{#if: {{#invoke:Wikidata|claim|P856}} | 
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link}}}}
 }}

}}

Datei:LYME software bundle.svg
Das LYME-Softwarepaket gründet auf Erlang und stellt eine Alternative zum Softwarepaket LAMP dar.

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, der Name kann aber auch für Ericsson language stehen.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20090619203619

      | {{#ifeq: 20090619203619 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20090619203619}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-04-23 09:11:55 InternetArchiveBot | 2023-04-23 09:11:55 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20090619203619}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-04-23 09:11:55 InternetArchiveBot | 2023-04-23 09:11:55 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-04-23 09:11:55 InternetArchiveBot | 2023-04-23 09:11:55 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }} (Memento{{#if: {{#if: 2023-04-23 09:11:55 InternetArchiveBot | 2023-04-23 09:11:55 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Interview mit Joe Armstrong auf CIO.com.au | {{#invoke:WLink|getEscapedTitle|Interview mit Joe Armstrong auf CIO.com.au}} | {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}} }}  
                 }}}}}}}}{{#if:2023-04-23 09:11:55 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20090619203619|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.cio.com.au/article/307418/-z_programming_languages_erlang}}
    || {{#if:  || }}
  }}{{#if: Interview mit Joe Armstrong auf CIO.com.au
    | {{#if: {{#invoke:WLink|isBracketedLink|Interview mit Joe Armstrong auf CIO.com.au}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.cio.com.au/article/307418/-z_programming_languages_erlang%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.cio.com.au/article/307418/-z_programming_languages_erlang%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.cio.com.au/article/307418/-z_programming_languages_erlang }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }} (englisch)</ref>

Eigenschaften

Spricht 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 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, bezeichnete sie am liebsten als Concurrency Oriented Programming Language (COPL), was in etwa als auf Nebenläufigkeit ausgerichtete Programmiersprache zu übersetzen 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 nützlich für die nebenläufige Programmierung ist.

Erlang ist eine der wenigen funktionalen Programmiersprachen, die in der Industrie eingesetzt werden. Insbesondere Telefon- und Netzwerkausrüster setzen Erlang wegen seiner guten Skalierbarkeit und Parallelität 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<ref>erlang.org</ref> wurde das allgemeine Binärformat BERT und ein darauf aufbauendes Remote-Procedure-Call-Protokoll entwickelt.<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20091024121028

      | {{#ifeq: 20091024121028 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20091024121028}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-19 04:25:21 InternetArchiveBot | 2023-12-19 04:25:21 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20091024121028}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-19 04:25:21 InternetArchiveBot | 2023-12-19 04:25:21 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-12-19 04:25:21 InternetArchiveBot | 2023-12-19 04:25:21 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }} (Memento{{#if: {{#if: 2023-12-19 04:25:21 InternetArchiveBot | 2023-12-19 04:25:21 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: bert-rpc.org | {{#invoke:WLink|getEscapedTitle|bert-rpc.org}} | {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/}} }}  
                 }}}}}}}}{{#if:2023-12-19 04:25:21 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20091024121028|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://bert-rpc.org/}}
    || {{#if:  || }}
  }}{{#if: bert-rpc.org
    | {{#if: {{#invoke:WLink|isBracketedLink|bert-rpc.org}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://bert-rpc.org/%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://bert-rpc.org/%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://bert-rpc.org/ }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>

Mitgelieferte Software

Mit der Erlang-Distribution werden viele nützliche Zusatzwerkzeuge mitgeliefert, die die Programmierung von Anwendungen deutlich erleichtern:

OTP
Die Open Telecom Platform erleichtert das Bauen von wirklich stabilen, parallelen Anwendungen mit zusätzlichen Eigenschaften wie das dynamische Austauschen des Codes während der Laufzeit. OTP ist eine Bibliothek, die verschiedene Behaviors (Verhalten) zur Verfügung stellt, die die Funktionalität 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 für Erlang-Terme (Tupel, Listen, Atome, also eingebaute Datentypen), die eine große Skalierbarkeit und eine kleine Zugriffszeit bieten. Die grundlegenden Operationen sind insert und lookup. Genutzt wird eine Schlüssel-Wert-Struktur (Key-Value-Storage).
Mnesia
Mnesia ist ein vollwertiges, eingebautes Datenbanksystem (DBMS). Ähnlich wie bei ETS werden Erlang-Terme gespeichert. Mnesia bietet eine Verteilung über mehrere Erlang-Knoten (Nodes), die Speicherung im RAM oder auf der Festplatte, mehrere Tabellen und atomare Transaktionen.

Außerdem besitzt die Standardbibliothek mächtige Socket-Funktionen für TCP und UDP und viele andere kleine Werkzeugfunktionen für Listen, Binärdaten etc.

Beispiele

Berechnung der Fakultät

{{#if: Fakultät (Mathematik)|{{#ifexist:Fakultät (Mathematik)|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

Dieser Code muss in der Datei test.erl stehen, da das Modul (Zeile 1) ebenfalls test heißt. Die Export-Direktive macht die Funktion fac() auch von außerhalb aufrufbar.

Die beiden Zeilen, die mit fac( beginnen, werden clauses genannt. Im C++-Jargon könnte man die Nutzung von clauses mit dem Überladen 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 ;. <syntaxhighlight lang="erlang"> -module(test). -export([fac/1,fac_tr/1]).

%%% nicht-endrekursive Version fac(0) -> 1; fac(N) -> N * fac(N-1).

%%% endrekursive Version (tail recursive) fac_tr(0,Yet) -> Yet; fac_tr(N,Yet) -> fac_tr(N-1,Yet*N).

%% Hilfsfunktion fac_tr(N) -> fac_tr(N,1). </syntaxhighlight>

Quicksort

{{#if: Quicksort|{{#ifexist:Quicksort|

|{{#if: |{{#ifexist:{{{2}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{2}}}{{#if: ||{{{titel2}}}}}]]{{#if: |{{#ifexist:{{{3}}}| und [[{{{3}}}{{#if: ||{{{titel3}}}}}]]|}}|}}

|{{#if: |{{#ifexist:{{{3}}}|

→ Haupt{{#if:|seite|artikel}}: [[{{{3}}}{{#if: ||{{{titel3}}}}}]]

|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}

<syntaxhighlight lang="erlang"> %% 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]).

</syntaxhighlight>

Im obigen Beispiel wird die Funktion qsort rekursiv aufgerufen, bis nichts mehr zum Sortieren vorhanden ist.

Der Ausdruck

<syntaxhighlight lang="erlang"> [ X || X <- Rest, X < Pivot] </syntaxhighlight>

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). Praktisch bedeutet dies, dass eine Liste zurückgegeben wird, die alle Elemente aus Rest enthält, die kleiner als Pivot sind (aber nicht notwendigerweise nach Größe geordnet sind).

Eine kleine verteilte Anwendung, die auf zwei Erlang-Prozessen läuft

<syntaxhighlight lang="erlang"> -module(ping_pong). -export([ping/0, pong/0]).

ping() ->

   Receiver = spawn(ping_pong, pong, []),
   Receiver ! {self(), ping},
   receive
       pong ->
           ping
   end.

pong() ->

   receive
       {Sender, ping} ->
           Sender ! pong
   end.

</syntaxhighlight>

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.

Mnesia

Einträge in der Mnesia-Datenbank (siehe oben) sind Erlang-Records (Records sind syntaktischer Zucker zum einfacheren Umgang mit großen 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 für relationale Datenbanken typische, eindeutige ID in der jeweiligen Tabelle. Beispiel:

<syntaxhighlight lang="erlang"> %% 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 einfügt. F = fun() -> Record = #table1{ field1=helloWorld, field2=xyz }, mnesia:write(Record) end. % Das gleiche wie % F = fun() -> Record = {table1, helloWorld,xyz}, mnesia:write(Record) end.

% Führe atomare Transaktion aus. mnesia:transaction(F).

% Query-Transaktion. qlc:q() kompiliert eine Listenkomprehension, qlc:e() führt sie aus. G = fun() -> Query = qlc:q([X || X <- mnesia:table(table1)]), qlc:e(Query) end.

% Führe Transaktion aus. ListOfTuples ist eine Liste der Tupel, die die Anfrage erfüllen {atomic, ListOfTuples} = mnesia:transaction(G).

mnesia:stop(). </syntaxhighlight>

Prominente Anwendungen

Kommerzieller Einsatz von Erlang

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

  • Alteon/Bluetail/Nortel (verteiltes, fehlertolerantes E-Mail-System, SSL-Beschleuniger)
  • AnyDeskFernwartungssoftware
  • 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 (für RPC)<ref>github.com</ref>
  • 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)
  • Telekom Deutschland (Mobilfunkbetreiber)
  • Telia (Telekomdienstleister)
  • Tenerife Skunkworks (Online-Pokerserver)
  • Clustrx (HPC-OS)<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20111230022501
      | {{#ifeq: 20111230022501 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20111230022501}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20111230022501}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: erlang-solutions.com | {{#invoke:WLink|getEscapedTitle|erlang-solutions.com}} | {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20111230022501|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.erlang-solutions.com/section/113/}}
    || {{#if:  || }}
  }}{{#if: erlang-solutions.com
    | {{#if: {{#invoke:WLink|isBracketedLink|erlang-solutions.com}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.erlang-solutions.com/section/113/%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.erlang-solutions.com/section/113/%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.erlang-solutions.com/section/113/ }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>
      | {{#ifeq: 20150929201136 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20150929201136}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2024-12-10 09:31:08 InternetArchiveBot | 2024-12-10 09:31:08 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20150929201136}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2024-12-10 09:31:08 InternetArchiveBot | 2024-12-10 09:31:08 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2024-12-10 09:31:08 InternetArchiveBot | 2024-12-10 09:31:08 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }} (Memento{{#if: {{#if: 2024-12-10 09:31:08 InternetArchiveBot | 2024-12-10 09:31:08 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: tambur.io | {{#invoke:WLink|getEscapedTitle|tambur.io}} | {{#invoke:Webarchiv|getdomain|http://www.tambur.io/}} }}  
                 }}}}}}}}{{#if:2024-12-10 09:31:08 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20150929201136|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.tambur.io/}}
    || {{#if:  || }}
  }}{{#if: tambur.io
    | {{#if: {{#invoke:WLink|isBracketedLink|tambur.io}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.tambur.io/%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.tambur.io/%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.tambur.io/ }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>
          | )
          | {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users}}%7C%7C}}}}{{#if:Using Rust to Scale Elixir for 11 Million Concurrent Users|{{#if:{{#invoke:WLink|isValidLinktext|1=Using Rust to Scale Elixir for 11 Million Concurrent Users|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: | {{{hrsg}}}{{#if: 2019-05-17|,|{{#if: 2025-04-18 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: 2019-05-17| {{#if:{{#invoke:DateTime|format|2019-05-17|noerror=1}}
            |{{#invoke:DateTime|format|2019-05-17|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2019-05-17|class=Zitationswartung}} }}{{#if: |,|{{#if: 2025-04-18 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2025-04-18 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:2019-05-17|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:175498||(?)}}}}}}{{#if: 2025-04-18|;}}}}{{#if: 2025-04-18| {{#if:2019-05-17{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2025-04-18 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2025-04-18|class=Zitationswartung}} }} {{#invoke:DateTime|format|2025-04-18|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:2019-05-17{{#if: 2025-04-18 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:en|en|de}}|de||
          {{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2019-05-17{{#if: 2025-04-18 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
       | {{#if:  | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
      | {{#if:{{#invoke:URLutil|isWebURL|https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
       | {{#if:{{#invoke:URLutil|isWebURL|https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
       | {{#if:  | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
      | {{#if:{{#invoke:URLutil|isWebURL|https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users
       | {{#if:{{#invoke:URLutil|isWebURL|https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>

Literatur

  • Pavlo Baron: Erlang/OTP – Plattform für massiv-parallele und fehlertolerante Systeme. Open Source Press, München 2012, ISBN 978-3-941841-45-1

Weblinks

[{{canonicalurl:Commons:Category:{{#if:Erlang (programming language)|Erlang (programming language)|Erlang (Programmiersprache)}}|uselang=de}} Commons: {{#if:Erlang (Programmiersprache)|Erlang (Programmiersprache)|{{#if:Erlang (programming language)|Erlang (programming language)|{{#invoke:WLink|getArticleBase}}}}}}]{{#switch:1

|X|x= |0|-= |S|s= – Sammlung von Bildern |1|= – Sammlung von Bildern{{#if:

    | {{#switch: {{#invoke:TemplUtl|faculty|1}}/{{#invoke:TemplUtl|faculty|1}}
        |1/=  und Videos
        |1/1=, Videos und Audiodateien
        |/1=  und Audiodateien}}
    | , Videos und Audiodateien
  }}

|#default= – }}{{#if: Erlang (programming language)

   | {{#ifeq: {{#invoke:Str|left|erlang (programming language)|9}} 
       | category: 
| FEHLER: Ohne Category: angeben!}}}}

Vorlage:Wikidata-Registrierung

Einzelnachweise

<references />

{{#ifeq: s | p | | {{#if: 4324177-3 | |

}} }}{{#ifeq:||{{#if: | [[Kategorie:Wikipedia:GND fehlt {{#invoke:Str|left|{{{GNDCheck}}}|7}}]] }}{{#if: | {{#if: | | }} }} }}{{#if: | {{#ifeq: 0 | 2 | | }} }}{{#if: | {{#ifeq: 0 | 2 | | }} }}{{#ifeq: s | p | {{#if: 4324177-3 | | {{#if: {{#statements:P227}} | | }} }} }}{{#ifeq: s | p | {{#if: 4324177-3 | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P227}} | | }} }} }} }}{{#ifeq: s | p | {{#if: | | {{#if: {{#statements:P244}} | | }} }} }}{{#ifeq: s | p | {{#if: | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P244}} | | }} }} }} }}{{#ifeq: s | p | {{#if: | | {{#if: {{#statements:P214}} | | }} }} }}{{#ifeq: s | p | {{#if: | {{#if: {{#invoke:Wikidata|pageId}} | {{#if: {{#statements:P214}} | | }} }} }} }}Vorlage:Wikidata-Registrierung