Erlang - Enciclopedia de limbaje de programare

Erlang (Erlang) - un limbaj de programare funcțional, vă permite să scrie programe pentru diferite tipuri de sisteme distribuite. Ea a dezvoltat și întreținut de Ericsson. Limba include mijloace de a genera procese paralele și comunicarea lor prin trimiterea de mesaje asincrone. Programul este tradus în cod de octet executat de mașina virtuală, care asigură portabilitate.

Limba este dinamică. Sintaxa este moștenită de la Prolog - compact, acesta conține un minim de modele, ușor de învățat, dar nu primitive.

Acesta oferă un programator - module, funcții polimorfe, de potrivire model, funcții anonime, condiționale, structuri, de manipulare excepție, optimizând recursivitate coada. În general, arsenalul de bază al limbilor funcționale moderne.

paradigmă funcțională (fără atribuire) permite Erlang evita astfel de limbi tradiționale imperative distribuite probleme de aplicare, cum ar fi nevoia de sincronizare, riscul de blocare și a rasei.

Principalul lucru în Erlang - modelul său de procese ușoare. Pentru a parafraza sloganul pentru Erlang ziua curentă „Totul este un obiect“ ( «Totul este un obiect"), putem spune «Totul este un proces» ( «Totul este un proces").

Procesele sunt ieftine, procesul de creare nu ia mai multe resurse decât un apel de funcție. Singurul mod de a proceselor de interacțiune este de mesaje asincrone.

Pentru a dezvolta programe impune o puternică două puncte de imprimeu ^

  • Limba stimulează crearea unui număr mare de procese competitive
  • procese izolate rigid și nu au nici o condiție comună

Procesul de proiectare este sistemul de partiționare iterativ ierarhie care interacționează în mod competitiv subsisteme ca componente devin destul de simplu pentru punerea în aplicare.

Power Cords „Procese + posturi“ nu mai puțin de „obiecte + + Interfețe moștenire“, dar de multe ori duce la o soluții mai compacte și simple. eliminarea concurenței este la fel de ușor ca și crearea. Nu este nevoie pentru a bloca accesul la starea procesului pentru a sincroniza interacțiunea lor de viață mult mai ușoară. de obicei, doar a creat un monitor proces, prin care interacțiunea cu o resursă pentru o resursă competitivă.

Al doilea punct este exprimat în formula «lăsați-l să se prăbușească» ( «proces de toamna lasa"). În loc de a intercepta eroarea și să încerce să-și continue activitatea programului, care cuprinde un cod de riscant este alocat unui proces separat de sinucidere, acest proces este de a face tot ce este posibil pentru ca sistemul să-l omoare în cazul unei erori, iar procesul părinte primește rapoarte numai de moartea puilor nefericit și mărci concluzii.

Având în vedere că în mod obișnuit de 90% dintre aceste situații nu este nimic mai mult decât util pentru a aduce mesajul de eroare și să încerce să trăiască cu această durere, atunci, nu este posibil, în lipsa unor controale repetate a codului nu este prea neatractive.

interacțiune distribuită

Rularea exemplu de Erlang emulator numit un nod (nod). Nodul are un nume și „știe“ despre existența altor noduri pe aparat sau pe rețea.

Crearea și interacțiune procese diferite noduri este diferit de interacțiunea proceselor într-un nod. Pentru a crea un proces pe un alt proces de nod suficient să se știe numele său și, fără motive întemeiate, el nu poate fi interesat în locația fizică a procesului de a interacționa cu ei.

Elemente de sintaxă:

Bună ziua, World!:

Prima linie definește numele modulului și subliniază faptul că ar trebui să fie în fișierul prog.erl. A doua linie exportă 0-ary (care nu are parametri) funcția principală. Al treilea descrie funcția în sine, care imprimă „Hello, World!“.

factorial:

Se folosește definiția recursivă factorial. În Erlang nu are built-cicluri, astfel încât ciclul este necesar pentru a simula funcția recursiv care începe cu valori ridicate ale N, dar face apel recursiv pentru N-1 înainte de ieșiri N. buclă (_) - ramură, care stabilește comportamentul funcției atunci când argumentul său - nu este un număr întreg sau negativ (necesare pentru determinarea corectă a funcției).

Numerele Fibonacci:

determinarea iterativă numerele lui Fibonacci, exprimat sub forma recursivitatii cozii.

Numerele Fibonacci:

Folosind formula lui Binet. Numerele în virgulă mobilă sunt necesare pentru a fi de ieșire la cel puțin o zecimală, astfel încât rezultatul lucrării este după cum urmează:

1,0, 1,0, 2,0, 3,0, 5,0, 8,0, 13,0, 21,0, 34,0, 55,0, 89,0, 144,0, 233,0, 377.0, 610.0, 987.0.

ecuația pătratică: