Introduktion till Erlang och Elixir

Elixir är ett snabbt, dynamiskt och skalbart språk som snabbt antas av startmängden och etablerade företag för produktionsapplikationer. 

Pinterest, Brightcove, Discord och Canvas, för att nämna några, alla kör på Elixir, vilket i sin tur utnyttjar den lågt latens, feltoleranta Erlang VM, vilket innebär fullständig tillgång till Erlangs ekosystem som används av företag som Heroku, WhatsApp, Klarna och Basho.

Från och med denna handledning lär du dig grundläggande kunskap för att få dig igång med Erlang och kodning med Elixir.

Vad är syntaksen som?

Syntaxen är funktionell och främjar en kort, snabb kodningstil som gör det möjligt för användarna att enkelt utnyttja sina data:

% Användare namn: namn, ålder: ålder = User.get ("John Doe") namn # => "John Doe"

I kombination med vakter, vi har en stark struktur:

def serve_drinks (% Användare ålder: ålder) när ålder> = 21 gör # Kod som serverar drycker! end server_drinks User.get ("John Doe") # => Misslyckas om användaren är under 21

Kan det skala?

Korrekt; Elixir byggdes med skalbara, distribuerade system i åtanke. 

Elixir har gängat utförande (kallat processer) i en miljö där flera processer kan kommunicera med varandra via meddelanden. 

Dessa lätta trådar kan köras i hundratusentals samtidigt. Elixirs utmärkta skräpkollektor arbetar för varje isolerad tråd, vilket säkerställer att prestanda är optimal över hela systemet och förhindrar resurslåser. 

Feltolerans

Elixir har handledare som kan starta om delar av ditt system om sakerna går fel och återställa ditt system till ett initialt tillstånd som är känt att fungera.

Hur man får Elixir

Installera Elixir på din maskin innan vi fortsätter:

Mac OS X

  • homebrew
    • Uppdatera din homebrew till senaste: brygga uppdatering
    • Springa: brygga installera elixir
  • Macports
    • Springa: sudo port installera elixir

Unix (och Unix-liknande)

  • Arch Linux (community repo)
    • Springa: pacman -S elixir
  • openSUSE (och SLES 11 SP3 +)
    • Lägg till Erlang devel repo: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Springa: zypper i elixir
  • Gentoo
    • Springa: dyka upp - skicka dev-lang / elixir
  • GNU Guix
    • Springa: guix-paketet -i elixir
  • Fedora 21 (och äldre)
    • Springa: yum installera elixir
  • FreeBSD
    • Från hamnar: cd / usr / ports / lang / elixir && gör installationen ren
    • Från pkg: pkg installera elixir
  • Ubuntu 12.04 och 14.04 / Debian 7
    • Lägg till Erlang Solutions repo: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
    • Springa: sudo apt-get uppdatering
    • Installera Erlang / OTP-plattformen och alla dess applikationer: sudo apt-get install esl-erlang
    • Installera Elixir: sudo apt-get installera elixir

Windows

  • Webinstallatör
    • Ladda ner installationsprogrammet
    • Klicka på nästa, nästa, ..., avsluta
  • Chocolaty
    • cinst elixir

Interaktiv utveckling

Elixir har ett interaktivt läge, som vi kan komma åt via kommandoradsprompten som så:

$ iex Interactive Elixir - tryck Ctrl + C för att avsluta (skriv h () ENTER för hjälp) iex> c "my_file.ex" # Kompilerar en fil iex> t Enum # Skrivartyper definierade i modulen Enum iex> h IEx.pry # Skriver dokumentationen för IEx-pryfunktionalitet iex> i "Hej, Värld" # Skriver ut information om den givna datatypen

Windows-användare måste springa iex.bat för att komma åt den interaktiva konsolen. 

När vi går in i det här läget kan vi skriva alla Elixir koden och få tillbaka direkt, så det är bra att börja lära sig språket.

Låt oss göra några grundläggande uttryck:

dvs> 2 + 2 4 ie> round (3.58) 4 iex> "hej" <> "world" "hej världen"

När vi kör ett skript gör vi det från shell terminalen som så:

$ elixir scriptName.exs

För att mata ut från ett skript till terminalen måste vi använda följande IO klass:

IO.puts "Hej världen från Elixir"

Vad om moduler?

Moduler finns tillgängliga för Elixir så att utvecklare kan expandera språket på många sätt. 

Här är ett exempel på att använda Elixirs testram ExUnit:

defmodule MathTest använder ExUnit.Case, async: true test "kan lägga till två siffror" hävda 1 + 1 == 2 änden

Du kan köra testen parallellt genom att ställa in async: true. I denna inställning använder Elixir så många CPU-kärnor som möjligt. 

Under tiden, hävda kan kontrollera om påståendet misslyckas i din kod. Funktionerna är byggda med hjälp av Elixir-makron, vilket gör det möjligt att lägga till hela nya konstruktioner som om de var en del av själva Elixir-språket, vilket innebär total anpassning för vilken produktivitet som helst (enhetstestning i det här fallet) du kanske behöver.

Det kommer mera!

Elixir är ett kraftfullt och mångsidigt språk som används av några av de största appsna i världen just nu. Dess snabba sammanställda tider, lätta trådprocesser, utbyggbarhet med DSL-moduler och feltolerans medföljer Handledare gör den idealisk för alla seriösa webbutvecklingsgrupper. Det är uppenbart att när Elixir används fullt ut finns det stora vinster att göra. 

I nästa del fortsätter vi på de tillgängliga datatyperna Elixir och hur man skriver mer kod, och vi kommer äntligen att komma ner på att sammanställa det!