Introduzione a Erlang ed Elisir

Elixir è un linguaggio veloce, dinamico e scalabile che viene rapidamente adottato dal pubblico di startup e dalle aziende affermate per le applicazioni di produzione. 

Pinterest, Brightcove, Discord e Canvas, per citarne alcuni, funzionano tutti su Elixir, che a sua volta sfrutta la Erlang VM a bassa latenza e fault-tolerant, ovvero l'accesso completo all'ecosistema Erlang utilizzato da aziende come Heroku, WhatsApp, Klarna e Basho.

A partire da questo tutorial, imparerai le conoscenze fondamentali per iniziare da solo in Erlang e programmare con Elixir.

Come è la sintassi?

La sintassi è funzionale e promuove uno stile di codifica breve e veloce, che consente agli utenti di astrarre facilmente i propri dati:

% Utente nome: nome, età: età = User.get ("John Doe") nome # => "John Doe"

Quando combinato con guardie, abbiamo una struttura potente:

def serve_drinks (% utente età: età) quando età> = 21 fa # codice che serve bevande! end serve_drinks User.get ("John Doe") # => Errore se l'utente ha meno di 21 anni

Può scalare?

Affermativa; Elixir è stato realizzato pensando a sistemi scalabili e distribuiti. 

Elixir presenta l'esecuzione con thread (denominata processi) in un ambiente in cui più processi possono comunicare tra loro tramite i messaggi. 

Questi fili leggeri possono essere eseguiti a centinaia di migliaia in concomitanza. L'eccellente raccoglitore di elisir di Elixir funziona per ogni thread isolato, garantendo prestazioni ottimali a livello di sistema e prevenzione dei blocchi di risorse. 

Fault Tolerance

L'elisir ha Le autorità di vigilanza che può riavviare parti del sistema se le cose vanno male e ripristinare il sistema in uno stato iniziale che è noto per funzionare.

Come ottenere l'elisir

Installa Elixir sul tuo computer prima di continuare:

Mac OS X

  • homebrew
    • Aggiorna il tuo homebrew all'ultimo: preparare l'aggiornamento
    • Correre: preparare l'elisir
  • macports
    • Correre: sudo port install elixir

Unix (e Unix-like)

  • Arch Linux (repository comunitario)
    • Correre: pacman -S elisir
  • openSUSE (e SLES 11 SP3 +)
    • Aggiungi Erlang devel repo: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Correre: zypper in elisir
  • Gentoo
    • Correre: emerge --ask dev-lang / elixir
  • GNU Guix
    • Correre: pacchetto guix -i elisir
  • Fedora 21 (e precedente)
    • Correre: yum install elixir
  • FreeBSD
    • Dai porti: cd / usr / ports / lang / elixir && make install clean
    • Da pkg: pkg install elixir
  • Ubuntu 12.04 e 14.04 / Debian 7
    • Aggiungi repository Erlang Solutions: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
    • Correre: sudo apt-get update
    • Installa la piattaforma Erlang / OTP e tutte le sue applicazioni: sudo apt-get install esl-erlang
    • Installa elisir: sudo apt-get install elixir

finestre

  • Programma di installazione Web
    • Scarica il programma di installazione
    • Fare clic su Avanti, Avanti, ..., Fine
  • cioccolatoso
    • elisir cinetico

Sviluppo interattivo

Elixir ha una modalità interattiva, alla quale possiamo accedere tramite il prompt della riga di comando in questo modo:

$ iex Interactive Elixir - premere Ctrl + C per uscire (digitare h () INVIO per aiuto) iex> c "my_file.ex" # Compila un file iex> t Enum # Stampa i tipi definiti nel modulo Enum iex> h IEx.pry # Stampa la documentazione per la funzionalità della leva IEx iex> i "Hello, World" # Stampa informazioni sul tipo di dati specificato

Gli utenti di Windows dovranno essere eseguiti iex.bat per accedere alla console interattiva. 

Quando entriamo in questa modalità, possiamo digitare qualsiasi Elisir codice e ottenere il ritorno istantaneamente, quindi è bene iniziare a imparare la lingua.

Facciamo alcune espressioni di base:

cioè> 2 + 2 4 cioè> rotondo (3.58) 4 iex> "ciao" <> "mondo" "ciao mondo"

Quando eseguiamo uno script, lo facciamo dal terminale di shell in questo modo:

$ elixir scriptName.exs

Per trasmettere da uno script al terminale, dobbiamo usare quanto segue IO classe:

IO.puts "Hello world from Elixir"

Che cosa circa i moduli?

I moduli sono disponibili per Elixir in modo che gli sviluppatori possano espandere la lingua in molti modi. 

Ecco un esempio di utilizzo del framework di test di Elixir ExUnit:

defmodule MathTest usa ExUnit.Case, async: true test "può aggiungere due numeri" asserire 1 + 1 == 2 end end

È possibile eseguire i test in parallelo impostando asincrono: vero. In questa impostazione, Elixir utilizza il maggior numero possibile di core CPU. 

nel frattempo, affermare può verificare errori di asserzione nel codice. Queste funzionalità sono create utilizzando macro Elixir, rendendo possibile l'aggiunta di interi nuovi costrutti come se fossero parte della stessa lingua di Elisir, il che significa personalizzazione totale per qualsiasi produttività (test dell'unità in questo caso) che potrebbe essere necessario.

E c'è dell'altro!

Elixir è un linguaggio potente e versatile usato da alcune delle più grandi app del mondo in questo momento. Rapidi tempi di compilazione, processi filettati leggeri, estensibilità con i moduli DSL e tolleranza agli errori fornita con Supervisore lo rendono ideale per qualsiasi serio team di sviluppo web. Chiaramente, quando Elixir è completamente utilizzato, ci sono enormi guadagni da realizzare. 

Nella prossima parte, continueremo con i tipi di elisir di dati disponibili e su come scrivere altro codice, e alla fine arriveremo a compilarlo!