English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introduzione a Erlang

Erlang è un linguaggio di programmazione funzionale che ha anche un ambiente di esecuzione. Il suo modo di costruzione lo rende integrato con funzionalità di concorrenza, distribuzione e tolleranza agli errori. Erlang è stato sviluppato originariamente per essere utilizzato in molti grandi sistemi di telecomunicazione di Ericsson.

La prima versione di Erlang è stata sviluppata da Joe Armstrong, Robert Virding e Mike Williams nel 1986. Inizialmente era un linguaggio proprietario interno di Ericsson. Successivamente è stato pubblicato come linguaggio open source nel 1998. Erlang e OTP (la raccolta di middleware e librerie di Erlang) sono ora supportati e mantenuti dal dipartimento di prodotti OTP di Ericsson e sono ampiamente conosciuti comeErlang/OTP.

Perché scegliere Erlang?

Se hai i seguenti requisiti, dovresti sviluppare l'applicazione con Erlang-

  • L'applicazione deve gestire un gran numero di attività concorrenti.

  • Dovrebbe essere facile distribuire l'applicazione su una rete di computer.

  • Dovrebbe esserci uno strumento che renda l'applicazione tollerante sia agli errori di software che agli errori hardware.

  • L'applicazione dovrebbe essere scalabile. Questo significa che dovrebbe essere in grado di spaziare su più server senza quasi cambiamenti.

  • Dovrebbe essere facile aggiornare e riconfigurare l'applicazione senza dover fermare e riavviare l'applicazione stessa.

  • L'applicazione dovrebbe rispondere agli utenti entro un intervallo di tempo rigoroso.

Il sito web ufficiale di Erlang èhttps://www.erlang.org/.

Introduzione

Erlang è un linguaggio di programmazione generale orientato alla concorrenza, sviluppato dal CS-Lab del produttore svedese di attrezzature di telecomunicazione Ericsson, con l'obiettivo di creare un linguaggio di programmazione e un ambiente di esecuzione in grado di affrontare attività di concorrenza su larga scala. Erlang è stato introdotto nel 1987 e, dopo dieci anni di sviluppo, è stato rilasciato la versione open source nel 1998. Erlang è un linguaggio interpretato che esegue su un'VM, ma ora include anche un compilatore di codice locale sviluppato dal progetto HiPE dell'Università di Uppsala, a partire dalla versione R11B-4, Erlang ha iniziato a supportare anche l'interprete di script. In termini di paradigma di programmazione, Erlang è un linguaggio di programmazione a più paradigmi, che copre funzionale, concorrente e distribuito. Erlang eseguito in modo sequenziale è un linguaggio funzionale a valutazione early, assegnazione singola e tipo dinamico.

Erlang è un linguaggio di programmazione strutturato, a tipo dinamico, con supporto integrato per il calcolo parallelo. È stato originariamente progettato da Ericsson per applicazioni di comunicazione, come switch di controllo o trasformazione di protocolli, quindi è particolarmente adatto a costruire sistemi di calcolo distribuito, in tempo reale e a basso livello. Le applicazioni scritte in Erlang di solito sono composte da migliaia di processi leggeri, che comunicano tra loro tramite messaggi. La transizione di contesto tra i processi per Erlang è solo un paio di passaggi, molto più efficiente rispetto alla transizione di contesto dei thread dei programmi C.

Scrivere applicazioni distribuite in Erlang è molto più semplice, perché il meccanismo distribuito è trasparente: per il programma non è chiaro se si sta eseguendo in modo distribuito. L'ambiente di esecuzione di Erlang è un'istanza virtuale, un po' come il Virtual Machine di Java, così una volta compilato il codice, può essere eseguito ovunque. Il sistema di esecuzione di Erlang persino consente di aggiornare il codice senza interruzioni. Inoltre, se necessario, i byte code possono essere compilati in codice nativo per esecuzione più efficiente.

Storia di sviluppo

Il nome Erlang deriva dal matematico e statistico danese Agner Krarup Erlang, al contempo Erlang può anche rappresentare Ericsson Language.

Erlang non è una nuova lingua, è apparso nel 1987, ma all'epoca le esigenze di condivisione e distribuzione non erano così diffuse come oggi, allora poteva dirsi che ero in un momento in cui ero senza un campo di battaglia. Il fondatore della lingua Erlang, Joe Armstrong, lavorava in Ericsson nello sviluppo della rete telefonica, utilizzava Smalltalk, ma all'epoca Smalltalk era troppo lento, non poteva soddisfare i requisiti di prestazioni della rete telefonica. Ma Joe amava davvero Smalltalk, quindi ordinò una macchina Tektronix Smalltalk. Ma ci vollero due mesi per arrivare, Joe, durante l'attesa, si trovò a passare il tempo senza nulla fare, iniziò a utilizzare Prolog, e quando arrivò Tektronix, era già più interessato a Prolog, Joe non si accontentava di essere un esperto di Prolog, dopo un periodo di sperimentazione, Joe aggiunse la gestione della condivisione e la ripristino degli errori a Prolog, così è nato Erlang. Questo è anche il motivo per cui la sintassi di Erlang ha molte somiglianze con quella di Prolog, ad esempio, le espressioni di lista sono entrambe [Head | Tail].

Nel 1987 è stato lanciato il beta test di Erlang, e si è perfezionato nel corso dell'applicazione reale degli utenti, nel 1991 è stata lanciata la prima versione per gli utenti, con più funzionalità come il compilatore e l'interfaccia grafica. Nel 1992, Erlang ha accolto più utenti, come il progetto RACE. Allo stesso tempo, Erlang è stato portato su piattaforme diverse come VxWorks, PC e Macintosh, e sono stati avviati due progetti di prodotti che utilizzano Erlang. Nel 1993, l'organizzazione indipendente interna della Ericsson ha iniziato a mantenere e supportare l'implementazione e gli strumenti di Erlang.

