Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lightning Talk sobre Elixir

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Lightning Talk sobre Elixir

Avatar for estevao

estevao

July 09, 2015
Tweet

Other Decks in Technology

Transcript

  1. • Tudo gira em torno de funções, funções quase sempre

    são entradas ou retorno de outras funções • Estrutura de dados são imutáveis • Evita estados • Dados são transformados ao invés de alterados • É legal
  2. • Linguagem funcional • Criada pela Ericsson em 1986 •

    Roda na ErlangVM • Filosofia de processos e let-it-crash • Troca de processos 1 -module(fact). 2 -export([fac/1]). 3 4 fac(0) -> 1; 5 fac(N) -> N * fac(N-1). 1 %% quicksort:qsort(List) 2 %% Classificar uma lista de itens 3 -module(quicksort). 4 -export([qsort/1]). 5 6 qsort([]) -> []; 7 qsort([Pivot|Rest]) -> 8 qsort([X || X <- Rest, X < Pivot]) ++ [Pivot] 9 ++ qsort([Y || Y <- Rest, Y >= Pivot]).
  3. • Criado por brasileiro, José Valim • Patrocinado pela Plataformatec

    • Criado com conceitos de Smalltalk, Ruby, Python, etc 1 parent = self() 2 3 # Spawns an Elixir process (not an operating 4 system one!) 5 spawn_link(fn -> 6 send parent, {:msg, "hello world"} 7 end) 8 9 # Block until the message is received 10 receive do 11 {:msg, contents} -> IO.puts contents 12 end <3
  4. • Processos = Multi-core por padrão • Filosofia let-it-crash: deixe

    os processos darem erro e confie nos hipervisors para reiniciá-los • Estruturas simples: não há classes nem objetos • Roda direto na ErlangVM: não é transpiler
  5. • Exemplo: Conhece o = ? Acha que sabe o

    que ele faz? • Maior performance • Outro paradigma para se aprender: legal
  6. > a = 2 2 > a 2 > [

    a | tail ] = [1, 2, 3] [1, 2, 3] > a 1
  7. • Utilize o pipe operator user_data = User.get_data user_data |>

    add_shipping |> calculate_installments |> convert_to_usd body = Request.get_body body |> to_string |> Poison.decode! |> extract_email