Elixir é uma linguagem dinâmica e functional contruida para contruir aplicações escaláveis e manuteníveis.
Elixir aproveita a VM do Erlang, conhecida por executar sistemas de baixa lantência, distribuídos e tolerante a falhas, enquanto também sendo sendo utilizado com sucesso no desenvolvimento web e incorporado no software domain.
Para aprender mais sobre Elixir, verifique o guia de início rápido. ou continue vendo a visão geral da plataforma, linguagem e suas ferramentas.
Destaques da plataforma
Escalabilidade
Todo código Elixir roda dentro de pequenas threads (chamadas processos) que são isolados e trocam informações entre si.
Devido a sua natureza pequena, não é incomum ter centenas de milhares de processos executando simultaneamente na mesma maquina. O isolamento permite que os processos sejam coletados de forma independente, reduzindo as pausas do sistema e usando todos os recursos da máquina da maneira mais eficiente possível (escalonamento vertical).
Processos são também capazes de se comunicar com outros processos rodando em maquinas diferentes na mesma rede. Isto provê a base para a distribuição, permitindo os desenvolvedores trabalhar entre diferentes nôs (escalonamento horizontal).
Tolerante a falhas
The unavoidable truth about software running in production is that things will go wrong. Even more when we take network, file systems, and other third-party resources into account.
To cope with failures, Elixir provides supervisors which describe how to restart parts of your system when things go awry, going back to a known initial state that is guaranteed to work:
Features da linguagem
Programação funcional
Programação funcional promove um estilo de código que ajuda os desenvolvedores escrever um código menor, rápido, e mantenível. Por exemplo, pattern matching permite desenvolvedores a facilmente desestruturar informações e acessar seu conteúdo:
Quando misturado com guards, o pattern matching nos permite combinar e afirmar com elegância condições específicas para que algum código seja executado:
Elixir depende muito desses recursos para garantir que seu software esteja funcionando sob as restrições esperadas. E quando não é, não se preocupe, os supervisores têm a sua volta!
Extensibilidades e DSLs
Elixir has been designed to be extensible, letting developers naturally extend the language to particular domains, in order to increase their productivity.
Como por exemplo, vamos escrever um simples caso usando um framework de teste para Elixir chamado ExUnit:
A opção async: true
permite test
s rodar em pararelo, usando tantos núcleos de CPU quanto possível, enquanto o assert
funcionadade pode introspeccionar seu código, provendo ótimos reportes em caso de falhas. Essas falhas são construidas usando Elixir macros, fazendo isso possível para adicionar novas construções como se elas fossem parte da própria linguagem.
Features das ferramentas
Um ecossistema crescente
Elixir vem com um grande conjunto de ferramentas para facilitar o desenvolvimento. Mix é uma ferramenta de build que permite você criar facilmente projetos, manusear tarefas, rodar testes e mais:
Mix é também capaz de manusear dependências e integra-las muito bem com o Hex package manager, o qual prove uma resolução de dependências e a habilidade de fazer fetch nos pacotes remotamente.
Desenvolvimento interativo
Ferramentas como IEx (Shell iterativo do Elixir) são capazes de alavancar muitos aspectos da linguagem e da plataforma e proveem auto-complete. ferramentas para debug, recarremento de códgio, bem como documentação bem formatada:
Compatibilidade com Erlang
Elixir roda na VM do Erlang dando aos desenvolvedores um acesso completo ao ecossistema Erlang, usado por empresas como Heroku, WhatsApp, Klarna, Basho e muitas mais para construir aplicações tolerante a falhas e distribuidas. Um programador elixir pode invocar qualquer função sem custo de tempo de execução:
Para aprender mais sobre Elixir, verifique nosso guia de início rápido. Nós também temos umadocumentação online disponível e um Crash Course para desenvolvedores Erlang.