Elixir: 10 motivos para aprender

Henrique F. Teixeira
@truehenrique
Published in
7 min readNov 25, 2018

Elixir é uma linguagem de programação funcional criada no Brasil em 2011 que tem conquistado, aos poucos, corações de desenvolvedores ao redor do mundo.

A grande vantagem de optar por Elixir no back-end do seu próximo projeto é poder contar com uma grande quantidade de ferramentas e conceitos super modernos que a linguagem fornece de maneira simples, escalável e produtiva.

Veja abaixo diversas razões para você começar a estudar Elixir hoje:

1. Performance

Abaixo uma pequena comparação de Elixir (Plug) e Node (Express) em um teste onde envio 10.000 requisições para um endpoint da aplicação, que retorna um JSON.

Elixir (Plug):

Node (Express):

Não esqueça de dar uma olhada no benchmark do Gary Rennie, onde ele consegue chegar a 2 milhões de conexões websockets simultâneas apenas usando o Phoenix Framework (Framework web para o Elixir):

Ou neste post da equipe do https://discord.com/:

2. Mercado esquentando cada vez mais

A quantidade de empresas adotando a linguagem vêm crescendo constantemente, principalmente em São Paulo.

A lista não é pequena. Veja você mesmo:

Abaixo algumas das empresas que passaram a adotar ou já utilizavam Elixir aqui no Brasil:

  • B2W
  • CargoX
  • Locaweb
  • iFood
  • Codeminer
  • Jaya Tech
  • Pinterest
  • Resultados Digitais
  • Pipefy
  • Xerpa
  • Globo.com (Globo Play)

É claro que a quantidade de vagas ainda nem se compara com PHP ou Java. Só que há um ponto bem grande a se considerar:

Ainda faltam profissionais capacitados.

A relação “Profissionais Capacitados x Vagas” tem sido desproporcional.

Se capacitando em Elixir e programação funcional, há grandes chances de você se dar bem.

3. Produtividade: Esteja a frente de seus concorrentes

José Valim, o criador da linguagem, era core commiter do Ruby on Rails, que é um dos frameworks mais produtivos e pioneiros da atualidade, responsável pela popularização de muitos padrões que seguimos até hoje na web, como o MVC.

Assim como no Ruby on Rails, você consegue prototipar uma aplicação muito rápido utilizando o framework Phoenix.

Apenas alguns comandos no terminal e temos nosso banco de dados criado, assim como as tabelas, arquivos de controllers, templates ou até mesmo um CRUD completo.

Podemos também gerenciar, adicionar e remover bibliotecas utilizadas no nosso projeto com muita facilidade através do “mix”, o gerenciador de projetos, tasks e dependências oficial da linguagem.

Apesar de ser nova, a linguagem já conta com várias bibliotecas open source. Praticamente, quase tudo o que você precisar já tem no Package Manager oficial:

Bibliotecas para cache, autenticação, segurança, adapters e muito mais…

4. Sintaxe extremamente legível e focada no desenvolvedor

Elixir teve sua sintaxe inspirada em Ruby, uma linguagem conhecida por ser focada no bem estar do programador.

Podemos, por exemplo, utilizar “?” ou “!” na nomenclatura de funções e variáveis, tornando-as mais legíveis e agradáveis. Parênteses não são obrigatórios e não precisamos declarar o retorno explicitamente em funções com “return”.

Também temos “Pattern Matching” (reconhecimento de padrões),”Guards” e o invejável “Pipe Operator”, que torna possível economizar diversas linhas de código e tornar a legibilidade muito alta.

Veja este exemplo com pipe operator, você escreve código como se estivesse escrevendo uma “receita de um bolo!”:

Como provavelmente o código acima ficaria em linguagens convencionais:

Com Elixir ganhamos de “sobremesa” um código muito mais legível e intuitivo.

Elixir makes programmers better at their work, and it makes their work better

