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

    Udlændinge- og Integrationsministeriet

    It-projektleder med international sigte til Koncern IT

    Københavnsområdet

    Økonomistyrelsen

    Udviklere til statens nye AI-platform

    Københavnsområdet

    Softværket

    Bliv AI Lead i Softværket

    Sydjylland

    Annonceindlæg fra XFlow

    Digitalisering kræver mere end digitale blanketter

    Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.

    Navnenyt fra it-Danmark

    WITRICS A/S har pr. 1. juli 2026 ansat Tim Meicker som Sales & Marketing Manager. Han skal især beskæftige sig med marketingstrategi, salgsaktiviteter, samt virksomhedens kommercielle vækst. Han kommer fra en stilling som projektansat hos WITRICS A/S. Han er uddannet BA (hons) Strategic Management og MBA fra Syddansk Universitet. Nyt job

    Tim Meicker

    WITRICS A/S

    TDC Erhverv har pr. 1. maj 2026 ansat Peter Bjerregaard Harden som Senior Vice President (SVP), Enterprise Sales. Peter skal især beskæftige sig med at drive transformationen mod at blive en førende, kundecentreret partner inden for Cloud, Cyber og integrerede ICT-løsninger. Peter kommer fra en stilling som Country Manager hos Google Cloud Danmark. Peter er uddannet Cand. Merc (AU), HD, Organisation og Ledelse (CBS), Bestyrelsesuddannelse (CBS). Peter har tidligere beskæftiget sig med at opbygge Google Cloud i Danmark samt roller hos Microsoft, Salesforce og i management consulting. Nyt job
    Netip A/S har pr. 1. maj 2026 ansat Ida Hyllested Friis som Key Account Manager ved netIP's kontor i Thisted. Hun kommer fra en stilling som Key Account Manager hos Københavns erhvervshus. Nyt job
    Jakob Dirksen, SVP, Nordic Customer Delivery & Operations hos GlobalConnect, er pr. 1. maj 2026 forfremmet til EVP, Infrastructure Delivery & Operations. Han skal fremover især beskæftige sig med at lede Infrastructure Delivery & Operations, der har til opgave at drive og udvikle fibernetværket på tværs af virksomheden. Forfremmelse

    Jakob Dirksen

    GlobalConnect