Caratteristiche del linguaggio

Diverso dai linguaggi orientati agli oggetti tradizionali, ha i suoi vantaggi propri: prima di tutto, è basato su concorrenza a processo, i quali sono leggeri e si gestiscono in modo ordinato e collaborativo le transazioni, l'utente non deve preoccuparsi delle operazioni PV specifiche, questi processi sono trasparenti per il sistema operativo, per l'operatore del sistema c'è solo un processo in esecuzione. In secondo luogo, ogni processo ha la propria memoria indipendente, nella comunicazione tra processi si affida completamente al passaggio di messaggi, ogni processo ha la propria casella di posta e ricerca i messaggi da elaborare tramite il metodo di abbinamento di pattern, quindi li elabora asincronamente. Questo riduce la耦合 tra i processi, migliorando l'indipendenza. Erlang ha anche un meccanismo di tolleranza ai guasti affidabile, poiché i processi sono relativamente indipendenti, quindi in Erlang si possono utilizzare alcuni processi per collegare o monitorare altri processi, quando questi processi monitorati escono dall'esecuzione per errore, il programma responsabile del monitoraggio riceve i messaggi di uscita di questi processi e li gestisce di conseguenza. In OTP, Erlang può utilizzare l'albero di monitoraggio per eseguire monitoraggio uno-a-uno o uno-a-molti.最重要的是, supporta la gestione di CPU multicore, nelle operazioni multicore di Erlang non è necessario che il personale di sviluppo gestisca, per il personale di sviluppo è completamente trasparente, dobbiamo solo scrivere come sempre programmi. Infine, Erlang supporta l'aggiornamento del codice in esecuzione, in Erlang è possibile aggiornare il codice senza arrestare il funzionamento, per realizzare l'aggiornamento in esecuzione del software. Nel gestione delle versioni di Erlang, è possibile conservare due versioni diverse di un modulo, supportando il rollback delle versioni.

La lingua Erlang si concentra su esigenze specifiche e non è completamente adatta a tutte le situazioni. Mentre ha molte caratteristiche affascinanti, ha anche alcuni svantaggi: la capacità di astrazione del linguaggio è debole, Erlang è un linguaggio di tipo debole, può modificare facilmente il contenuto dei messaggi o le richieste dei modelli durante la corrispondenza, ma quando si verificano errori, la loro occultazione è forte. Inoltre, quando la scala del progetto è grande, si scopre che a causa delle caratteristiche del linguaggio, le parti si presentano con caratteristiche piatte, ci sono molti tuple e record nel programma e la struttura del programma è confusa. In secondo luogo, la programmazione funzionale differisce dai linguaggi tradizionali, al momento i linguaggi di programmazione mainstream sono di tipo C e orientati agli oggetti, la programmazione funzionale manca di teorie mature di programmazione, i talenti e le risorse correlati sono pochi, questo aumenta la difficoltà di apprendimento. Inoltre, l'idea di orientamento agli oggetti è profondamente radicata, il che rende difficile il cambiamento di mentalità durante l'apprendimento della programmazione funzionale. Più importante ancora, Erlang è un linguaggio intensivo di I/O, adatto a progetti con caratteristiche distribuite evidenti, per le esigenze computazionali intensive è più difficile, ma c'è ancora spazio per l'ottimizzazione e l'aumento.

Prospettive di sviluppo

Negli ultimi anni, Erlang si è sviluppato rapidamente in Cina, principalmente utilizzato per lo sviluppo di sistemi di server di gioco. Erlang è facile da utilizzare, ha un'elevata capacità di tolleranza agli errori e un ciclo di sviluppo veloce, che lo rende particolarmente adatto allo sviluppo di giochi web e mobili. Soprattutto, molte aziende di gioco di medie e piccole dimensioni in città come Guangzhou e Shenzhen utilizzano Erlang. I sistemi di server di gioco basati su C++ richiedono un lungo accumulo tecnico e la produttività di sviluppo di C++ è inferiore a quella di Erlang, il costo elevato di reclutamento è una grande sfida per le nuove aziende. Ma le aziende di medie e piccole dimensioni danno la priorità ai prodotti rispetto alla tecnologia, il che non è favorevole per lo sviluppo di Erlang in Cina, la maggior parte delle aziende utilizza lo stesso set di framework di Erlang già consolidati, concentrandosi principalmente sul trattamento di logiche di business specifiche e ignorando l'ottimizzazione di base. Questo è estremamente sfavorevole per lo sviluppo di Erlang.

Erlang ha avuto un lungo sviluppo all'estero come linguaggio maturo e ha dimostrato la sua validità. Attualmente è applicato a centinaia di progetti di sviluppo importanti, inclusi soluzioni di sistema di scambio a larga banda, GPRS e ATM di Ericsson, con una vasta esperienza di progetto, il framework di programmazione (OTP) fornisce una serie di strumenti e librerie per la realizzazione di robustezza e tolleranza agli errori e una struttura di framework completa per il sistema Erlang. Ma rispetto all'uso in Cina per la sviluppo di giochi, all'estero è principalmente utilizzato per servizi web, telefonia computerizzata, sistemi di messaggistica e banche commerciali e altri campi. All'inizio del millennio, il sito Erlang.org aveva circa 36.000 pagine, dieci anni dopo, questo numero è salito a 2,8 milioni, il che indica che la comunità Erlang sta continuando a crescere, inclusi progetti commerciali, di ricerca e open source, marketing virale, libri e blog, naturalmente, tutto questo deriva dalla necessità originaria di Erlang di risolvere problemi specifici e promuovere lo sviluppo.