60
Programação Funcional Por que Importa? Diego Pacheco Software Architect | Agile Coach diego-pacheco.blogspot.com @diego_pacheco diegopacheco diego.pacheco diegopachecors diegopacheco

TDC 2014 POA: Programacao funcional Por que Importa?

Embed Size (px)

DESCRIPTION

TDC 2014 POA: Programacao funcional Por que Importa?

Citation preview

Page 1: TDC 2014 POA: Programacao funcional Por que Importa?

Programação Funcional

Por que Importa?

Diego PachecoSoftware Architect | Agile Coach

diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco

diegopachecorsdiegopacheco

Page 2: TDC 2014 POA: Programacao funcional Por que Importa?

http://about.me/diegopacheco

Page 3: TDC 2014 POA: Programacao funcional Por que Importa?

Ilegra.com

Page 4: TDC 2014 POA: Programacao funcional Por que Importa?

Programação Funcional

Por que Importa?

Page 5: TDC 2014 POA: Programacao funcional Por que Importa?

FP – É muito velha?

Page 6: TDC 2014 POA: Programacao funcional Por que Importa?
Page 7: TDC 2014 POA: Programacao funcional Por que Importa?

FP – pré-histórico!

Page 8: TDC 2014 POA: Programacao funcional Por que Importa?

Lambda Calculus - 1930

Page 9: TDC 2014 POA: Programacao funcional Por que Importa?

Funções matemáticas – Currying - Lambda Calculus - 1930

Page 10: TDC 2014 POA: Programacao funcional Por que Importa?

LISP - 1958

Page 11: TDC 2014 POA: Programacao funcional Por que Importa?

Código - LISP #SQN

Page 12: TDC 2014 POA: Programacao funcional Por que Importa?

Código - LISP - 1958

Page 13: TDC 2014 POA: Programacao funcional Por que Importa?

Haskell - 1990

Page 14: TDC 2014 POA: Programacao funcional Por que Importa?

Código - Haskell- 1990

Page 15: TDC 2014 POA: Programacao funcional Por que Importa?

Matemática…

Page 16: TDC 2014 POA: Programacao funcional Por que Importa?

Ah não…

Page 17: TDC 2014 POA: Programacao funcional Por que Importa?

#Fail

Page 18: TDC 2014 POA: Programacao funcional Por que Importa?

Entrega, Prática, Mercado!

Page 19: TDC 2014 POA: Programacao funcional Por que Importa?

Tudo em C, C++, Java,.NET

Banco de Dados

Servidor Web

Sistemas Operacionais

Middleware Server

Cache/Data Grids

Web Browsers

GamesSmartPhones

Page 20: TDC 2014 POA: Programacao funcional Por que Importa?

Mercado, empregos, java/.net

http://www.indeed.com/jobanalytics/jobtrends?q=java%2C+.net%2C+C%2C+haskell%2C+lisp&l=

Page 21: TDC 2014 POA: Programacao funcional Por que Importa?

TOP Linguagens 2014

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 22: TDC 2014 POA: Programacao funcional Por que Importa?

Mas como assim? Se programação OO / imperativa tem tudo isso de bom!

Por que eu deveria dar bola para programação funcional hein?

Page 23: TDC 2014 POA: Programacao funcional Por que Importa?

Programação Imperativa / OO

Formalismo, Syntax, Detalhes, Steps...

Page 24: TDC 2014 POA: Programacao funcional Por que Importa?

Distrações podem causar erros!

Page 25: TDC 2014 POA: Programacao funcional Por que Importa?

Distrações

Page 26: TDC 2014 POA: Programacao funcional Por que Importa?

Mais do mesmo...

Java

.NETPython

Ruby

CC++Php

Page 27: TDC 2014 POA: Programacao funcional Por que Importa?

OO Bad Design

Page 28: TDC 2014 POA: Programacao funcional Por que Importa?

OO Bad Design – EX: Checked Exceptions

Page 29: TDC 2014 POA: Programacao funcional Por que Importa?

Cargo Cult! (Fulano)Todo mundo faz então...

Page 30: TDC 2014 POA: Programacao funcional Por que Importa?

