Programmeringsspråk Erlang

Oversikt

Erlang er eit funksjonelt programmeringsspråk designa for å byggje skalerbare og feiltolerante system, spesielt innanfor området for samtidige, distribuerte applikasjonar. Det blei opprinneleg utvikla av Ericsson på slutten av 1980-talet for å lage robuste telekomsystem. Erlangs unike eigenskapar inkluderer støtte for lette prosessar, meldingsbasert samtidighet, varm kodebytte, og eit sterkt fokus på påliteligheit. I dag blir det mykje brukt i bransjar som krev høg tilgjenge og distribuerte system, som telekommunikasjon, meldingsapplikasjonar, og databasesystem.

Historiske Aspekt

Oppretting og Innan utvikling

Erlang blei oppretta på slutten av 1980-talet av Joe Armstrong, Robert Virding, og Mike Williams hos Ericsson, primært for å møte behova til telekomindustrien. Språket blei utvikla for å lette bygginga av storskalige, feiltolerante system som kunne handtere fleire samtalar og tilkoplingar samtidig.

Utvikling til Open Source

På tidleg 1990-talet innsåg Ericsson potensialet til Erlang utover telekommunikasjon. I 1998 blei Erlang lansert som open source, noko som gjorde det mogleg for eit breiare fellesskap av utviklarar å bidra til veksten av språket. Open-source-rørsla førte til utviklinga av BEAM virtuelle maskin, som utfører Erlang-kode og har utvikla seg til å støtte andre språk.

Noverande Tilstand

Erlang blir for tida vedlikehaldt av Erlang/OTP-teamet og har eit dedikert fellesskap. Utgjevingssyklusen til Erlang har blitt meir konsistent, med regelmessige oppdateringar og forbetringar som fokuserer på ytelse, nye funksjonar, og betre dokumentasjon. Språket har også inspirert utviklinga av Elixir, eit moderne programmeringsspråk som køyrer på Erlang VM og inkorporerer mange av prinsippa til Erlang samtidig som det tilbyr ekstra funksjonar.

Syntaksfunksjonar

Funksjonelt Programmeringsparadigme

Erlang er primært eit funksjonelt språk, som betyr at funksjonar er førsteklasses borgarar og kan bli sendt rundt som variablar.

double(X) -> X * 2.

Lettere Prosessar

Erlangs lette prosessar gjer det mogleg å opprette tusenvis av samtidige prosessar utan betydelig overhead.

spawn(fun() -> io:format("Hello from a process!~n") end).

Meldingspassing

Prossesar i Erlang kommuniserer ved hjelp av meldingspassing, som tillèt trygg kommunikasjon utan delt tilstand.

Pid = spawn(fun() -> receive
                      {msg, Content} -> io:format("Received: ~s~n", [Content])
                  end end),
Pid ! {msg, "Hello!"}.

Mønster Matching

Erlang bruker mønster matching, ein kraftig funksjon som gjer det mogleg å skrive klar og konsis kode.

match(X) when X > 0 -> io:format("Positive number: ~B~n", [X]);
match(X) -> io:format("Non-positive number: ~B~n", [X]).

Feiltoleranse

Erlang støttar feiltoleranse gjennom sin "let it crash"-filosofi, som tillèt prosessar å feile og bli restartet utan å påverke systemet.

start_process() ->
    spawn(fun() -> crash() end).

Varm Kodebytte

Erlang tillèt utviklarar å endre kode i køyre system utan å stoppe dei.

%% Gamal versjon
-module(example).
-export([hello/0]).
hello() -> io:format("Old Version~n").

%% Ny versjon
-module(example).
-export([hello/0]).
hello() -> io:format("New Version~n").

Immutable

Data i Erlang er immutable, noko som fører til færre feil og enklare resonnement om kode.

List = [1, 2, 3],
NewList = [4 | List].

Innebygd Støtte for Distribusjon

Erlang har funksjonar som gjer det enkelt å distribuere prosessar over ulike noder.

net_adm:start() -> 
  net_adm:ping('other_node@hostname').

Rekordtypar

Erlang støttar rekordtypar for å lage strukturerte datatype.

-record(person, {name, age}).
Person = #person{name="Alice", age=30}.

Listekomprehensjonar

Erlang tillèt listekomprehensjonar for å generere og manipulere lister på ein kortfatta måte.

Squares = [X*X || X <- [1,2,3]].

Utviklarverktøy, Køyreomgjevnader, og IDEar

Køyreomgjevnader

Erlang blir kjørt på BEAM virtuelle maskin, som er designa for å køyre samtidige og feiltolerante applikasjonar. BEAM optimaliserer ytelsen og tillèt funksjonar som varmt kodebytte.

Populære IDEar

Det finst fleire utviklingsmiljø for Erlang, med Emacs og IntelliJ IDEA (med Erlang-plugin) som blant dei mest populære. Andre merkverdige verktøy inkluderer Erlang-spesifikke editorar som Erlide.

Byggje eit Prosjekt

For å lage eit Erlang-prosjekt, bruker ein tradisjonelt verktøyet rebar3, som handterer avhengigheiter og bygging. For eksempel, for å lage eit nytt prosjekt, ville ein utføre:

rebar3 new app myapp

Deretter kan ein bygge prosjektet med:

rebar3 compile

Applikasjonar av Erlang

Erlang blir mykje brukt i telekom, meldingssystem, og sanntidsapplikasjonar. Merkbare applikasjonar inkluderer:

Sammenlikning med Lignande Språk

Erlangs primære styrker ligg i sin samtidigheitsmodell og feiltoleranse, som skil det frå språk som:

Tips for Kilde-til-Kilde Oversetting

Å oversette kode til og frå Erlang kan vere komplekst på grunn av sine unike paradigmer. Verktøy som erl2cpp eksisterer for visse oversettingar, men det finst ingen utbreidd automatisk verktøy for alle språk. Manuell oversetting kan involvere: