Introducere în Erlang și Elixir

Elixirul este un limbaj rapid, dinamic și scalabil, care devine rapid adoptat de mulțimea de pornire și de întreprinderile stabilite pentru aplicațiile de producție. 

Pinterest, Brightcove, Discord și Canvas, pentru a numi câteva, toate rulează pe Elixir, care, la rândul său, utilizează Erlang VM cu toleranță redusă la erori, ceea ce înseamnă acces complet la ecosistemul Erlang folosit de companii precum Heroku, WhatsApp, Klarna și Basho.

Începând cu acest tutorial, veți învăța cunoștințele fundamentale pentru a vă începe în Erlang și a vă codifica cu Elixir.

Care este sintaxa de genul?

Sintaxa este funcțională și promovează un stil de codare scurt, rapid, care permite utilizatorilor să absoarbă ușor datele lor:

% Utilizator nume: nume, vârstă: vârstă = User.get ("John Doe") nume # => "John Doe"

Când sunt combinate cu gărzi, avem o structură puternică:

def serve_drinks (% Utilizator vârstă: vârstă) atunci când vârsta> = 21 nu # Cod care servește băuturi! end serve_drinks User.get ("John Doe") # => Eșuează dacă utilizatorul este sub 21 de ani

Poate Scala?

Afirmativ; Elixirul a fost construit cu ajutorul sistemelor scalabile și distribuite. 

Elixir are o execuție filetată (denumită procesare) într-un mediu în care mai multe procese pot comunica între ele prin mesaje. 

Aceste fire de greutate mică pot fi executate în sute de mii concomitent. Colectorul excelent al colectorului de gunoi Elixir funcționează pentru fiecare fir izolat, asigurând performanța optimă la nivel de sistem și împiedicând blocarea resurselor. 

Toleranța defecțiunilor

Elixirul are supraveghetorilor care poate reporni părți ale sistemului, dacă lucrurile nu merg bine și vă revin sistemul într-o stare inițială despre care se știe că funcționează.

Cum să obțineți Elixir

Instalați Elixir pe mașina dvs. înainte de a continua:

Mac OS X

  • homebrew
    • Actualizați-vă homebrew la cele mai recente: bea actualizare
    • Alerga: brew install elixir
  • MacPorts
    • Alerga: sudo port instala elixir

Unix (și Unix-like)

  • Arch Linux (Comunitatea repo)
    • Alerga: pacman -S elixir
  • openSUSE (și SLES 11 SP3 +)
    • Adăugați Erlang devel repo: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Alerga: zypper în elixir
  • Gentoo
    • Alerga: emerge --ask dev-lang / elixir
  • GNU Guix
    • Alerga: guix pachet -i elixir
  • Fedora 21 (și mai vechi)
    • Alerga: yum install elixir
  • FreeBSD
    • Din porturi: cd / usr / ports / lang / elixir && faceți instalare curată
    • De la pkg: pkg install elixir
  • Ubuntu 12.04 și 14.04 / Debian 7
    • Adăugați Erlang Solutions repo: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb&& & sudo dpkg -i erlang-solutions_1.0_all.deb
    • Alerga: sudo apt-get update
    • Instalați platforma Erlang / OTP și toate aplicațiile sale: sudo apt-get instalează esl-erlang
    • Instalați Elixir: sudo apt-get instalează elixiru

ferestre

  • Instalator web
    • Descărcați instalatorul
    • Faceți clic pe următorul, următorul, ... terminat
  • Chocolatey
    • elixir cinstice

Dezvoltare interactivă

Elixirul are un mod interactiv, pe care îl putem accesa prin linia de comandă așa cum este:

$ iex Interactive Elixir - apăsați Ctrl + C pentru a ieși (tastați h () ENTER pentru ajutor) iex> c "my_file.ex" # Compilează un fișier iex> t Enum # Tipuri de tipărite definite în modulul Enum iex> h IEx.pry # Imprimă documentația pentru funcționalitatea IEx pry iex> i "Hello, World" # Tipărește informații despre tipul de date dat

Utilizatorii Windows vor trebui să ruleze iex.bat pentru a accesa consola interactivă. 

Când intrăm în acest mod, putem introduce orice Elixir cod și obțineți întoarcerea instantaneu, deci este bine să începeți să învățați limba.

Să facem câteva expresii de bază:

ie> 2 + 2 4 ie> rundă (3.58) 4 iex> "salut" <> "lume" "hello world"

Când rulam un scenariu, facem asta din terminalul shell ca atare:

$ elixir scriptName.exs

Pentru a extrage dintr-un script la terminal, trebuie să folosim următoarele IO clasă:

IO.puts "Hello world from Elixir"

Ce despre module?

Modulele sunt disponibile pentru Elixir, astfel încât dezvoltatorii să poată extinde limba în multe feluri. 

Iată un exemplu de utilizare a schemei de testare Elixir ExUnit:

defmodule MathTest nu folosesc ExUnit.Case, async: adevărat test "poate adăuga două numere" nu afirmă 1 + 1 == 2 end end

Puteți efectua testele în paralel prin setare async: true. În acest context, Elixir folosește cât mai multe nuclee de CPU. 

Între timp, afirma poate verifica dacă există defecțiuni în codul dvs. Aceste caracteristici sunt construite folosind macro-uri Elixir, făcând posibilă adăugarea de noi construcții noi, ca și cum ar fi fost parte a limbajului Elixir în sine, ceea ce înseamnă o personalizare totală indiferent de productivitate (testarea unității în acest caz).

Urmeaza!

Elixir este un limbaj puternic și versatil folosit de unele dintre cele mai mari aplicații din lume chiar acum. Timpurile sale rapide de compilare, procese ușoare cu filet, extensibilitate cu module DSL și toleranță la defecțiuni supraveghetor îl fac ideal pentru orice echipă serioasă de dezvoltare web. În mod evident, când Elixir este utilizat pe deplin, există câștiguri masive care trebuie făcute. 

În următoarea parte, vom continua cu tipurile de date disponibile despre Elixir și despre modul în care vom scrie mai multe coduri și vom ajunge în sfârșit la compilarea acestora!

Cod