Introductie tot Erlang en Elixir

Elixir is een snelle, dynamische en schaalbare taal die snel in gebruik wordt genomen door de startup-crowd en gevestigde bedrijven voor productietoepassingen. 

Pinterest, Brightcove, Discord en Canvas, om er een paar te noemen, allemaal draaien op Elixir, die op zijn beurt gebruik maakt van de lage latentie, fouttolerante Erlang VM, wat volledige toegang tot het Erlang-ecosysteem betekent dat wordt gebruikt door bedrijven zoals Heroku, WhatsApp, Klarna en Basho.

Vanaf deze tutorial leer je de fundamentele kennis om jezelf op gang te helpen in Erlang en te coderen met Elixir.

Hoe ziet de syntax eruit??

De syntaxis is functioneel en promoot een korte, snelle codeerstijl, waarmee gebruikers eenvoudig hun gegevens kunnen onttrekken:

% Gebruiker name: name, age: age = User.get ("John Doe") name # => "John Doe"

In combinatie met bewakers, we hebben een krachtige structuur:

def serve_drinks (% Gebruiker leeftijd: leeftijd) wanneer leeftijd> = 21 do # Code die drankjes serveert! end serve_drinks User.get ("John Doe") # => mislukt als de gebruiker jonger is dan 21 jaar

Can It Scale?

Bevestigend; Elixir is gebouwd met schaalbare, gedistribueerde systemen in gedachten. 

Elixir biedt threaded uitvoering (processen genoemd) in een omgeving waarin meerdere processen via berichten met elkaar kunnen communiceren. 

Deze lichtgewicht threads kunnen worden uitgevoerd in de honderdduizenden gelijktijdig. De uitstekende garbagecollector van Elixir werkt voor elke geïsoleerde thread, zodat de prestaties optimaal zijn voor het hele systeem en het blokkeren van bronnen wordt voorkomen. 

Fouttolerantie

Elixir heeft supervisors die delen van uw systeem opnieuw kan starten als er iets misgaat en uw systeem terugzet naar een oorspronkelijke staat waarvan bekend is dat deze werkt.

Hoe Elixir te krijgen

Installeer Elixir op uw computer voordat we verder gaan:

Mac OS X

  • homebrew
    • Update je homebrew naar de nieuwste: brouw update
    • Rennen: zet elixer aan
  • MacPorts
    • Rennen: sudo port install elixir

Unix (en Unix-achtig)

  • Arch Linux (Community-repo)
    • Rennen: pacman -S elixer
  • openSUSE (en SLES 11 SP3 +)
    • Erlang devel repo toevoegen: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Rennen: zypper in elixer
  • Gentoo
    • Rennen: emerge --ask dev-lang / elixir
  • GNU Guix
    • Rennen: guix-pakket -i elixer
  • Fedora 21 (en ouder)
    • Rennen: yum installeer elixer
  • FreeBSD
    • Van havens: cd / usr / ports / lang / elixir && make install clean
    • Van pkg: pkg installeer elixer
  • Ubuntu 12.04 en 14.04 / Debian 7
    • Repository van Erlang Solutions toevoegen: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
    • Rennen: sudo apt-get update
    • Installeer het Erlang / OTP-platform en alle bijbehorende toepassingen: sudo apt-get install esl-erlang
    • Installeer Elixir: sudo apt-get install elixer

ramen

  • Web-installatieprogramma
    • Download het installatieprogramma
    • Klik op Volgende, Volgende, ..., Voltooien
  • chocolatey
    • cinst elixer

Interactieve ontwikkeling

Elixir heeft een interactieve modus, waartoe we via de prompt van de opdrachtregel toegang hebben:

$ iex Interactive Elixir - druk op Ctrl + C om te verlaten (typ h () ENTER voor hulp) iex> c "my_file.ex" # Compileert een bestand iex> t Enum # Printsoorten gedefinieerd in de module Enum iex> h IEx.pry # Drukt de documentatie af voor IEx-wrikfunctie iex> i "Hallo, Wereld" # Drukt informatie over het gegeven gegevenstype af

Windows-gebruikers moeten uitvoeren iex.bat om toegang te krijgen tot de interactieve console. 

Wanneer we deze modus openen, kunnen we elk type typen Elixer code en krijg meteen de terugkeer, dus het is goed om te beginnen met het leren van de taal.

Laten we enkele standaarduitdrukkingen doen:

ie> 2 + 2 4 ie> rond (3.58) 4 iex> "hallo" <> "wereld" "hallo wereld"

Wanneer we een script uitvoeren, doen we dat vanaf de shell-terminal als volgt:

$ elixir scriptName.exs

Voor de uitvoer van een script naar de terminal moeten we het volgende gebruiken IO klasse:

IO.puts "Hallo wereld van Elixir"

Hoe zit het met Modules?

Modules zijn beschikbaar voor Elixir, zodat ontwikkelaars de taal op verschillende manieren kunnen uitbreiden. 

Hier is een voorbeeld van het gebruik van Elixir's testraamwerk ExUnit:

defmodule MathTest gebruikt ExUnit.Case, async: ware test "kan twee getallen toevoegen" beweer 1 + 1 == 2 einde einde

U kunt de tests parallel uitvoeren door in te stellen async: waar. In deze instelling gebruikt Elixir zoveel mogelijk CPU-kernen. 

Ondertussen, beweren kan controleren op assertiefouten in uw code. Deze functies zijn gebouwd met behulp van Elixir-macro's, waardoor het mogelijk is om geheel nieuwe constructies toe te voegen alsof ze deel uitmaken van de Elixir-taal zelf, wat totale aanpassing betekent voor welke productiviteit dan ook (test van eenheden in dit geval) die u mogelijk nodig hebt.

Meer volgt nog!

Elixir is een krachtige en veelzijdige taal die momenteel wordt gebruikt door enkele van de grootste apps ter wereld. De snelle compileertijden, lichtgewicht schroefdraadprocessen, uitbreidbaarheid met DSL-modules en fouttolerantie geleverd met Leidinggevende maak het ideaal voor elk serieus webontwikkelingsteam. Het is duidelijk dat wanneer Elixir volledig benut wordt, er enorme winst te behalen valt. 

In het volgende deel gaan we verder met de beschikbare gegevenstypen van Elixir en hoe we meer code kunnen schrijven, en we komen er uiteindelijk op neer om het te compileren!