Introduksjon til Erlang og Elixir

Elixir er et raskt, dynamisk og skalerbart språk som raskt blir vedtatt av oppstartsmengden og etablerte bedrifter både for produksjonsapplikasjoner. 

Pinterest, Brightcove, Discord og Canvas, for å nevne noen, kjører alle på Elixir, som igjen utnytter lavt latency, feiltolerant Erlang VM, noe som betyr full tilgang til Erlang-økosystemet som brukes av selskaper som Heroku, WhatsApp, Klarna og Basho.

Fra og med denne opplæringen lærer du den grunnleggende kunnskapen for å komme i gang i Erlang og koding med Elixir.

Hva er syntaksen som?

Syntaxen er funksjonell og fremmer en kort, hurtig kodestil, som gjør det mulig for brukerne å enkelt trekke seg til dataene sine:

% Bruker navn: navn, alder: alder = User.get ("John Doe") navn # => "John Doe"

Når kombinert med vakter, vi har en kraftig struktur:

def serve_drinks (% Bruker alder: alder) når alder> = 21 gjør # Kode som serverer drinker! end server_drinks User.get ("John Doe") # => Mislykkes hvis brukeren er under 21

Kan det skalere?

Bekreftende; Elixir ble bygget med skalerbare, distribuerte systemer i tankene. 

Elixir har gjenget utførelse (referert til som prosesser) i et miljø der flere prosesser kan kommunisere med hverandre via meldinger. 

Disse lette trådene kan kjøres i hundretusener samtidig. Elixirs utmerkede søppelkollektor fungerer for hver isolert tråd, noe som sikrer at ytelsen er optimal system-wide og hindrer ressurslåser. 

Feiltoleranse

Elixir har veiledere som kan starte deler av systemet ditt hvis ting går galt og gå tilbake til systemet til en innledende tilstand som er kjent for å fungere.

Hvordan få Elixir

Installer Elixir på maskinen din før vi fortsetter:

Mac OS X

  • Hjemme brygget
    • Oppdater din homebrew til siste: bryg oppdatering
    • Løpe: brygg installere elixir
  • Macports
    • Løpe: sudo port installere elixir

Unix (og Unix-lignende)

  • Arch Linux (Community repo)
    • Løpe: pacman -S elixir
  • openSUSE (og SLES 11 SP3 +)
    • Legg til Erlang devel repo: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Løpe: zypper i eliksir
  • Gentoo
    • Løpe: dukke opp - skift dev-lang / elixir
  • GNU Guix
    • Løpe: guix pakke -i elixir
  • Fedora 21 (og eldre)
    • Løpe: Du installerer elixir
  • FreeBSD
    • Fra porter: cd / usr / ports / lang / elixir && gjør installasjonen ren
    • Fra pkg: pkg installere elixir
  • Ubuntu 12.04 og 14.04 / Debian 7
    • Legg til Erlang Solutions repo: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb&& sudo dpkg -i erlang-solutions_1.0_all.deb
    • Løpe: sudo apt-get oppdatering
    • Installer Erlang / OTP-plattformen og alle dens applikasjoner: sudo apt-get installere esl-erlang
    • Installer Elixir: sudo apt-get install elixir

Windows

  • Web installer
    • Last ned installasjonsprogrammet
    • Klikk neste, neste, ..., ferdig
  • chocolatey
    • cinst elixir

Interaktiv utvikling

Elixir har en interaktiv modus, som vi kan få tilgang til via kommandolinjeprompt slik:

$ iex Interactive Elixir - trykk Ctrl + C for å avslutte (skriv h () ENTER for hjelp) iex> c "my_file.ex" # Kompilerer en fil iex> t Enum # Skrivertyper definert i modulen Enum iex> h IEx.pry # Skriver dokumentasjonen for IEx-pry-funksjonaliteten iex> i "Hei, Verden" # Skriver ut informasjon om den gjeldende datatypen

Windows-brukere må løpe iex.bat for å få tilgang til den interaktive konsollen. 

Når vi går inn i denne modusen, kan vi skrive inn noen Elixir kode og kom tilbake umiddelbart, så det er bra å begynne å lære språket.

La oss gjøre noen grunnleggende uttrykk:

dvs> 2 + 2 4 ie> runde (3.58) 4 iex> "hei" <> "verden" "hallo verden"

Når vi kjører et skript, gjør vi det fra shell terminalen som sådan:

$ elixir scriptName.exs

For å sende ut fra et skript til terminalen, må vi bruke følgende IO klasse:

IO.puts "Hei verden fra Elixir"

Hva om moduler?

Moduler er tilgjengelige for Elixir, slik at utviklere kan utvide språket på mange måter. 

Her er et eksempel på bruk av Elixirs testramme ExUnit:

defmodule MathTest bruker ExUnit.Case, async: sann test "kan legge til to tall" gjenkjenn 1 + 1 == 2 ende ende

Du kan kjøre testene parallelt ved å sette inn asynk: sant. I denne innstillingen bruker Elixir så mange CPU-kjerner som mulig. 

i mellomtiden, hevde kan sjekke for påstandssvikt i koden din. Disse funksjonene er bygd med Elixir-makroer, noe som gjør det mulig å legge til helt nye konstruksjoner som om de var en del av selve Elixir-språket, noe som betyr total tilpasning for hva som helst produktivitet (enhetstesting i dette tilfellet) du trenger.

Mer kommer!

Elixir er et kraftig og allsidig språk som brukes av noen av de største appene i verden akkurat nå. Dens raske kompileringstider, lette trådprosesser, utvidbarhet med DSL-moduler, og feiltoleranse som følger med Supervisor gjør den ideell for enhver seriøs webutviklingsteam. Klart, når Elixir er fullt utnyttet, er det massive gevinster å bli gjort. 

I neste del fortsetter vi på de tilgjengelige datatyper av Elixir og hvordan du skriver mer kode, og vi vil endelig komme ned for å kompilere det!