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.

Læses lige nu
    Computerworld Events

    Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

    Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
    Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
    Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
    Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

    Andre events | Kongens Lyngby

    Årets CIO 2026

    Vi samler Danmarks stærkeste digitale ledere til en dag med viden og visioner. Årets CIO 2026 fejrer 21 års jubilæum, og NEXT CIO sætter spotlight på næste generation. Deltag og bliv inspireret til at forme fremtidens strategi og eksekvering.

    Digital transformation | Hellerup

    Roundtable: Stærkere data og skarpere beslutninger i en AI-æra

    AI kræver data, ledelsen kan stole på. Computerworld samler digitale ledere til en fortrolig rundbordssamtale om datagrundlag, beslutninger og skalering af AI i organisationen. Få konkrete erfaringer og nye perspektiver. Ansøg om en plads.

    Sikkerhed | Klampenborg

    CISO Challenges 2026 - København

    Computerworld stiller skarpt på, hvordan du som CISO eller sikkerhedsansvarlig, kan leve op til alle krav om sikkerhed og risikostyring, gennem dialog og erfaringsudveksling. Gennem både korte oplæg og rundbordsdiskussioner, vil du blive klædt på...

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Pinksky ApS har pr. 1. maj 2026 ansat Dan Toft, 29 år,  som Rådgivende konsulent, Partner. Han skal især beskæftige sig med digitalisering med Microsoftplatformen. Han kommer fra en stilling som Microsoft 365 & SharePoint Specialist hos Evobis ApS. Han er uddannet datamatiker. Han har tidligere beskæftiget sig med Microsoft 365 og SharePoint udvikling. Nyt job

    Dan Toft

    Pinksky ApS

    Immeo har pr. 16. marts 2026 ansat Honey Arora som Senior Manager. Han kommer fra en stilling som Data Product Owner hos Centrica Energy. Nyt job

    Honey Arora

    Immeo

    SAP SuccessFactors Partner Pentos har pr. 1. marts 2026 ansat Plamena Cherneva som Seniorkonsulent indenfor SuccessFactors HCM. Hun skal især beskæftige sig med konfiguration og opsætning af SuccessFactors suiten, samt udvikle smarte løsninger til mellemstore danske virksomheder. Hun kommer fra en stilling som løsningsarkitekt indenfor HR IT hos LEO Pharma. Hun har tidligere beskæftiget sig med HR procesdesign, stamdata og onboarding. Nyt job

    Plamena Cherneva

    SAP SuccessFactors Partner Pentos