Programmering med mindre kode

Funktionsprogrammeringssproget Erlang er udviklet af Ericsson. Med Erlang kan man reducere antallet af linier kode, køre distribuerede systemer på flere forskellige maskiner, få et bedre overblik og samtidig reducere antallet af udviklingstimer.

Erlang

Begrebet eller navnet Erlang kan betyde fire forskellige ting - men de har alligevel en sammenhæng. Agner Krarup Erlang var en dansk matematiker, der levede i 1878 til 1929. Erlang var en af opfinderne bag teorien om teletrafik og en kø-teori til brug i telefonnetværk. Erlang er også en måleenhed for intensiteten af trafik. Erlangs formel bruges til at beregne sandsynligheden for, at alle linier i et system er optagede. Til slut er Erlang et programmeringssprog udviklet af Ericsson, og det er denne Erlang, som resten af artiklen handler om.

Programmeringssproget Erlang blev oprindeligt udviklet af Ericsson for over ti år siden. Det skulle bruges til at kontrollere telefonomstillinger, men sproget kan også bruges til andre applikationer, hvor pålidelighed og hurtig udvikling af komplekse systemer er vigtigt.

-module(mathStuff).
-export([factorial/1, list_length/1]).

factorial(0) -> 1;                                    
factorial(N) when N > 0->
  N * factorial(N-1).

list_length(List) ->
  list_length(List,0).

list_length([El | Rest],N) ->
  list_length(Rest,N+1);
list_length([],N) -> N.

Et eksempel på Erlang-kode.

Erlang er et funktionsprogrammeringssprog, som har matematiske egenskaber. Fordelene ved at bruge funktionsprogrammeringssprog, frem for eksempelvis objekt-orienterede sprog eller deklarative sprog, er blandt andet hurtig udvikling, reduceret vedligeholdelse, reduceret kompleksitet og bedre overblik.

Andre kendetegn ved Erlang er, at man kan foretage for eksempel flere tusinde telefonopkald samtidig (concurrency), fejl i en applikation kan opdages og rettes uden at det forstyrrer andre applikationer (robustness) og at systemet kan være spredt over flere computere (distribution). Distributionen af processer gør, at udvikleren kan koncentrere sig om de problemer, der skal løses, og derved bliver der meget færre linier kode sammenlignet med sprog som C, C++ og Java.

Opbygning

Erlang findes både i en gratis open source version og i en licensversion. På websitet www.erlang.org kan man se Erlangs kildekode samt ekstra kode med dokumentation. Open source Erlang er blevet frigivet for at flere uden for Ericsson skal få kendskab til det. I licensversionen af Erlang er service fra Ericsson inkluderet i prisen. Ericsson benytter Erlang meget i den interne udvikling af systemer.

For at kunne foretage mange ting simultant, er Erlang opbygget således, at en proces har sin egen dynamiske hukommelse. To processer kommunikerer sammen ved at sende meddelelser til hinanden. En indbygget funktion til fejldetektering gør det muligt at opdage fejl inden i og imellem processer, og hvis et program fejler kan de fejlbehæftede programdele genstartes. En kørende proces kan også opdateres. Dette kan gøres ved at to kompilerede versioner af det samme Erlang modul kan køre samtidig. Derved kan man opdatere det ene modul, uden at stoppe applikationen.

Der findes ingen globale variable i Erlang, og en variables værdi kan ikke redefineres. Udviklere skal ikke deklarere datatyper. I Erlang benytter man meget rekursive programmer, på grund af den matematiske egenskab rekursive funktioner har. Man får derved kortere og lettere forståelige programmer, og det er lettere at verificere og bevise, at programmet er korrekt.

Virtuel maskine
Erlangkode bliver ligesom Javakode kompileret til et sæt af instruktioner, der fortolkes af en virtuel maskine. Det gør Erlangkoden platformsuafhængig. Kun run-time systemet skal flyttes, for at et program kan køre på en anden maskine. Det gør det muligt at køre et distribueret system på flere forskellige maskiner. En mindre ulempe ved brug af virtuelle maskiner er, at hastigheden, hvormed koden eksekveres, reduceres.

