Um caminho para aprender Elixir
Bem vindos, com o recente despertar e interesse por programação funcional estou montando aqui um compilado com fontes de estudos. Nas próximas seções deixo um cronograma de estudos que pode ser adaptado a sua maneira.
Um dos primeiros passos e importante é receber uma introdução sobre o que são linguagens funcionais e o Elixir de quem trabalha com a linguagem e tem experiência. Segue os links:
Fontes
Uma grande fonte de conhecimentos em qualquer parte do mundo começa com livros. Minha primeira recomendação é o livro Elixir do zero à concorrência, por estar na língua portuguesa pode ser melhor entendido.
No video da [A linguagem Elixir - Alura Live #80] a Charlotte recomendou os seguintes livros.
Elixir in action do Saša Jurić
Programming in Elixir - Dave Thomas
The Little Elixir & OTP Guidebook
Outras fontes de estudo podem ser encontradas no repositório Awesome Elixir
Um blog que venho acompanhando é o DailyDrip. Ele possui um conteúdo pago, felizmente, essa parte introdutória ao Elixir é gratuita e de acordo com o artigo do hackernoon eles lançaram 25 artigos, 5 por semana, ajudando novos desenvolvedores a criarem aplicações web.
Pontos a serem estudados
Alguns conceitos devem ser estudados e entendidos no decorrer do aprendizado. É bom ressaltar que eles são os pontos fortes da linguagem e do paradigma. Segue uma breve lista:
Modelo de atores
Funções puras e impuras
Imutabilidade
Processos concorrentes. Paralelismo
Recursividade
Com o passar do tempo, vou atualizando essa lista.
Tópicos para estudos
Acho importante enumerar e ordenar uma sequência de quais pontos são importantes estudar além da teoria citada nas seções anteriores. Para isso montei uma lista a qual julgo ser interessante. Cabe ao desenvolvedor analisar se vale a pena seguir ou não este modelo.
Instalar o Elixir
Conhecer o seu REPL chamado IEX.
Criar projetos.
O Elixir possui o mix
para criar projetos, similar ao npm
do NodeJs e consequentemente um gerenciador de pacotes chamado hex
.
- Testes e documentação.
Testes são importantes e devem ser aplicados desde o inicio até mesmo nos exercícios mais simples. Deixar para o final ou não vê-los como parte importante do desenvolvimento de sistema pode gerar preguiça e não queremos esse pecado capital influenciando nosso código.
Módulos, tipos básicos, loops, condicionais e etc…
Pattern Matching
Structs
Operações com arquivos, leitura e escrita
Conexões com banco de dados. Ecto?
OTP
Aplicações web
Como disse no artigo introdutório aprender uma nova linguagem e paradigma será um desafio. Estarei colocando aqui alguns artigos sobre essa evolução e espero que vocês aprendam junto comigo. Abraços a todos.