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

    Annonce

    Navnenyt fra it-Danmark

    EG Danmark A/S har pr. 17. august 2026 ansat Michael Banegas Madsen, 32 år,  som Senior Account Executive. Han skal især beskæftige sig med Ansvar for nysalg og vækst af eksisterende kunder, samt opbygning af kunderelationer på tværs af Jylland og Fyn. Han kommer fra en stilling som Senior Talent Attraction Specialist hos Danske Commodities A/S. Han er uddannet Kandidat i Corporate Communication fra Aarhus BSS. Han har tidligere beskæftiget sig med 6 års erfaring med rekruttering af tech-profiler i bl.a. Danske Commodities. Nyt job

    Michael Banegas Madsen

    EG Danmark A/S

    Arctic Wolf Networks har pr. 3. august 2026 ansat Johnny Krogsboll som Head of Sales Engineering for Norden.Med base i Stockholm får han ansvaret for Arctic Wolfs samlede Sales Engineering-organisation i den nordiske region.<br /><br />Johnny Krogsboll skal være med til at udbygge Arctic Wolfs tilstedeværelse i Norden og hjælpe virksomheder og organisationer med at stå stærkere over for et stadig mere komplekst cybertrusselsbillede. Det skal blandt andet ske i tæt samarbejde med Arctic Wolfs vigtigste kanalpartnere i regionen.<br /><br />Gennem sin karriere har Johnny Krogsboll arbejdet med og rådgivet virksomheder hos blandt andre Hewlett-Packard, Trend Micro og Palo Alto Networks med fokus på at skabe konkret værdi af deres teknologiinvesteringer. Nyt job

    Johnny Krogsboll

    Arctic Wolf Networks

    Netip A/S har pr. 17. august 2026 ansat Jesper U. Sørensen som Seniorkonsulent ved netIP's kontor i Esbjerg. Han kommer fra en stilling som Chief Technology Officer hos NetSec ApS, hvor han også var partner. Nyt job
    IFS Danmark A/S har pr. 1. november 2026 ansat Emma Karlsson som Solution Architect. Emma skal især beskæftige sig med at forstå kundernes behov og vise, hvordan løsninger fra IFS kan skabe værdi for dem. Emma kommer fra en stilling som Industry Lead Solution Engineer & AI Champion hos Oracle. Emma er uddannet MSc Industrial Engineering and Management, MBA. Emma har tidligere beskæftiget sig med ERP-systemer på tværs af industrier, forretningsprocesser, implementering og presales. Nyt job

    Emma Karlsson

    IFS Danmark A/S