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.




Brancheguiden
Brancheguide logo
Opdateres dagligt:
Den største og
mest komplette
oversigt
over danske
it-virksomheder
Hvad kan de? Hvor store er de? Hvor bor de?
KEYBALANCE A/S
Udvikling og salg af økonomisystemer samt CRM og MPS. Systemer til blandt andet maskinhandlere, vvs-branchen, vognmænd, låsesmede,handelsvirksomheder

Nøgletal og mere info om virksomheden
Skal din virksomhed med i Guiden? Klik her

Kommende events
Hybrid, on-premise eller public cloud. Bliv klogere på fremtidens datacenter

Få indblik i, hvordan du planlægger, designer og drifter dit datacenter, så det kan følge med virksomhedens vækst, støtter bæredygtighedsindsatsen og lever op til krav om effektiv datahåndtering.

25. februar 2025 | Læs mere


Identity Festival 2025

Er du klar til en dag, der udfordrer din forståelse af, hvad Identity & Access Management (IAM) kan gøre for din organisation? En dag fyldt med indsigt, inspiration og løsninger, der sætter kursen for, hvordan vi arbejder med IAM i de kommende år.

05. marts 2025 | Læs mere


Tech Transformation Trends 2025

Tech Transformation Trends er konferencen, hvor vi sætter fokus på de helt store Danske virksomheders digitale transformationer og måden de driver virksomhed på. Dagen byder på cases og vidensdeling, der vil give inspiration som kan være med til at løfte din strategi og navigere i fremtidens digitale landskab.

06. marts 2025 | Læs mere






White paper
Sikkerhed gjort enkelt: Beskyt din virksomhed direkte i browseren