Erlang/OTP

I 1996 fandt Ericsson ud af, at der skulle mere til end et programmeringssprog for at opfylde nye krav om nedsat udviklingstid og mere åbenhed, og derfor blev OTP fremstillet. OTP står får Open Telecom Platform, og består af et Erlang run-time system, et antal komponenter og et sæt af designprincipper til Erlang-programmer. Da Erlang er den grundlæggende del af OTP, benyttes betegnelsen Erlang/OTP oftest i stedet for kun OTP. Man kan sige at Erlang/OTP er åben på tre måder: Åben for forskellige platforme, åben for forskellige sprog og åben for forskellige protokoller som HTTP, SNMP, IIOP, FTP og TCP/IP.

Komponenterne i Erlang/OTP kan deles i seks kategorier:
1. Grundlæggende applikationer: Kernel, standard-bibliotek og compiler.
2. Operation og vedligeholdelse: For eksempel en SNMP-agent.
3.Grænseflade og kommunikation: Understøttelse af standardprotokoller som ASN.1 og HTTP, et grafisk system og grænseflade til C og Java.
4. Databaseadministration: En distribueret database, Mnesia, og tilhørende funktionalitet.
5. CORBA tjenester og IDL: En Erlang-implementation af både CORBA (en IDL compiler) og et antal CORBA-tjenester.
6. Værktøjer: Debugger, run-time tracing og andre hjælpe-værktøjer.

Erlang/OTP bruges i flere af Ericssons produkter som AXD301 (ATM-Switch), DWOS (Digital Wireless Office System), A910 (Access 910) og GPRS. Flere andre firmaer som One2One og Nortel Networks bruger også Erlang/OTP.

Forsvarsministeriets Materiel- og Indkøbsstyrelse

SAP logistikproces specialist til Forsvarsministeriet Materiel- og indkøbsstyrelsen

Midtjylland

KMD A/S

Cloud-løsningsarkitekt

Københavnsområdet

Netcompany A/S

Test Consultant

Københavnsområdet

Event: SAP Excellence Day 2026

It-løsninger | Nordhavn

Få konkrete erfaringer med S/4HANA, automatisering og AI i praksis. Hør hvordan danske virksomheder realiserer gevinster og etablerer effektive SAP-løsninger. Vælg fysisk deltagelse hos SAP eller deltag digitalt.

24. februar 2026 | Gratis deltagelse

Navnenyt fra it-Danmark

Danske Spil har pr. 1. oktober 2025 ansat Jesper Krogh Heitmann som Brand Manager for Oddset. Han skal især beskæftige sig med at udvikle og drive brandets strategi og sikre en rød tråd på tværs af alle platforme og aktiviteter. Han kommer fra en stilling som Marketing & Communications Manager hos Intellishore. Nyt job

Jesper Krogh Heitmann

Danske Spil

Netip A/S har pr. 1. november 2025 ansat Laura Bøjer som Consultant, GRC & Cybersecurity på afd. Thisted. Hun kommer fra en stilling som Assistant Consultant hos PwC i Hellerup. Hun er uddannet med en kandidat i Business Administration & Information System på Copenhagen Business School. Nyt job

Laura Bøjer

Netip A/S

EG Danmark A/S har pr. 1. december 2025 ansat Søren Jermiin Olesen som Senior Product Manager. Han skal især beskæftige sig med finans- og debitorstyring i det offentlige med ansvar for økonomistyringssystemet EG ØS Indsigt. Han kommer fra en stilling som Product Manager hos KMD A/S. Han er uddannet Cand. oecon. Han har tidligere beskæftiget sig med økonomi bl.a. i Aarhus Kommune og været med til at udvikle NemØkonom før og efter salget til KMD. Nyt job

Søren Jermiin Olesen

EG Danmark A/S

Netip A/S har pr. 15. september 2025 ansat Jimmi Overgaard som Key Account Manager ved netIP's kontor i Viborg. Han kommer fra en stilling som Sales Executive hos Globalconnect A/S. Nyt job

Jimmi Overgaard

Netip A/S