Elixir: 10 motivos para aprender

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

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 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

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

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!”:

Exemplo de função com o Pipe Operator

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

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

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

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

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

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

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/

@truehenrique

/truehenrique.com/ desenvolvimento de software, meu dia a dia e uma “pitada” de filosofia.

@truehenrique

https://www.truehenrique.com/

Henrique F. Teixeira

Written by

Analista de sistemas na @rdstation e pseudo-escritor! (https://truehenrique.com)

@truehenrique

https://www.truehenrique.com/