Slide 1

Slide 1 text

programação funcional que funciona

Slide 2

Slide 2 text

Talk is cheap. Show me the code. Linus Torvalds

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

https://github.com/serradura/request_via

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

+ concorrente

Slide 7

Slide 7 text

+ concorrente + consumo de memória

Slide 8

Slide 8 text

Um código melhor de: desenvolver, manter e evoluir.

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Tudo que usa blocos poderá ser melhorado com o uso de funções (aka: lambdas). Ex: ● Active Admin ● Concurrent Ruby

Slide 11

Slide 11 text

Objetivos

Slide 12

Slide 12 text

Porque programação funcional se tornou relevante para mim e deveria se tornar relevante para você.

Slide 13

Slide 13 text

Porque programação funcional é relevante para o ecossistema Ruby. Porque programação funcional se tornou relevante para mim e deveria se tornar relevante para você.

Slide 14

Slide 14 text

Como se tornou relevante para mim?

Slide 15

Slide 15 text

Resposta rápida:

Slide 16

Slide 16 text

Resposta não tão rápida...

Slide 17

Slide 17 text

if hurts, do it more often. Martin Fowler

Slide 18

Slide 18 text

Junho / 2017

Slide 19

Slide 19 text

Me coloquei à disposição para organizar o próximo Meetup 23/06. 3 Hello Worlds em Elm. 22/06 Junho / 2017 Entrei para comunidade Elm via ElmBrasil no Telegram 20/06. Roadmap do Elm, como Evan Czaplicki prioriza os próximos. (Simplicidade) 24/06 Primeiros reflexos: Criei uma abstração compondo funções para gerenciar o ciclo de vida do JS no Turbolinks. 28/06.

Slide 20

Slide 20 text

Junho / 2017 Me coloquei à disposição para organizar o próximo Meetup 20/06. 3 Hello Worlds em Elm. 22/06 Entrei para comunidade Elm via ElmBrasil no Telegram 20/06. Roadmap do Elm, como Evan Czaplicki prioriza os próximos. (Simplicidade) 24/06 Primeiros reflexos: Criei uma abstração compondo funções para gerenciar o ciclo de vida do JS no Turbolinks. 28/06.

Slide 21

Slide 21 text

Me coloquei à disposição para organizar o próximo Meetup 23/06. 3 Hello Worlds em Elm. 22/06 Entrei para comunidade Elm via ElmBrasil no Telegram 20/06. Roadmap do Elm, como Evan Czaplicki prioriza os próximos. (Simplicidade) 24/06 Primeiros reflexos: Criei uma abstração compondo funções para gerenciar o ciclo de vida do JS no Turbolinks. 28/06. Junho / 2017

Slide 22

Slide 22 text

Julho / 2017

Slide 23

Slide 23 text

Implementação do Strong Parameters (Ruby) numa abordagem funcional. 10/07. Julho / 2017

Slide 24

Slide 24 text

Implementação do Strong Parameters (Ruby) numa abordagem funcional. 10/07. Julho / 2017

Slide 25

Slide 25 text

Implementação do Strong Parameters (Ruby) numa abordagem funcional. 10/07. Julho / 2017

Slide 26

Slide 26 text

Abordagem /Abstração reativa (FRP) para orquestrar um stream de eventos 28/07. Julho / 2017 Implementação do Strong Parameters (Ruby) numa abordagem funcional. 10/07. Contribuição para vue-turbolinks com direito a variações! 20/07

Slide 27

Slide 27 text

Abordagem /Abstração reativa (FRP) para orquestrar um stream de eventos 28/07. Implementação do Strong Parameters (Ruby) numa abordagem funcional. 10/07. Contribuição para vue-turbolinks com direito a variações! 20/07 Julho / 2017

Slide 28

Slide 28 text

Agosto / 2017

Slide 29

Slide 29 text

Mandaram eu ler o Mostly Adequate Guide to Functional Programming 08/08. Agosto / 2017 Criar o DOM via composição de funções no estilo Elm com jQuery e Ramda 23/08

Slide 30

Slide 30 text

Mandaram eu ler o Mostly Adequate Guide to Functional Programming 08/08. Agosto / 2017 Criar o DOM via composição de funções no estilo Elm com jQuery e Ramda 23/08

Slide 31

Slide 31 text

Mandaram eu ler o Mostly Adequate Guide to Functional Programming 08/08. Agosto / 2017 Criar o DOM via composição de funções no estilo Elm com jQuery e Ramda 23/08 Benchmark para comparar a performance do uso de Funções VS Métodos estáticos e de instância em Ruby 25/08. 2º ElmSP Pagar.me 28/08

