Elixir (linguaggio di programmazione)

Elixir è un linguaggio di programmazione funzionale, concorrente, il cui codice compilato viene interpretato dalla macchina virtuale Erlang (BEAM). Utilizza quest'ultima proprio per fornire applicazioni distribuite, fault-tolerant e (near) real-time, ma anche per estenderla verso il supporto…

Elixir (linguaggio di programmazione)
Immagine: José Valim — Public domain — Wikimedia Commons

Elixir è un linguaggio di programmazione funzionale, concorrente, il cui codice compilato viene interpretato dalla macchina virtuale Erlang (BEAM). Utilizza quest'ultima proprio per fornire applicazioni distribuite, fault-tolerant e (near) real-time, ma anche per estenderla verso il supporto della meta-programmazione attraverso macro, polimorfismo e protocolli.

Storia

Il creatore del linguaggio di programmazione Elixir è José Valim. Il linguaggio di programmazione è un progetto R&D di Plataformatec. Lo scopo è quello di consentire una maggiore estensibilità e produttività della VM Erlang, preservando al contempo la compatibilità con gli strumenti e l'ecosistema stesso di Erlang.

La nascita di Elixir è stata motivata dal fatto che la capacità di calcolo dei processori è in continuo aumento, il che ha dato luogo ai processori a core multipli, e che l'ecosistema Erlang, compresa la sua macchina virtuale, sfrutta appieno questo tipo di architettura multi-processore, così che un programma in esecuzione può essere suddiviso in una serie di micro processi paralleli. Elixir è nato per superare le carenze di Erlang su alcuni paradigmi e per rendere disponibili taluni approcci di programmazione non ammessi da Erlang, come la meta-programmazione ed il polimorfismo.

Aspetti tecnici

Elixir dispone di un sistema di gestione dei pacchetti, di macro, di uno strumento che automatizza lo sviluppo facile da usare e del sistema di codifica Unicode. Dato che Elixir è un linguaggio che viene eseguito sulla macchina virtuale Erlang, ottiene tutti i vantaggi forniti dalla maturità della VM e può usare le librerie Erlang esistenti, senza penalizzare le performance. Al contrario di Erlang, Elixir dispone dell'operatore pipe. La sintassi di Elixir, al contrario di quella di Erlang, risulta più familiare agli sviluppatori Ruby.

Caratteristiche

Un linguaggio che viene compilato in bytecode per la macchina virtuale Erlang (BEAM)

Tutto è un'espressione

Perfetta integrazione con il linguaggio di programmazione Erlang: nessuna penalità verso le chiamate di funzione Erlang (e vice versa)

Meta-programmazione che prevede la manipolazione diretta dell'albero sintattico

Supporto per la documentazione attraverso docstring in stile Python; il linguaggio di markup usato come standard de facto è il markdown

Polimorfismo attraverso un meccanismo chiamato protocols. Enumerable è un esempio di protocollo ed è ispirato ai riduttori Clojure Così come avviene in Clojure, i protocolli forniscono un meccanismo di collegamento dinamico detto dynamic dispatch. Tuttavia, ciò non va confuso con il collegamento multiplo, anche detto multiple dispatch.

Architettura shared-nothing attraverso lo scambio di messaggi (Actor model)

Enfasi sulla ricorsione e le funzioni di ordine superiore piuttosto che side-effects e cicli.

Collezioni pigre ed asincrone con i flussi

Pattern matching

Supporto Unicode e stringhe UTF-8

Esempi

I seguenti esempi possono essere eseguiti in una shell IEx (acronimo di Interactive Elixir) oppure possono essere salvati in un file ed essere eseguiti dalla linea di comando, digitando elixir <filename>.

Hello world - Stampa sullo standard output della stringa di caratteri Hello world:

Operazioni sulle liste - Degli elementi appartenenti alla lista originale si selezionano solo quelli dispari (ottenuti laddove il resto della loro divisione per 2 è uguale ad 1) e si crea un elenco contenente questi elementi al quadrato.

Pattern Matching

Moduli

Invocazione di codice nativo Erlang - Esempio di utilizzo di una libreria di Erlang (la libreria è inet_res); al momento della stesura di questo paragrafo l'indirizzo IP dell'host a cui punta l'URL fornito come parametro d'ingresso al metodo (quello della sezione polacca di Wikipedia) era 91.198.174.192

Progetti Elixir degni di nota

Mix è uno strumento di automazione dello sviluppo che fornisce attività per la creazione, la compilazione e il test di progetti Elixir, la gestione delle sue dipendenze e altro ancora.

Phoenix è un framework di sviluppo web scritto in Elixir che implementa il pattern Model-view-controller (MVC) lato server.

Servizi correlati

Altre voci

G

Google Play Giochi

Google Play Giochi è un servizio di giochi online e un kit sviluppo software gestito da Google Inc. per il sistema operativo Android. È dotato di funzionalità di gioco multiplayer in tempo reale, salvataggio nel cloud, classifiche sociali e risultati. Il servizio Google Play Giochi consente agli…

Leggi la voce →
I

IMessage

iMessage è un servizio di messaggistica istantanea gratuito sviluppato da Apple Inc. per i sistemi operativi iOS, iPadOS, macOS e watchOS. Il sistema permette di inviare messaggi, foto, video, sticker, documenti ed altro tra più dispositivi, utilizzando il proprio collegamento ad Internet.

Leggi la voce →
Android FroyoA

Android Froyo

Android Froyo (versione 2.2) è il sesto aggiornamento di Android ed è un nome in codice del sistema operativo mobile Android sviluppato da Google, con le versioni che partono dalla 2.2 alla 2.2.3. Queste versioni non sono più supportate. Venne presentato il 20 maggio 2009 durante la conferenza…

Leggi la voce →
M

Mother/Android

Mother/Android è un film del 2021 diretto da Mattson Tomlin.

Leggi la voce →
A

Arirang (smartphone)

Arirang è uno smartphone Android nordcoreano annunciato da Koryolink il 10 agosto 2013. È chiamato così in riferimento alla canzone popolare coreana "Arirang".

Leggi la voce →
A

Android 12

Android 12 (nome in codice Snow Cone) è la dodicesima major release e diciannovesima versione del sistema operativo per dispositivi mobili Android. Pubblicata in versione stabile il 4 ottobre 2021 introducendo la nuova interfaccia Material You, i primi dispositivi a ricevere ufficialmente la…

Leggi la voce →