Erlang è un linguaggio di programmazione funzionale e concorrente progettato per costruire sistemi fault-tolerant e distribuiti. Sviluppato presso Ericsson nel 1986 da Joe Armstrong, Mike Williams e Robert Virding, Erlang è stato creato per alimentare centralini telefonici che richiedevano il 99,9999999% di uptime (disponibilità "nove nove"). Gira sulla macchina virtuale BEAM e ha introdotto il modello Actor della concorrenza nell'ingegneria del software mainstream.
Le caratteristiche distintive di Erlang sono i processi leggeri (milioni possono funzionare simultaneamente), il passaggio di messaggi (nessuna memoria condivisa tra processi) e l'aggiornamento del codice a caldo (aggiornare sistemi in esecuzione senza fermarli). La libreria OTP (Open Telecom Platform) fornisce pattern collaudati per costruire supervisori fault-tolerant, macchine a stati e applicazioni distribuite.
A cosa serve Erlang?
Erlang alimenta l'infrastruttura delle telecomunicazioni (i sistemi Ericsson gestiscono il 40% del traffico mobile globale), sistemi di messaggistica (WhatsApp è stato costruito su Erlang e gestiva 2 miliardi di utenti con un piccolo team di ingegneri), strumenti di collaborazione in tempo reale, sistemi di elaborazione pagamenti e database distribuiti come CouchDB e Riak. Elixir, costruito su BEAM, ha esteso la portata di Erlang allo sviluppo web.
Erlang per principianti
Erlang richiede un cambio di mentalità, non ci sono cicli (si usa la ricorsione), nessuna variabile mutabile e la concorrenza avviene tramite passaggio di messaggi anziché thread. Ma questi vincoli producono software notevolmente robusto. Imparare Erlang approfondisce la comprensione della concorrenza, della fault tolerance e dei sistemi distribuiti in modi che pochi altri linguaggi possono offrire. Usa il compilatore Erlang online di myCompiler per sperimentare con pattern matching, processi e comportamenti OTP.
Erlang vs altri linguaggi
Rispetto a Go per la concorrenza, il modello actor di Erlang fornisce un isolamento dei guasti più forte (un processo che crasha non influenza gli altri) mentre le goroutine di Go hanno un overhead minore ma condividono la memoria. Rispetto a Elixir, Erlang ha una sintassi più verbosa ma Elixir gira sulla stessa VM BEAM con una sintassi più moderna ispirata a Ruby. Per la fault tolerance nei sistemi distribuiti, Erlang/BEAM resta imbattibile.
Perché usare un compilatore Erlang online?
Un compilatore Erlang online, chiamato anche sandbox Erlang o playground BEAM, ti permette di compilare ed eseguire codice Erlang direttamente nel browser senza installare il runtime Erlang. È ideale per imparare il pattern matching di Erlang, comprendere il modello actor della concorrenza, sperimentare con i comportamenti OTP e esplorare i concetti di programmazione funzionale senza una configurazione locale complessa.
L'IDE Erlang online di myCompiler fornisce il runtime completo Erlang/OTP. Puoi generare processi, usare il passaggio di messaggi, fare pattern matching su tuple e liste e usare i moduli OTP standard. Salva e condividi programmi Erlang tramite URL, tutto completamente gratuito.
Perché Erlang è così popolare?
L'influenza di Erlang supera di gran lunga la sua base di utenti diretti. Il modello di concorrenza della VM BEAM ha ispirato linguaggi come Elixir, Gleam e il modello actor di Akka in Scala. L'uso di Erlang da parte di WhatsApp per servire 2 miliardi di utenti con 50 ingegneri è diventato leggendario nel settore. Gli alberi di supervisione del framework OTP sono un pattern collaudato per costruire sistemi distribuiti affidabili. Per chiunque costruisca sistemi che non devono mai cadere, il modello di Erlang resta il gold standard.
Opportunità di carriera con Erlang
L'esperienza in Erlang è specializzata ma molto apprezzata per ruoli di ingegnere di sistemi distribuiti, ingegnere delle telecomunicazioni, ingegnere backend presso aziende che usano BEAM (Ericsson, WhatsApp, Discord) e sviluppatore Elixir (poiché Elixir ed Erlang condividono il runtime BEAM). La crescente popolarità di Elixir per lo sviluppo web ha aumentato significativamente la domanda di ingegneri competenti in BEAM.