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.

C1d23f296b6d845b95a7ca2c5fe9de4a?s=128

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
  2. Introdução

  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
  4. None
  5. Programação Funcional

  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
  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
  8. // Java "MiNha StRing".toLowerCase().substring(0, 6); // string

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

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

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

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

    x # 2 end IO.puts x # 4
  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
  14. Tooling

  15. Mix • Inicialização de projetos

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

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

    Testes
  18. Mix • Inicialização de projetos • Build da aplicação •

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

    Testes • Gerenciamento de dependências • É extensível
  20. REPL • read–eval–print loop

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

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

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

    terminal • possui autocomplete REPL
  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
  25. REPL

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

  27. ExUnit • Ferramenta de testes da biblioteca padrão • Rápida

    e concisa
  28. ExUnit • Ferramenta de testes da biblioteca padrão • Rápida

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

    e concisa • Suporta paralelismo na execução • Pode detectar race conditions
  30. Dialyzer / Dialyxir • DIscrepancy AnaLYZer for ERlang

  31. Dialyzer / Dialyxir • DIscrepancy AnaLYZer for ERlang • Análise

    estática para projetos Erlang (e derivados)
  32. Phoenix • Framework web mais utilizado em Elixir

  33. Phoenix • Framework web mais utilizado em Elixir • Persistência

    (Ecto)
  34. Phoenix • Framework web mais utilizado em Elixir • Persistência

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

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

    (Ecto) • Real Time (Liveview) • Internacionalização (Gettext) • Muito mais!
  37. Ecossistema

  38. BEAM • Máquina Virtual Erlang

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

  40. BEAM • Máquina Virtual Erlang • Outras linguagens utilizam ◦

    Gleam ◦ Alpaca ◦ Erlang ◦ Etc.
  41. Interoperabilidade :crypto.hash(:md5 , "Elixir Brasil") |> Base.encode16 # "BD9C75D2D6ADC557917AB1A72CC0A580"

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

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

  44. Menções honrosas

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

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