Vedi anche erlang, un'unità di traffico telefonico.
Erlang è un linguaggio di programmazione progettato per lo sviluppo di robusti sistemi di programmi che possono essere distribuiti tra diversi computer in una rete. Il linguaggio, che prende il nome dal matematico danese Agner Krarup Erlang, è stato sviluppato dall'Ericsson Computer Sciences Lab per creare software per i propri prodotti di telecomunicazione. In uso da diversi anni presso Ericsson e altre società, Erlang è insegnato in oltre 80 università e college in tutto il mondo ed è disponibile gratuitamente come codice Open Source.
Erlang è simile a Java in quanto utilizza una macchina virtuale e supporta il multithreading. Tuttavia, mentre la comunità di sviluppo Java si concentra sulle applicazioni Web, Erlang si rivolge al mercato di server e sistemi embedded estremamente robusti.
Erlang è descritto come un linguaggio di programmazione funzionale, nel senso che enfatizza la valutazione delle espressioni piuttosto che l'esecuzione dei comandi. Le espressioni utilizzano le funzioni per derivare i valori di base. (Altri due modelli di programmazione ben noti sono procedurale e orientata agli oggetti .)
Ecco alcune caratteristiche di Erlang:
- Poiché la posizione dei thread del programma può essere specificata esplicitamente o invisibile al programma, un programma può essere facilmente distribuito ed eseguito in qualsiasi punto di una rete.
- Erlang fornisce tipi di dati dinamici, consentendo ai programmatori di sviluppare componenti di sistema (come i dispatcher di messaggi) che non si preoccupano del tipo di dati che stanno gestendo e altri che impongono fortemente restrizioni sul tipo di dati o che decidono come agire in base al tipo di dati loro ricevono.
- La corrispondenza dei modelli consente programmi estremamente compatti e chiari (circa 5-10 volte più brevi dei programmi equivalenti in C o Java).
- Come Java, Erlang fornisce la raccolta dei rifiuti; i programmatori non devono preoccuparsi di restituire lo spazio di memoria allocato.
- Gli aggiornamenti al software Erlang non richiedono l'arresto del sistema.
- Vengono fornite interfacce con altri linguaggi di programmazione, come C, C ++ e Java.
- Erlang viene fornito con modelli di progettazione o modelli per la progettazione client-server, macchine a stati, distribuzione di eventi e supervisione dei thread.
- Erlang fornisce un framework che supporta la distribuzione di programmi su un pool di server, con ripristino e ridistribuzione automatici ogni volta che un server si guasta.
- Include anche potenti componenti per un sistema di rete, tra cui un server HTTP, un agente SNMP (Simple Network Management Protocol), un'interfaccia CORBA (Common Object Request Broker Architecture), un sottosistema OAM e un motore di database completamente distribuito.
- Il bytecode di Erlang è identico su tutte le piattaforme e una rete di nodi Erlang può essere costituita da qualsiasi combinazione di NT, UNIX o altre piattaforme supportate.
- Erlang è relativamente facile da imparare rispetto a C, C ++ e Java.
I sostenitori di Erlang affermano che è superiore a Java quando sviluppano sistemi back-end che richiedono: tolleranza agli errori, elaborazione distribuita, una grande quantità di attività simultanea, tempi di risposta in tempo reale in millisecondi e funzionamento non-stop.