Run this notebook

Use Livebook to open this notebook and explore new ideas.

It is easy to get started, on your machine or the cloud.

Click below to open and run it in your Livebook at .

(or change your Livebook location)

# 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: [![Execute em uma Instalação de Livebook](https://i.ibb.co/XYcR1dy/Execute-em-uma-instalacao-do-Livebook.png)](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fadolfont%2Fpensandoemelixir%2Fblob%2Fmain%2F2021%2FUFBA_v2.livemd) <!-- UFBAUTFPR2021 adolfont.fly.dev --> * Quando? 22/11 (SEG) 13:00-15:00 * Onde? Informação privada. * Página da disciplina: [MATA56 - Paradigmas de Linguagens de Programação](https://github.com/mata56-ic-ufba/paradigmas) ## 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. <!-- livebook:{"break_markdown":true} --> ### O que é Elixir? * [Site de Elixir](https://elixir-lang.org/) * [Página na Wikipédia sobre Elixir](https://pt.wikipedia.org/wiki/Elixir_(linguagem_de_programa%C3%A7%C3%A3o)) ### 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? * Eli*chí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](https://anchor.fm/elixiremfoco/) * Um dos [6 podcasts ativos relacionados a Elixir ou á BEAM](https://elixirschool.com/en/podcasts) * Elixir é a [quarta linguagem com melhor fator amada/temida da pesquisa com usuários do StackOverflow de 2021](https://insights.stackoverflow.com/survey/2021#technology-most-loved-dreaded-and-wanted) e está em [posição 17 entre as mais desejadas](https://insights.stackoverflow.com/survey/2021#most-loved-dreaded-and-wanted-language-want). * Na mesma pesquisa, é a [terceira que paga melhor](https://insights.stackoverflow.com/survey/2021#technology-top-paying-technologies). * Empresas que usam Elixir [1](https://serokell.io/blog/elixir-in-production), [2](https://dashbit.co/blog/ten-years-ish-of-elixir), [3](https://elixir-lang.org/cases.html), [4](https://www.hostgator.com.br/blog/elixir-linguagem-programacao-brasileira/), [5](https://github.com/elixirbrasil/empresas) * [Empregos para Devs Elixir](https://elixir-radar.com/jobs) ### É o assunto de várias conferências! * [Elixir Brasil](https://twitter.com/elixir_brasil) - 27 e 28 de novembro de 2021 * ElixirConf: [Europe](https://www.elixirconf.eu/), [USA/World](https://www.elixirconf.com/), [Africa](https://elixirconf.africa/) * Code BEAM. A mais recente foi a [Code BEAM America 2021](https://codesync.global/conferences/code-beam-sf-2021/) * [Code BEAM BR](https://www.codebeambr.com/) ## 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 ```elixir 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 ``` ```elixir 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 ```elixir fn peso, altura -> peso / (altura * altura) end ``` ```elixir imc = fn peso, altura -> peso / (altura * altura) end imc.(100, 1.5) ``` ```elixir &(&1 / (&2 * &2)) ``` ```elixir 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: ```elixir Enum.shuffle([1, 2, 3, 4, 5, 6]) ``` Ou alteram o estado geral do sistema. ## A BEAM * [Introduction to Erlang](https://serokell.io/blog/introduction-to-erlang) ## Casamento de padrões (pattern matching) * *Joker* * *Pin* * lado esquerdo vs. lado direito ```elixir peso = 100 altura = 1.85 100 = peso {peso, altura} = {120, 1.75} {_, mensagem} = {:ok, "Deu tudo certo"} ``` ```elixir peso ``` ```elixir altura ``` ```elixir mensagem ``` ## Sintaxe amigável (ex. omissão de parênteses) ```elixir IO.puts("Adolfo") ``` ## O Operador Pipe ```elixir [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 ```elixir f = fn x -> fn y -> x + y end end ``` ```elixir g = f.(5) ``` ```elixir g.(10) ``` ## Final * Responder as perguntas do início * Elixir é brasileira? [É uma linguagem globalizada](https://youtu.be/e335dWkFyUU) * Como se pronuncia Elixir? ["Não importa, o importante é que você chame"](https://youtu.be/e335dWkFyUU) ### Acompanhe a comunidade * [Elixir Brasil 2021](https://twitter.com/elixir_brasil/) * [Advent of Code 2021 com José Valim](https://twitter.com/josevalim/status/1461064540465078273) * https://twitter.com/elixir_utfpr * https://twitter.com/adolfont * https://twitter.com/elixiremfoco * https://www.youtube.com/c/AdolfoNeto * [Elixir, Erlang and the BEAM with Adolfo Neto](https://www.youtube.com/channel/UC6ETZk7tlYJzfRz-zS9B6xw) * [Erlang Ecosystem Foundation](https://erlef.org/) * Telegram (Elixir Brasil, ELUG_CE)
See source

Have you already installed Livebook?

If you already installed Livebook, you can configure the default Livebook location where you want to open notebooks.
Livebook up Checking status We can't reach this Livebook (but we saved your preference anyway)
Run notebook

Not yet? Install Livebook in just a minute

Livebook is open source, free, and ready to run anywhere.

Run on your machine

with Livebook Desktop

Run in the cloud

on select platforms

To run on Linux, Docker, embedded devices, or Elixir’s Mix, check our README.

PLATINUM SPONSORS
SPONSORS
Code navigation with go to definition of modules and functions Read More ×