Aprenda algodiferente !!!

Page 31: TDC 2014 POA: Programacao funcional Por que Importa?

FP vs Prog. Imperativa

1. Pega o café2. Coloca o café na xícara3. Coloca água quente na xícara5. Mexe o café com a água4. retorna o café

retorna mexe (água, coloca (café, xícara))

Imperativa

Funcional

Page 32: TDC 2014 POA: Programacao funcional Por que Importa?
Page 33: TDC 2014 POA: Programacao funcional Por que Importa?
Page 34: TDC 2014 POA: Programacao funcional Por que Importa?
Page 35: TDC 2014 POA: Programacao funcional Por que Importa?

FP Puro

FP Influencia

Pós FP/Híbridas

Page 36: TDC 2014 POA: Programacao funcional Por que Importa?

Algumas comparações

Page 37: TDC 2014 POA: Programacao funcional Por que Importa?

FP e o mundo prático!

Page 38: TDC 2014 POA: Programacao funcional Por que Importa?

http://www.indeed.com/jobanalytics/jobtrends?q=clojure%2C+scala%2C+f%23&l=

Crescimento

Page 39: TDC 2014 POA: Programacao funcional Por que Importa?

Qual a diferença?

FP

Imperativa

Page 40: TDC 2014 POA: Programacao funcional Por que Importa?
Page 41: TDC 2014 POA: Programacao funcional Por que Importa?
Page 42: TDC 2014 POA: Programacao funcional Por que Importa?

Function & Data | Data & Functions

https://github.com/mmcgrana/ring/blob/master/ring-jetty-adapter/test/ring/adapter/test/jetty.clj

Page 43: TDC 2014 POA: Programacao funcional Por que Importa?

Algorithm focus

Page 44: TDC 2014 POA: Programacao funcional Por que Importa?

Mais reuso de código!

Page 45: TDC 2014 POA: Programacao funcional Por que Importa?

O que eu posso fazer?

Page 46: TDC 2014 POA: Programacao funcional Por que Importa?

State Discipline

Page 47: TDC 2014 POA: Programacao funcional Por que Importa?
Page 48: TDC 2014 POA: Programacao funcional Por que Importa?

Pure Functions: Avoid Side Effects, Improve Refactoring!

Page 49: TDC 2014 POA: Programacao funcional Por que Importa?

Correto VS Prático

Page 50: TDC 2014 POA: Programacao funcional Por que Importa?

No final do dia...

Page 51: TDC 2014 POA: Programacao funcional Por que Importa?

Aprendendo com Diversão, por que é algo realmente diferente!

Page 52: TDC 2014 POA: Programacao funcional Por que Importa?

Higher Order Functions

Currying

Lambda

Recursion

For/List Comprehensions

Monads

[Resumo/Comparação] Conceitos novos mas não tão diferentes assim...

Immutability

No Side Effects

Pure Functions

Page 53: TDC 2014 POA: Programacao funcional Por que Importa?

O que mais de legal vem da programação Funcional!?

Page 54: TDC 2014 POA: Programacao funcional Por que Importa?

Reactive 2.0

http://www.reactivemanifesto.org/

Page 55: TDC 2014 POA: Programacao funcional Por que Importa?

Akka.io

~650 bytes

4GB: 5.6 milhões de atores

50 milhões de mensagens p/segundo – 1 maquina.

Page 56: TDC 2014 POA: Programacao funcional Por que Importa?

Melhores Abstrações

Page 57: TDC 2014 POA: Programacao funcional Por que Importa?

Big Data / Map Reduce

100x Memoria10x disco

Page 58: TDC 2014 POA: Programacao funcional Por que Importa?

FRP / RX / Netflix

Page 59: TDC 2014 POA: Programacao funcional Por que Importa?

Perspectiva é tudo, muda seu jeito de ver o mundo!

Page 60: TDC 2014 POA: Programacao funcional Por que Importa?

Diego PachecoSoftware Architect | Agile Coach

Programação Funcional

Por que Importa?

diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco

diegopachecorsdiegopacheco

Obrigado !!!