Erlang (limbaj de programare)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Erlang
limbaj de programare
Erlang logo.svg
Autor Ericsson
Data de origine 1986
Ultima versiune R19.1
Paradigme programare funcțională
Tastare dinamic
Extensii comune .erl .hrl
Influențată de Prolog , Smalltalk
A influențat F # , Clojure , Rust , Scala , Opa , Reia , Elixir
Implementare referință
Implementare interpret
Sistem de operare Multiplatform
Limbă ro
Licență MPL modificat
Site-ul web www.erlang.org/

Erlang este un limbaj de programare nu orientat către contexte specifice, dar capabil să funcționeze cu programare simultană ; adică poate gestiona mai multe procese care interferează între ele în execuție și pe sisteme de execuție , adică fără două procese distincte pentru compilare și execuție, dar cu un singur proces de modificare și execuție continuă.

A fost conceput pentru a gestiona aplicații non-stop, distribuite și stabile. De când a apărut o versiune open-source în 1998, a fost adoptată de diverse companii multinaționale, precum Nortel și T-Mobile .

„Subsetul secvențial al lui Erlang” este un limbaj funcțional , evaluat rigid , nepolimorf și tipat dinamic .

Exemple

Codul arată astfel:

 - modul ( fapt ).
 - export ([ fac / 1 ]).
 
 fac ( 0 ) -> 1 ;
 fac ( N ) când N > 0 -> N * fac ( N - 1 ).

Mai jos o implementare a „ algoritmului de sortare rapid„ rapid

 %% quicksort (Listă)
 %% Sortează o listă de articole
 - modul ( quicksort ).
 - export ([ qsort / 1 ]).
 
 qsort ([]) -> [];
 qsort ([ Pivot | Rest ]) ->
     qsort ([ X || X <- Rest , X < Pivot ]) ++ [ Pivot ] ++ qsort ([ Y || Y <- Rest , Y > = Pivot ]).

Exemplul de mai sus apelează recursiv funcția qsort până când nu mai rămâne nimic de sortat. Expresia

 [ X || X <- Rest , X < Pivot ]

poate fi citit ca un

„Setul tuturor X pentru care X este membru Rest și X este mai mic decât Pivot ”,

aceasta ajunge să fie o modalitate foarte ușoară de a gestiona listele.

Deoarece este posibil să se evalueze orice expresie booleană între două tipuri diferite, calculul este simplu, de exemplu 1 < a reveni true .

În orice caz, este, de asemenea, posibilă generalizarea funcției văzute mai sus pentru a obține o ordine diferită de cea canonică, ordinea ascendentă. De fapt, prin trecerea unei funcții de comparație ca argument, programatorul poate invoca aceeași funcție de mai multe ori, dar cu criterii de sortare diferite.

Iată un exemplu de cod în care o listă de liste este sortată după lungimea lor:

 - modul ( listsort ).
 - export ([ by_length / 1 ]).
 
 by_length ( Liste ) ->
     F = fun ( A , B ) când is_list ( A ), is_list ( B ) ->
             lungime ( A ) < lungime ( B )
         sfarsit ,
     qsort ( Liste , F ).
 
  qsort ([], _) -> [];
  qsort ([ Pivot | Rest ], mai mic ) ->
      qsort ([ X || X <- Rest , Smaller ( X , Pivot )], Smaller )
      ++ [ Pivot ] ++
      qsort ([ Y || Y <- Rest , not ( Smaller ( Y , Pivot ))], Smaller ).

Acest lucru nu ar fi posibil dacă limba nu ar accepta funcții de ordin superior .

Software care folosește Erlang

Printre programele care folosesc Erlang găsim:

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh93000031 · GND (DE) 4324177-3
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT