2 pontos por GN⁺ 2023-11-11 | 1 comentários | Compartilhar no WhatsApp

Mudando para Elixir

  • No novo trabalho, usa Elixir como principal linguagem de backend.
  • Não tinha experiência com Elixir nem Erlang, mas aprendeu com facilidade graças à sintaxe semelhante à de Ruby.
  • Evita os problemas de gerenciamento de estado das linguagens orientadas a objetos e aproveita as vantagens da imutabilidade e da programação funcional.

Vantagens do Elixir

  • Código com estado mutável é difícil de manter.
  • Elixir, assim como Ruby, oferece suporte a DSLs, mas usa macros em tempo de compilação para gerar código em tempo de execução.
  • Mesmo sem escrever testes, é possível encontrar em tempo de compilação erros no uso de macros.

Sintaxe e expressões

  • A sintaxe de pipeline do Elixir é boa, mas prefere o operador de 'threading' do Clojure.
  • Por meio da expressão with, é possível dividir funções complexas entre o caminho de sucesso e a parte de tratamento de erros.

Tratamento de exceções

  • Em Ruby, é comum usar exceções no controle de fluxo.
  • Em Elixir, em vez de exceções, usam-se os mônadas Result / Either, com ok e error como valores de retorno.

Opinião do GN⁺

O ponto mais importante deste texto é o prazer de programar em Elixir e a facilidade de manutenção que a linguagem proporciona. É interessante como ela resolve os complexos problemas de gerenciamento de estado das linguagens orientadas a objetos e melhora a estabilidade e a legibilidade do código por meio da imutabilidade e da programação funcional. Em especial, o sistema de macros, que permite detectar erros em tempo de compilação, oferece aos desenvolvedores um ambiente mais seguro para escrever código. Essas características também devem fazer até engenheiros de software iniciantes sentirem a atração de aprender Elixir.

1 comentários

 
GN⁺ 2023-11-11
Comentários do Hacker News
  • O interesse pela linguagem Elixir aumentou nas últimas semanas por meio de vídeos no YouTube.

    • Elixir agrada pelas ideias de Erlang, mas a experiência prática de uso parece um tanto peculiar.
    • Há uma visão positiva sobre processos isolados e passagem de mensagens (Actors) como o futuro da programação distribuída.
    • Há apreço pelo recurso de pattern matching, mas também uma visão cética sobre a "mágica" de coisas como LiveView e LiveBook no Elixir.
    • Existe estranhamento em relação a termos e conceitos específicos do Elixir, como GenServers.
    • Há percepção dos riscos de uma comunidade pequena, mas também elogios às conquistas da comunidade.
    • Foi expressada expectativa pela implementação de um sistema de tipos.
  • Como principal vantagem de Elixir/Erlang, foi destacada a facilidade para trabalhos em segundo plano.

    • Com base na experiência em um emprego anterior, foi percebido que, usando Task no Elixir, o servidor consegue processar requisições HTTP sem cair.
  • A palestra "The Soul of Erlang and Elixir", de Sasa Juric, foi citada para destacar a força da linguagem.

  • Foi compartilhada a experiência de alguém que usa Erlang desde 1991.

    • Embora tenha usado outras linguagens, Erlang é a que mais lhe dá prazer.
    • A pessoa planeja continuar usando Erlang até se aposentar.
  • Foi dito que aprender e usar Elixir é prazeroso, com satisfação pela simplicidade e funcionalidade de BEAM/OTP.

  • Como vantagem do Elixir, foram destacadas a diversão semelhante à de Ruby e as características de imutabilidade e programação funcional, que eliminam desvantagens da orientação a objetos.

    • Ao desejar a adição de um sistema de tipos, espera-se melhorar a compreensão de grandes bases de código.
  • Foi apontado um mal-entendido sobre o uso de exceções como fluxo de controle em Ruby.

  • Como usuário de F#, alguém expressou achar Elixir confuso.

    • Como as assinaturas das funções não fornecem informações de tipo, isso dificulta o uso em bibliotecas grandes.
    • Foi feita uma pergunta sobre quais seriam os principais atrativos do Elixir.
  • A partir da experiência de uso do Elixir, foram destacadas a facilidade de aprendizado, o pattern matching e as vantagens de dados imutáveis.

    • Houve a experiência de que ele se destaca na construção de sistemas CQRS.
    • Também houve elogios à estabilidade do BEAM e à forma como o GenServer lida com erros.
  • Houve um alerta contra o otimismo típico da fase inicial em relação a novas tecnologias.

    • Recomenda-se compartilhar experiências depois de realmente usar a tecnologia por um longo período.