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

Elixir e suas partes boas

Elixir e suas partes boas

A linguagem Elixir é bastante poderosa e robusta. Nesta palestra apresentarei alguns aspectos interessantes da linguagem e da experiência do desenvolvedor com os olhos de quem veio do mundo de Golang e de PHP.

Hussani Oliveira

November 28, 2021
Tweet

More Decks by Hussani Oliveira

Other Decks in Programming

Transcript

  1. Elixir e suas
    partes boas
    a perspectiva de quem não
    começou com a linguagem

    View Slide

  2. Introdução

    View Slide

  3. foto aqui Hussani Oliveira
    Líder de Desenvolvimento @ QuintoAndar
    Twitter: https://twitter.com/hussanii
    LinkedIn: https://www.linkedin.com/in/hussani
    Slides: https://speakerdeck.com/hussani

    View Slide

  4. View Slide

  5. Programação Funcional

    View Slide

  6. Programação Funcional
    "[...] programação funcional é um paradigma de
    programação que trata a computação como uma
    avaliação de funções matemáticas e que evita estados ou
    dados mutáveis."
    - Wikipedia

    View Slide

  7. Programação Funcional
    "[...] programação funcional é um paradigma de
    programação que trata a computação como uma
    avaliação de funções matemáticas e que evita estados ou
    dados mutáveis."
    - Wikipedia, por Hussani

    View Slide

  8. // Java
    "MiNha StRing".toLowerCase().substring(0, 6);
    // string

    View Slide

  9. # Elixir
    "MiNha StRing"
    |> String.downcase
    |> String.slice(6..-1)
    # string

    View Slide

  10. encoder.encodeToString(
    "MiNha StRing"
    .toLowerCase()
    .substring(0, 6)
    .getBytes()
    );

    View Slide

  11. "MiNha StRing"
    |> String.downcase
    |> String.slice(6..-1)
    |> Base.encode64
    # c3RyaW5n

    View Slide

  12. x = 4
    if true do
    x = 2
    IO.puts x # 2
    end
    IO.puts x # 4

    View Slide

  13. Pattern Matching
    "[...] casamento de padrões é o ato de verificação da
    presença de um padrão em um conjunto de dados."
    - Wikipedia

    View Slide

  14. Tooling

    View Slide

  15. Mix
    ● Inicialização de projetos

    View Slide

  16. Mix
    ● Inicialização de projetos
    ● Build da aplicação

    View Slide

  17. Mix
    ● Inicialização de projetos
    ● Build da aplicação
    ● Testes

    View Slide

  18. Mix
    ● Inicialização de projetos
    ● Build da aplicação
    ● Testes
    ● Gerenciamento de dependências

    View Slide

  19. Mix
    ● Inicialização de projetos
    ● Build da aplicação
    ● Testes
    ● Gerenciamento de dependências
    ● É extensível

    View Slide

  20. REPL
    ● read–eval–print loop

    View Slide

  21. ● read–eval–print loop modo interativo
    REPL

    View Slide

  22. ● read–eval–print loop modo interativo
    ● permite executar instruções no terminal
    REPL

    View Slide

  23. ● read–eval–print loop modo interativo
    ● permite executar instruções no terminal
    ● possui autocomplete
    REPL

    View Slide

  24. ● read–eval–print loop modo interativo
    ● permite executar instruções no terminal
    ● possui autocomplete
    ● pode carregar sua aplicação, um módulo, etc.
    REPL

    View Slide

  25. REPL

    View Slide

  26. ExUnit
    ● Ferramenta de testes da biblioteca padrão

    View Slide

  27. ExUnit
    ● Ferramenta de testes da biblioteca padrão
    ● Rápida e concisa

    View Slide

  28. ExUnit
    ● Ferramenta de testes da biblioteca padrão
    ● Rápida e concisa
    ● Suporta paralelismo na execução

    View Slide

  29. ExUnit
    ● Ferramenta de testes da biblioteca padrão
    ● Rápida e concisa
    ● Suporta paralelismo na execução
    ● Pode detectar race conditions

    View Slide

  30. Dialyzer / Dialyxir
    ● DIscrepancy AnaLYZer for ERlang

    View Slide

  31. Dialyzer / Dialyxir
    ● DIscrepancy AnaLYZer for ERlang
    ● Análise estática para projetos Erlang (e derivados)

    View Slide

  32. Phoenix
    ● Framework web mais utilizado em Elixir

    View Slide

  33. Phoenix
    ● Framework web mais utilizado em Elixir
    ● Persistência (Ecto)

    View Slide

  34. Phoenix
    ● Framework web mais utilizado em Elixir
    ● Persistência (Ecto)
    ● Real Time (Liveview)

    View Slide

  35. Phoenix
    ● Framework web mais utilizado em Elixir
    ● Persistência (Ecto)
    ● Real Time (Liveview)
    ● Internacionalização (Gettext)

    View Slide

  36. Phoenix
    ● Framework web mais utilizado em Elixir
    ● Persistência (Ecto)
    ● Real Time (Liveview)
    ● Internacionalização (Gettext)
    ● Muito mais!

    View Slide

  37. Ecossistema

    View Slide

  38. BEAM
    ● Máquina Virtual Erlang

    View Slide

  39. BEAM
    ● Máquina Virtual Erlang
    ● Outras linguagens utilizam

    View Slide

  40. BEAM
    ● Máquina Virtual Erlang
    ● Outras linguagens utilizam
    ○ Gleam
    ○ Alpaca
    ○ Erlang
    ○ Etc.

    View Slide

  41. Interoperabilidade
    :crypto.hash(:md5 , "Elixir Brasil")
    |> Base.encode16
    # "BD9C75D2D6ADC557917AB1A72CC0A580"

    View Slide

  42. Interoperabilidade
    :crypto.hash(:md5 , "Elixir Brasil")
    |> Base.encode16
    # "BD9C75D2D6ADC557917AB1A72CC0A580"

    View Slide

  43. Interoperabilidade
    def deps do
    [{:png, github: "yuce/png"}]
    end

    View Slide

  44. Menções honrosas

    View Slide

  45. Menções honrosas
    ● Processos
    ● Documentação
    ● Coesão de linguagem
    ● Comunidade

    View Slide

  46. Obrigado! :)
    https://twitter.com/hussanii

    View Slide