introdução a programação funcional com elixir

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

Upload: arthur-braga-alfredo

Post on 15-Feb-2017

57 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Introdução a programação funcional com Elixir

Introdução a programação

funcional com Elixir

Arthur Braga Alfredo

Page 2: Introdução a programação funcional com Elixir

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

Page 3: Introdução a programação funcional com Elixir

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

Page 4: Introdução a programação funcional com Elixir

Quais eram os objetivos?

Programas mais simplesPoucos problemas de concorrênciaNão precisa se preocupar com estado

Page 5: Introdução a programação funcional com Elixir

Porque não deu certonaquela época?

Page 6: Introdução a programação funcional com Elixir

Memória era muito cara

Page 7: Introdução a programação funcional com Elixir

Os computadores eram lentos

Page 8: Introdução a programação funcional com Elixir

O que mudou?

Page 9: Introdução a programação funcional com Elixir
Page 10: Introdução a programação funcional com Elixir
Page 11: Introdução a programação funcional com Elixir
Page 12: Introdução a programação funcional com Elixir

Criada por José Valim

Page 13: Introdução a programação funcional com Elixir

Objetivo

Criar uma linguagem que que possibilitasse altaperformance, extensibilidade e produtividade e que

rodasse na VM do Erlang.

Page 14: Introdução a programação funcional com Elixir

Porque Erlang?

Criado em 1986 para resolver problemas na área detelefonia.Altamente tolerante a falhas (Let it crash).Altamente concorrenteFácil de escalar

Page 15: Introdução a programação funcional com Elixir

Chega de história...

Page 16: Introdução a programação funcional com Elixir

Imutabilidade

Uma vez que um objeto foi criado, ele não pode seralterado

Page 17: Introdução a programação funcional com Elixir

Single matching

A variável só pode receber valor uma vez

Page 18: Introdução a programação funcional com Elixir
Page 19: Introdução a programação funcional com Elixir

Re-binding

Posso reutilizar uma variável para apontar para outrovalor da memória

Page 20: Introdução a programação funcional com Elixir
Page 21: Introdução a programação funcional com Elixir

First-class functions

Funções que podem ser armazenadas em variáveis

Page 22: Introdução a programação funcional com Elixir
Page 23: Introdução a programação funcional com Elixir

Higher-order functions

Funções que podem receber outras funções comoparâmetro

Page 24: Introdução a programação funcional com Elixir
Page 25: Introdução a programação funcional com Elixir

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

Page 26: Introdução a programação funcional com Elixir

Closures

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

Page 27: Introdução a programação funcional com Elixir
Page 28: Introdução a programação funcional com Elixir

Recursão

Funções que chamam elas mesmas

Page 29: Introdução a programação funcional com Elixir
Page 30: Introdução a programação funcional com Elixir

Onde aprender mais?

Page 31: Introdução a programação funcional com Elixir

Onde aprender mais?

http://elixir-lang.org/

Page 32: Introdução a programação funcional com Elixir

Duvidas?

Page 33: Introdução a programação funcional com Elixir

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

Page 34: Introdução a programação funcional com Elixir

Obrigado

Arthur Braga [email protected]