Erlang (linguaggio)
Lo Erlang è un linguaggio di programmazione non orientato a contesti specifici ma in grado di lavorare con la programmazione concorrente; può gestire cioè più processi che interferiscono tra loro in esecuzione) e su sistemi runtime (vale a dire senza una compilazione ed esecuzione ma con una continua modifica).
Fu progettato per gestire applicazioni non-stop, distribuite e stabili. Da quando è uscita una versione open-source nel 1998 è stato adottato da vari compagnie multi nazionali come la Nortel e T-Mobile.
Il "sottoinsieme sequenziale di Erlang" è un linguaggio funzionale, a valutazione rigida, non polimorfo e con typing dinamico.
Il suo codice ha il seguente aspetto:
-module(fact). -export([fac/1]). fac(0) -> 1; fac(N) where N > 0 -> N * fac(N-1).
Qui di seguito una implementatione dell'algoritmo di ordinamento veloce 'quicksort'
%% quicksort(List)
%% Sort a list of items
-module(quicksort).
-export([qsort/1]).
qsort([]) -> [];
qsort([Pivot|Rest]) ->
qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).
L'esempio di cui sopra richiama ricorsivamente la funzione
qsort
fino a quando non c'è più nulla da ordinare.
L'espressione
[ X || X <- Rest, X < Pivot]
può essere letta come un
- "Scegli tutte le
Xper le qualiXè un membro diResteXè minore diPivot",
ciò finisce col divenire un modo molto facile per gestire le liste.
Dal momento che è possibile valutare una qualsiasi espressione booleana tra due differenti tipi, il calcolo è diretto, per esempio 1 < a restituirà true.
In ogni caso una funzione di confronto può essere usata se l'ordinamento col quale il linguaggio Erlang restituisce i valori true o false) che occorre cambiare.
Per esempio, se noi volessimo una lista ordinata per la quale a > 1 restituisce true.
Collegamenti esterni
- Open-source implementation
- Mailing Lists and FAQ for the Erlang Community
- The Original Erlang wiki
- Metafrog - Erlang Wiki used as CVS
- A collaborative portal for the Erlang community
- Licensed and supported implementation.
- Worldwide training and consulting services
- The Anarchitech Cooperative
