Slide 1

Slide 1 text

Introdução a programação funcional com Elixir Arthur Braga Alfredo

Slide 2

Slide 2 text

O que é programação funcional? É um paradigma de programação que trata a computação como funções matemáticas e que evita estados e dados mutáveis

Slide 3

Slide 3 text

Um pouco de história Programação funcional foi inventada em 1957 Antes da orientação a objetos Antes da programação estruturada O Lisp foi criado no MIT em 1960 ISWIM em 1966 SASL em 1973 Miranda e Erlang em 1986 Haskell em 1992

Slide 4

Slide 4 text

Quais eram os objetivos? Programas mais simples Poucos problemas de concorrência Não precisa se preocupar com estado

Slide 5

Slide 5 text

Porque não deu certo naquela época?

Slide 6

Slide 6 text

Memória era muito cara

Slide 7

Slide 7 text

Os computadores eram lentos

Slide 8

Slide 8 text

O que mudou?

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

Criada por José Valim

Slide 13

Slide 13 text

Objetivo Criar uma linguagem que que possibilitasse alta performance, extensibilidade e produtividade e que rodasse na VM do Erlang.

Slide 14

Slide 14 text

Porque Erlang? Criado em 1986 para resolver problemas na área de telefonia. Altamente tolerante a falhas (Let it crash). Altamente concorrente Fácil de escalar

Slide 15

Slide 15 text

Chega de história...

Slide 16

Slide 16 text

Imutabilidade Uma vez que um objeto foi criado, ele não pode ser alterado

Slide 17

Slide 17 text

Single matching A variável só pode receber valor uma vez

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

Re-binding Posso reutilizar uma variável para apontar para outro valor da memória

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

First-class functions Funções que podem ser armazenadas em variáveis

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Higher-order functions Funções que podem receber outras funções como parâmetro

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Pure functions Funções sem efeitos colaterais Não acessam banco Não acessam arquivos Vão sempre retornar os mesmo valores se os mesmos parâmetros forem passados

Slide 26

Slide 26 text

Closures Funções que pode acessar variáveis fora do seu escopo

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

Recursão Funções que chamam elas mesmas

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Onde aprender mais?

Slide 31

Slide 31 text

Onde aprender mais? http://elixir-lang.org/

Slide 32

Slide 32 text

Duvidas?

Slide 33

Slide 33 text

Fontes https://medium.com/@jugoncalves/functional- programming-should-be-your-1-priority-for-2015- 47dd4641d6b9#.4cvicgxav http://www.elixirdose.com/post/basicfp http://www.sitepoint.com/functional-programming- techniques-with-ruby-part-i/ https://speakerdeck.com/stratus3d/foray-into- functional-programming-with-elixir https://speakerdeck.com/mfilej/elixir-for-rubyists https://www.youtube.com/watch?v=7Zlp9rKHGD4

Slide 34

Slide 34 text

Obrigado Arthur Braga Alfredo [email protected]