Palestra na Universidade Federal da Bahia (UFBA)
Elixir, a linguagem de programação brasileira de código aberto utilizada no mundo todo
Execute em uma Instalação de Livebook:
-
Quando? 22/11 (SEG) 13:00-15:00
-
Onde? Informação privada.
-
Página da disciplina: MATA56 - Paradigmas de Linguagens de Programação
Sobre o palestrante
Adolfo Neto é professor da UTFPR, criador e co-host do Emílias Podcast - Mulheres na Computação e membro do projeto Emílias - Armação em Bits.
Resumo
Uma breve introdução à linguagem Elixir. Vamos conhecer as principais características da linguagem e porque ela é boa até mesmo para iniciantes em programação.
O que é Elixir?
Elixir é mesmo uma linguagem brasileira?
Foi criada por José Valim em 2011-12. Mas isto é o suficiente para dizer que ela é brasileira?
Como se pronuncia Elixir?
- Elichír
- Elikzír
- Élikzir
- Elíkzir
É mesmo usada no mundo todo? Em produção?
- Escutem a série Elixir em Produção do podcast Elixir em Foco
- Elixir é a quarta linguagem com melhor fator amada/temida da pesquisa com usuários do StackOverflow de 2021 e está em posição 17 entre as mais desejadas.
- Na mesma pesquisa, é a terceira que paga melhor.
- Empresas que usam Elixir 1, 2, 3, 4, 5
- Empregos para Devs Elixir
É o assunto de várias conferências!
- Elixir Brasil - 27 e 28 de novembro de 2021
- ElixirConf: Europe, USA/World, Africa
- Code BEAM. A mais recente foi a Code BEAM America 2021
- Code BEAM BR
Isto aqui é o Livebook!
Tudo o que vocês estão vendo está sendo executado em uma instalação de Livebook, um software para a criação de nobebooks interativos com código em Elixir, dados e documentação.
- Repositório de código aberto: https://github.com/livebook-dev/livebook
- Site: http://livebook.dev
- Você pode testar de graça no https://fly.io/!!!
As melhores características de Elixir
Funções na computação
Funções nomeadas em módulos
defmodule Saude do
def calcula_imc(peso, altura) do
peso / (altura * altura)
end
def peso_normal?(peso, altura) do
imc = calcula_imc(peso, altura)
imc >= 18.5 and imc <= 25
end
end
IO.puts(Saude.calcula_imc(70, 1.8))
IO.puts(Saude.peso_normal?(70, 1.8))
IO.puts(Saude.peso_normal?(100, 1.8))
Funções anônimas
fn peso, altura -> peso / (altura * altura) end
imc = fn peso, altura -> peso / (altura * altura) end
imc.(100, 1.5)
&(&1 / (&2 * &2))
imc = &(&1 / (&2 * &2))
imc.(100, 1.5)
Funções matemáticas (puras)
Para as mesmas entradas, sempre retorna as mesmas saídas.
Não alteram o estado geral do sistema.
Não-funções matemáticas (funções impuras)
Para as mesmas entradas, a cada execução pode retornar uma saída diferente.
Exemplo:
Enum.shuffle([1, 2, 3, 4, 5, 6])
Ou alteram o estado geral do sistema.
A BEAM
Casamento de padrões (pattern matching)
- Joker
- Pin
- lado esquerdo vs. lado direito
peso = 100
altura = 1.85
100 = peso
{peso, altura} = {120, 1.75}
{_, mensagem} = {:ok, "Deu tudo certo"}
peso
altura
mensagem
Sintaxe amigável (ex. omissão de parênteses)
IO.puts("Adolfo")
O Operador Pipe
[10, 30, 20, 8]
|> Enum.map(fn x -> x * 2 end)
|> Enum.sort(fn x, y -> x > y end)
|> Enum.sum()
Funções de Ordem Superior
f = fn x -> fn y -> x + y end end
g = f.(5)
g.(10)
Final
-
Responder as perguntas do início
- Elixir é brasileira? É uma linguagem globalizada
- Como se pronuncia Elixir? “Não importa, o importante é que você chame”