Slide 32

Slide 32 text

Mandaram eu ler o Mostly Adequate Guide to Functional Programming 08/08. Agosto / 2017 Criar o DOM via composição de funções no estilo Elm com jQuery e Ramda 23/08 Benchmark para comparar a performance do uso de Funções VS Métodos estáticos e de instância em Ruby 25/08. 2º ElmSP Pagar.me 28/08 Operador de composição do Elm no Ruby 30/08.

Slide 33

Slide 33 text

Mandaram eu ler o Mostly Adequate Guide to Functional Programming 08/08. Agosto / 2017 Criar o DOM via composição de funções no estilo Elm com jQuery e Ramda 23/08 Benchmark para comparar a performance do uso de Funções VS Métodos estáticos e de instância em Ruby 25/08. 2º ElmSP Pagar.me 28/08 Operador de composição do Elm no Ruby 30/08.

Slide 34

Slide 34 text

Setembro / 2017

Slide 35

Slide 35 text

You might not need #reactjs, or #redux, follows an example of how you can do everything with @jquery and ES201*. 18/09. Setembro / 2017

Slide 36

Slide 36 text

You might not need #reactjs, or #redux, follows an example of how you can do everything with @jquery and ES201*. 18/09. Setembro / 2017

Slide 37

Slide 37 text

You might not need #reactjs, or #redux, follows an example of how you can do everything with @jquery and ES201*. 18/09. Setembro / 2017 @jodosha (criador do Hanami) publica os melhores slides sobre Functional Objects em Ruby que havia visto. 27/09 30LOC to implement a complete and extensible EventBus in a FP approach. 28/09 3º ElmSP TW 28/09

Slide 38

Slide 38 text

You might not need #reactjs, or #redux, follows an example of how you can do everything with @jquery and ES201*. 18/09. Setembro / 2017 @jodosha (criador do Hanami) publica os melhores slides sobre Functional Objects em Ruby que havia visto. 27/09 30LOC to implement a complete and extensible EventBus in a FP approach. 28/09 3º ElmSP TW 28/09

Slide 39

Slide 39 text

Outubro / 2017

Slide 40

Slide 40 text

Video Luca Guidi - @jodosha Functional web with Ruby 09/10. Outubro / 2017 RequestVia 0.1.0: A Functional HTTP Client That Wraps Net::HTTP 30/10.

Slide 41

Slide 41 text

Video Luca Guidi - @jodosha Functional web with Ruby 09/10. Outubro / 2017 RequestVia 0.1.0: A Functional HTTP Client That Wraps Net::HTTP 30/10.

Slide 42

Slide 42 text

Novembro / 2017

Slide 43

Slide 43 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11.

Slide 44

Slide 44 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11.

Slide 45

Slide 45 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11.

Slide 46

Slide 46 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11.

Slide 47

Slide 47 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11.

Slide 48

Slide 48 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11. When classes are verbs, they act like functions. compound expressions == combination of functions

Slide 49

Slide 49 text

Novembro / 2017 Programação funcional - Hands on em diferentes tecnologias para manjar dos paranauê. 01/11. Unleash new amazing possibilities writing Ruby functional objects! 10/11. When classes are verbs, they act like functions. compound expressions == combination of functions

Slide 50

Slide 50 text

Mindset funcional

Slide 51

Slide 51 text

Business analysis

Slide 52

Slide 52 text

Transformação Saída Entrada Definição formal de um processo

Slide 53

Slide 53 text

Agile

Slide 54

Slide 54 text

Funções???

Slide 55

Slide 55 text

https://en.wikipedia.org/wiki/Function_(mathematics)

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

Princípios de programação funcional em Ruby.

Slide 58

Slide 58 text

https://www.ruby-lang.org/en/about/#fn3

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

Função de alta ordem High-order function

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

Função como valores First class functions

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Funções puras Pure/Stateless functions

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

Recursão

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

Closures

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

Imutabilidade

Slide 74

Slide 74 text

No content

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

If all the methods are pure functions. The objects are data!

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

Functional First Development

Slide 81

Slide 81 text

First, code everything you can without using any side effects. Then, code your side effects. Functional First Development

Slide 82

Slide 82 text

http://dry-rb.org/

Slide 83

Slide 83 text

No content

Slide 84

Slide 84 text

No content

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

kudos. @renanranelli @_rchaves_ @arthurxavierx

Slide 88

Slide 88 text

@serradura

Slide 89

Slide 89 text

Obrigado