Erlang (programmeertaal)
Erlang | ||||
---|---|---|---|---|
Paradigma | functioneel, gedistribueerd | |||
Verschenen | 1986 | |||
Ontworpen door | Ericsson | |||
Ontwikkeld door | Ericsson | |||
Huidige versie | 27.1.2[1] 17 oktober 2024 | |||
Typesysteem | dynamisch, sterk | |||
Beïnvloed door | Prolog | |||
Invloed op | Scala, Elixir | |||
Besturingssysteem | Multiplatform | |||
Licentie | aangepaste MPL | |||
Bestandsextensies | erl | |||
Website | (en) Projectpagina | |||
|
Erlang is een concurrente, declaratieve programmeertaal en runtime-systeem dat geschikt is voor alle toepassingen. De sequentiële subset van Erlang is een functionele programmeertaal met strikte evaluatie, onveranderbare datastructuren en dynamische typering. Erlang is ontwikkeld door Ericsson voor gebruik in telecommunicatiehardware en is ontworpen om gedistribueerde, fout-tolerante, soft-realtime- en non-stoptoepassingen te ondersteunen.
De naam is afkomstig van Agner Erlang, een Deense ingenieur naar wie ook de eenheid erlang genoemd is. Bovendien is het de afkorting van Ericsson language (Ericssontaal).
Functionele taal
[bewerken | brontekst bewerken]Code in Erlang ziet er zo uit:
-module(fact).
-export([fac/1]).
fac(0) -> 1;
fac(N) where N > 0 -> N * fac(N-1).
Hieronder een voorbeeld van 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]).
Het bovenstaande voorbeeld roept de functie qsort
recursief aan tot er niets meer is om te sorteren. De uitdrukking [ X || X <- Rest, X < Pivot]
kan gelezen worden als "Kies alle X
waar X
een element is van Rest
en X
kleiner is dan Pivot
". Dit heeft een erg makkelijke manier om lijsten af te handelen tot gevolg. Aangezien elke booleaanse uitdrukking tussen twee verschillende types van gegevens kan geëvalueerd worden, is de evaluatie duidelijk - 1 < a
zal bijvoorbeeld true
opleveren.
Desondanks kan een vergelijkende functie gebruikt worden als de volgorde waarop Erlang haar antwoordwaarde baseert (true
of false
), gewijzigd moet worden. Als we bijvoorbeeld een geordende lijst willen waar a > 1
als waarde true
oplevert.
Concurrency-georiënteerde taal
[bewerken | brontekst bewerken]De belangrijkste sterkte van Erlang is ondersteuning voor concurrency. De taal heeft een kleine maar krachtige set van primitieven voor de aanmaak van processen en om de communicatie tussen deze processen te verzorgen. De positie van het proces is transparant (dit kan in hetzelfde lopende systeemproces zijn of op een andere computer).
Voorbeeldcode:
Pid = spawn(Mod, Func, Args) % voer functie Func uit als een nieuw erlang proces
Pid ! een_bericht % verzend bericht naar het proces (asynchroon)
receive % ontvang bericht verzonden naar dit proces
een_bericht -> doe_iets
end.
Erlang bevat mechanismes om foutmeldingen af te handelen en om een hoge beschikbaarheid van het hele systeem te verzekeren. Dynamische vervanging van code (hot swapping) wordt ook ondersteund.
Distributie
[bewerken | brontekst bewerken]Erlang werd vrijgegeven als open source om niet meer afhankelijk te zijn van één bron en om de taal bekender te maken. Het pakket dat de taal samen met bibliotheken en een real-time gedistribueerde database bevat is gekend onder de naam Open Telecom Platform, OTP. Ericsson biedt commerciële ondersteuning aan voor Erlang.
Sinds de uitgave van de opensourceversie in 1998 zijn bedrijven uit de hele wereld Erlang gaan gebruiken zoals Nortel en T-Mobile. Desondanks is de taal nog niet uitgegroeid tot een wijdverspreide en belangrijke programmeertaal.
Vanaf 2005 is Erlang in actieve ontwikkeling en worden er vaak nieuwe versies vrijgegeven. De taal is beschikbaar voor verscheidene Unix-varianten en Windows.
Voordelen
[bewerken | brontekst bewerken]- Ondersteuning voor concurrency is aanwezig (het is geen probleem om honderden of zelfs duizenden processen te creëren).
- Hoge productiviteit van de programmeur (een onderzoek door Ericsson beweert dat de productiviteit vier keer hoger is dan bij C).
- Eenvoudig aan te leren: Erlang is geen academische programmeertaal maar een praktische taal ontworpen voor gebruik door programmeurs bij Ericsson.
- Schaalbaarheid: grote systemen met miljoenen regels code werden al geschreven in Erlang.
Nadelen
[bewerken | brontekst bewerken]- Gebrek aan static typing: veel fouten worden vaak pas opgemerkt tijdens het draaien van de toepassing.
- Omdat het geen overheersende programmeertaal is, zijn er niet veel hulpmiddelen, boeken, bibliotheken en bekwame ontwikkelaars. Zo is ondersteuning voor grafische gebruikersinterfaces nog steeds in de beginfase.
Zie ook
[bewerken | brontekst bewerken]- ejabberd is een Jabber/XMPP-server geschreven in Erlang.
- Wings 3D is een 3D-modelleerder geschreven in Erlang.
- Yaws is een webserver geschreven in Erlang.
- Tsung is een benchmarkprogramma geschreven in Erlang.
- CouchDB is een opensource documentgebaseerd databasesysteem. De core is geschreven in Erlang.
- Lijst van programmeertalen
Externe links
[bewerken | brontekst bewerken]- (en) Wikibooks: Erlang Programming
- (en) Opensource-implementatie
- Een portaalsite voor de Erlang-gemeenschap
- (en) Gelicenseerde en ondersteunde implementatie.
- ↑ Release 27.1.2 (17 oktober 2024). Geraadpleegd op 18 oktober 2024.