Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Elixir (linguaggio di programmazione) - Teknopedia
Elixir (linguaggio di programmazione) - Teknopedia
Elixir
linguaggio di programmazione
Il logo ufficiale del linguaggio di programmazione Elixir.
AutoreJosé Valim, collaboratori su GitHub
Data di origine24 maggio 2012; 13 anni fa (v0.5.0)
Ultima versione1.19.4 (27 novembre 2025)
Utilizzoscripting, general purpose
Paradigmiconcorrente, funzionale, distribuito
Tipizzazionedinamica, forte
Specifiche di linguaggioElixir Documentation
Estensioni comuniex e exs
Influenzato daErlang, Ruby, Clojure
Implementazione di riferimento
LicenzaLicenza Apache 2.0[1]
Sito webelixir-lang.org/
Modifica dati su Wikidata · Manuale

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.[2]

Storia

[modifica | modifica wikitesto]
Il creatore del linguaggio, José Valim, all'ElixirConf 2014
Il programmatore informatico Dave Thomas all'ElixirConf 2014

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.[3]

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

[modifica | modifica wikitesto]

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.[4] 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.[4] Al contrario di Erlang, Elixir dispone dell'operatore pipe.[4] La sintassi di Elixir, al contrario di quella di Erlang, risulta più familiare agli sviluppatori Ruby.[4]

Caratteristiche

[modifica | modifica wikitesto]
  • Un linguaggio che viene compilato in bytecode per la macchina virtuale Erlang (BEAM)[2]
  • Tutto è un'espressione[2]
  • 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[2]
  • Supporto per la documentazione attraverso docstring in stile Python; il linguaggio di markup usato come standard de facto è il markdown[2]
  • Polimorfismo attraverso un meccanismo chiamato protocols. Enumerable è un esempio di protocollo ed è ispirato ai riduttori Clojure[5] 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[2]
  • Supporto Unicode e stringhe UTF-8

Esempi

[modifica | modifica wikitesto]

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:

IO.puts "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.

for n <- [1,2,3,4,5], rem(n,2) == 1, do: n*n
#=> [1, 9, 25]

Pattern Matching

[1, a] = [1, 2]
# 'a' now equals 2

{:ok, [hello: a]} = {:ok, [hello: "world"]}
# 'a' now equals "world"

Moduli

defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n) do 
    fib(n-2) + fib(n-1)
  end
end

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 Teknopedia) era 91.198.174.192

:inet_res.lookup('pl.wikipedia.org', :in, :a)
#=> [{91, 198, 174, 192}]

Progetti Elixir degni di nota

[modifica | modifica wikitesto]
  • 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.

Note

[modifica | modifica wikitesto]
  1. ^ github.com, https://github.com/elixir-lang/elixir/blob/master/LICENSE Titolo mancante per url url (aiuto).
  2. ^ a b c d e f José Valim, Elixir, su Sito Web ufficiale di Elixir, José Valim, 24 aprile 2012. URL consultato il 24 aprile 2012 (archiviato dall'url originale il 18 aprile 2012).
  3. ^ Elixir - A modern approach to programming for the Erlang VM, su vimeo.com. URL consultato il 17 febbraio 2013.
  4. ^ a b c d Lau Taarnskov, Elixir - The next big language for the Web, su Creative Deletion, Lau Taarnskov, 19 aprile 2015. URL consultato il 19 aprile 2015 (archiviato dall'url originale il 20 aprile 2015).
  5. ^ Peter Minten, Elixir's Enumerable, su A Cauldron of Black and White Stones, Weblog personale di Peter Minten, Peter Minten, 7 settembre 2014. URL consultato il 7 settembre 2014 (archiviato dall'url originale il 6 settembre 2014).

Bibliografia

[modifica | modifica wikitesto]
  • (EN) Wolfgang Loder, Erlang and Elixir for Imperative Programmers, Prima edizione, capitolo 16: "Code Structuring Concepts", sezione "Actor Model", Leanpub, 12 maggio 2015, p. 53.
  • (EN) Dave Thomas, Programming Elixir: : Functional > Concurrent > Pragmatic > Fun, Prima edizione, The Pragmatic Bookshelf, 2014, p. 280, ISBN 978-1937785581.

Altri progetti

[modifica | modifica wikitesto]

Altri progetti

  • Wikimedia Commons
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file su Elixir

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Sito Web ufficiale, su elixir-lang.org.
  • (EN) Codice sorgente pubblicato su GitHub, su github.com.
  • (EN) Elixir - A modern approach to programming for the Erlang VM video presentation, su vimeo.com.
V · D · M
Principali linguaggi di programmazione (tutti)
ABAP · Ada · ALGOL · APL · Assembly · Awk · BASIC · C · C++ · C# · COBOL · Delphi · Eiffel · Fortran · F# · Haskell · IDL · Java · JavaScript · J# · Lisp · LOGO · Lua · ML · Objective-C · OCaml · Pascal · Perl · PHP · PL/I · PLaSM · Prolog · Python · Ruby · Rust · SAS · Scheme · sh · Simula · Smalltalk · SQL · Swift · Visual Basic
V · D · M
Software libero e open source
GeneraleCopyleft · Eventi · Software libero · Definizione · Gratis versus libre · Open source
Famiglie di sistemi operativiAros Research Operating System · BSD · Darwin · eCos · FreeDOS · GNU · Haiku · Inferno · Linux · Mach · Minix · OpenSolaris · Plan 9 · ReactOS · Redox · Symbian OS
Sviluppo software open sourceEclipse · Free Pascal · GCC · Gambas · Java · LLVM · Lua · NetBeans · Octave · Open64 · Perl · PHP · Python · ROSE · Ruby · Tcl
Storia del software liberoGNU · Haiku · Linux · Mozilla (Application Suite · Firefox · Thunderbird)
OrganizzazioniApache Software Foundation · Blender Foundation · Eclipse Foundation · freedesktop.org · Free Software Foundation (Europe · India · Latin America) · FSMI · GNOME Foundation · Google Code · KDE · Linux Foundation · Mozilla Foundation · Open Source Geospatial Foundation · Open Source Initiative · Software Freedom Conservancy · SourceForge · Symbian Foundation · The Document Foundation · Ubuntu Foundation · Xiph.Org Foundation · XMPP Standards Foundation · X.Org Foundation · Software Freedom Law Center
Licenze libereApache · Artistica · BSD · GNU GPL · GNU LGPL · ISC · MIT · MPL · Ms-PL/RL · zlib · Licenze approvate da FSF
Standard di licenzeOpen Source Definition · The Free Software Definition · Debian Free Software Guidelines
SfideBlob binario · Canonical's contributor agreement · Digital rights management · Rebranding dei programmi Mozilla · Software proprietario · Causa SCO-IBM · Restrizioni hardware · Trusted computing · Licenza virale · Guerra dei browser · Halloween Documents
Altri argomentiTermini alternativi · Comunità software libero · Distribuzione Linux · Forking · Movimento software libero · Microsoft Open Specification Promise · Revolution OS
Controllo di autoritàLCCN (EN) sh2015000669 · J9U (EN, HE) 987007409094405171
  Portale Software libero: accedi alle voci di Teknopedia che trattano di software libero
Estratto da "https://it.wikipedia.org/w/index.php?title=Elixir_(linguaggio_di_programmazione)&oldid=148045863"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022