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

Lightning Talk sobre Elixir

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