Pedro Assumpcao (https://medium.freecodecamp.org/elixir-a-big-picture-programming-language-755dcef2fa6a)

5. Todo o poder do Erlang, OTP e Tolerância a Falhas em suas mãos

Elixir compila para a máquina virtual do Erlang, herdando todas as suas características, além disso, você consegue acessar todas as funções e módulos nativos do Erlang.

A linguagem Erlang foi criada pela Ericsson para suportar conexões entre chamadas telefônicas com a máxima eficiência e de maneira tolerante a falhas. Sua performance é “arrazadora” quando o assunto é concorrência e programação distribuída.

Para se ter noção, o Whatsapp é todo escrito em Erlang, e o Messenger do Facebook também.

6. O projeto Phoenix LiveView

Já pensou em renderizar componentes front-end diretamente do back, e ainda obter uma performance incrível?

Veja a imagem abaixo:

Esse é um projeto do framework Phoenix.

Nessa demonstração estamos renderizando 80 divs a 60 frames por segundo diretamente do back!

O LiveView é basicamente uma conexão permantente entre cliente e servidor via Phoenix Channels, que pode responder eventos vindos do cliente, ou do servidor. Não é preciso duas linguagens ou um framework de front específico, é tudo Elixir!

Imagine poder fazer validações de formulários em tempo real, diretamente do servidor, aproveitando todo o seu código back-end!

Com Phoenix LiveView isso será possível!

UPDATE: Ja é possível. A nova versão do Phoenix (1.5) já vem com o LiveView!!

Leia mais em:

7. “HexDocs”: Tudo o que você precisa para documentar o seu projeto, e muito mais

Imagina gerar uma página totalmente responsiva, moderna e padronizada de documentação apenas através de comentários no código e algumas linhas de comando? Com o HexDocs isso é possível!

Veja como poderá ficar a documentação do seu projeto open-source:

Tudo o que você precisa é alguns comentários “marcando” as suas funções e módulos utilizando @doc e @moduledoc e depois rodar um pequeno comando!

Veja:

Além disso, se você habilitar a sua documentação para ser testada com “doctests” todos os exemplos que você adicionar em um bloco ##Examples será testado junto com seus testes automatizados!

Leia mais sobre Doctests:

Leia mais sobre gerar sua documentação automaticamente:

8. Macros e Metaprogramação

“Macros” é uma funcionalidade do Elixir que permite a extensão da linguagem. Em outras palavras, você pode criar “código que escreve código” em tempo de compilação. É bem útil quando queremos adicionar funcionalidades diferentes na linguagem, ou um “sintax sugar” para deixar o código mais legível.

Por exemplo, a biblioteca para testes automatizados do Elixir, chamada “ExUnit”, quando importada, adiciona macros que permitem escrevermos testes de maneira muito mais legível e intuitiva.

Veja o exemplo abaixo, com a macro “test”:

9. Ótima documentação e comunidade extremamente ativa

Tudo o que você precisar saber sobre a linguagem está disponível na internet, de forma bem clara.

Isso geralmente é um déficit em linguagens que estão a pouco tempo no mercado. Mas no caso de Elixir, isso não ocorre!

Apesar da comunidade ainda não ser tão grande, temos MUITO conteúdo para aprendizado na web.

Veja a quantidade e a qualidade do conteúdo deste site, feito justamente para compartilhar conhecimento sobre Elixir:

Fora o Stack Overflow e demais sites de perguntas, há um fórum específico e bem ativo para tratar de duvidas sobre a linguagem:

Ao decorrer do ano conferências e meetups especializados em Elixir ocorrem em diversos países, inclusive no Brasil:

Além de tudo, temos cursos excelentes disponíveis em português, como esse do Rafael Camarda:

10. Programação funcional

A cada dia que passa, a programação funcional se torna mais popular.

Conceitos como imutabilidade, pureza e o estilo declarativo de programar têm se mostrado grandes aliados na hora de construir sistemas altamente escaláveis!

Com linguagens funcionais você obtêm uma maior facilidade para aproveitar todo o potencial da sua máquina, distribuindo o processamento de forma efetiva entre todos os núcleos (cores)

Além do mais, estudar uma linguagem de programação funcional nos trás uma capacidade de abstração diferente para resolução de problemas. De certa forma, abre a nossa mente, nos trazendo “insights” que são um grande adicional na hora de escrever código dentro de qualquer paradigma.

Saimos da zona de conforto.

https://www.truehenrique.com/

--

--