Upload
arthur-braga-alfredo
View
57
Download
0
Embed Size (px)
Citation preview
Introdução a programação
funcional com Elixir
Arthur Braga Alfredo
O que é programaçãofuncional?
É um paradigma de programação que trata acomputação como funções matemáticas e que evita
estados e dados mutáveis
Um pouco de história
Programação funcional foi inventada em 1957Antes da orientação a objetosAntes da programação estruturada
O Lisp foi criado no MIT em 1960ISWIM em 1966SASL em 1973Miranda e Erlang em 1986Haskell em 1992
Quais eram os objetivos?
Programas mais simplesPoucos problemas de concorrênciaNão precisa se preocupar com estado
Porque não deu certonaquela época?
Memória era muito cara
Os computadores eram lentos
O que mudou?
Criada por José Valim
Objetivo
Criar uma linguagem que que possibilitasse altaperformance, extensibilidade e produtividade e que
rodasse na VM do Erlang.
Porque Erlang?
Criado em 1986 para resolver problemas na área detelefonia.Altamente tolerante a falhas (Let it crash).Altamente concorrenteFácil de escalar
Chega de história...
Imutabilidade
Uma vez que um objeto foi criado, ele não pode seralterado
Single matching
A variável só pode receber valor uma vez
Re-binding
Posso reutilizar uma variável para apontar para outrovalor da memória
First-class functions
Funções que podem ser armazenadas em variáveis
Higher-order functions
Funções que podem receber outras funções comoparâmetro
Pure functions
Funções sem efeitos colateraisNão acessam bancoNão acessam arquivosVão sempre retornar os mesmo valores se osmesmos parâmetros forem passados
Closures
Funções que pode acessar variáveis fora do seu escopo
Recursão
Funções que chamam elas mesmas
Onde aprender mais?
Onde aprender mais?
http://elixir-lang.org/
Duvidas?
Fontes
https://medium.com/@jugoncalves/functional-programming-should-be-your-1-priority-for-2015-47dd4641d6b9#.4cvicgxavhttp://www.elixirdose.com/post/basicfphttp://www.sitepoint.com/functional-programming-techniques-with-ruby-part-i/https://speakerdeck.com/stratus3d/foray-into-functional-programming-with-elixirhttps://speakerdeck.com/mfilej/elixir-for-rubyistshttps://www.youtube.com/watch?v=7Zlp9rKHGD4
Obrigado
Arthur Braga [email protected]