Elixir é uma linguagem open source, dinâmica e funcional para a construção de aplicativos escaláveis e de fácil manutenção. Trabalhar com ela é se sentir um feiticeiro da programação funcional. Elixir possui uma compreensão acessível, com uma sintaxe simples e legibilidade clara, além de ter uma aprendizagem bastante rápida uma vez que o conceito de programação funcional é compreendido.
O Paradigma de Programação Funcional pode ser bizarro quando abordado sem contextualização pelo programador procedimental ou orientado a objeto. Com suas particularidades como a pureza de funções, imutabilidade de objetos, funções de ordem e recursão, pode dar um nó na cabeça de qualquer programador experiente.

Elixir aproveita o Erlang VM, conhecido por executar sistemas de baixa latência, distribuídos e tolerantes a falhas. O Elixir é usado com sucesso em desenvolvimento web, software embarcado, ingestão de dados e processamento de multimídia em uma ampla gama de indústrias.
O Elixir oferece aos desenvolvedores o poder funcional e a resiliência de Erland com uma sintaxe mais amigável, bibliotecas e meta programação.
O Elixir compila diretamente para Erlang bytecode e é possível combinar com Erlang e ferramentas Erlang. Apesar da fundação ser a mesma, Elixir é bem diferente de Erlang, mais similar a Ruby do que Prolog.
Histórico da Linguagem
Elixir foi criada em 2012 como um Projeto de Pesquisa e Desenvolvimento, dentro da Plataformatec, por José Valim, fazendo de Elixir uma linguagem de origem brasileira. Elixir foi influenciada por Erlang, Ruby e Lisp. Os objetivos da linguagem incluem ser uma linguagem produtiva e extensível para a escrita de software sustentável e confiável.[1]
Elixir é uma linguagem de programação funcional, dinâmica, distribuído, de propósito geral que executa sobre máquina virtual Erlang para fornecer aplicações distribuídas, em tempo real, tolerante a falhas, ininterrupto, indo além de Erlang, suportando meta programação com macros e polimorfismo via protocolos.
Para o entendimento do propósito e filosofia do Elixir é necessário entender a máquina virtual em que ela executa, Erlang VM.
Originalmente desenvolvida pela Ericsson e então distribuída em código aberto a partir de 1998, Erlang foi desenvolvido com o objetivo de melhorar o desenvolvimento de aplicações de telefonia, ramo onde é necessário conectar vários pontos de maneira distribuída com requisições independentes.
Na época era necessário o uso de interruptores manuais, switchboards, de telefone operados por atendentes para conectar ligações, mas após os anos 80, com o nascimento de Erlang, essas requisições e conexões eram tratadas por computador.[2]
Erlang foi concebida para suportar aplicações distribuídas, tolerantes a falhas em um ambiente de tempo real ininterrupto, nativamente suportado hot swapping, troca quente, onde o código pode ser modificado sem a parada do sistema.
Domínio de Aplicação da Linguagem Elixir
Os domínios de aplicação da linguagem incluem qualquer software que venha a tirar proveito de uma linguagem orientada a funções, dinâmica, distribuída e tolerante, que se bem utilizada, permite que as aplicações sejam escaláveis.

A plataforma Discord, fundada em 2015 por Jason Citron e Stan Vishnevskiy, é um espaço permanente, baseado em convites para unir amigos e comunidades, onde se pode interagir por voz, vídeo e texto, o usuário decide. Hoje o serviço tem mais de 100 milhões de usuários ativos por mês em todo o mundo, todos os dias seus usuários passam 4 bilhões de minutos conversando no Discord nas 6.7 milhões de comunidades. Desde do início de seu desenvolvimento, Discord usa o Elixir como principal tecnologia para a infraestrutura do chat. Elixir foi crucial dando aos desenvolvedores a tecnologia desejada como flexibilidade para crescer e também expandir os sistemas para operar em escala massiva.[3]
Elixir e Python trazem o Discord à vida. O Elixir foi escolhido inicialmente para operar as interações com WebSocket, responsável por transmitir mensagens e replicar em tempo real, enquanto Python alimentava a API deles. Hoje em dia a API em Python é monolítica, ou seja, toda a base de código utilizada em sua programação fica contida em um só lugar, de modo que todas as funcionalidades operam como se fizessem parte de um único bloco. Enquanto o serviço com Elixir contém 20 ou mais serviços individuais. Essas decisões arquitetônicas não representam as possíveis interações entre as linguagens, mas uma decisão da empresa, vendo que os serviços disponibilizados pelo Elixir podem lidar com um tráfego muito maior, a decisão foi de individualizar cada serviço, para ser escalável quando necessário sem impactar os demais serviços.[3]
Outro exemplo é Duffel, que está construindo um novo software para a indústria de viagens, o primeiro produto em construção é a Flights API, API de voos, que possibilita a busca de voos, agendamentos, reserva de assentos e a venda de pacotes extras, como o check-in de malas. Hoje em dia, para se ter acesso a voos e preços das companhias aéreas, é necessário passar pelo GDS (Global Distribution System – Sistema de Distribuição Global), uma rede que se conecta com sistemas ultrapassados que utilizavam sua transmissão de dados nos padrões EDIFACT e somente recentemente migraram para SOAP/XML.[4]
As tecnologias escolhidas para esse projeto foram Elixir, Phoenix Framework e Ecto database library, juntas formam uma API que recebe uma solicitação e envia diversas outras para diferentes companhias aéreas, a resposta de cada uma dessas solicitações deve ser traduzida, normalizada e muitas vezes suplementada com solicitações adicionais, tudo isso enquanto gerencia respostas lentas, tempos de respostas estourados, grandes pilhas de dados, etc. O ponto decisivo para a escolha do Elixir foi a intensa transmissão de dados, o design de Erlang VM tinha em mente um padrão parecido com o que Duffel precisava, e a tecnologia que a Elixir facilitaram a implementação.[4]
Referências
[1] Development. Disponível em: <https://elixir-lang.org/development.html>. Acesso em: 21 mar. 2024.
[2]Elixir: The Documentary. Disponível em: <https://cult.honeypot.io/originals/elixir-the-documentary>. Acesso em: 21 mar. 2024.
[3] VALIM, José. Real time communication at scale with Elixir at Discord. 08 Out. 2020. Disponível em: <https://elixir-lang.org/blog/2020/10/08/real-time-communication-at-scale-with-elixir-at-discord/>. Acesso em: 21 mar. 2024.
[4] VALIM, José. Integrating travel with Elixir at Duffel. 10 Dec. 2020. Disponível em: <https://elixir-lang.org/blog/2020/12/10/integrating-travel-with-elixir-at-duffel/>. Acesso em: 21 mar. 2024.