Upload
diego-pacheco
View
356
Download
3
Embed Size (px)
DESCRIPTION
TDC 2014 POA: Programacao funcional Por que Importa?
Citation preview
Programação Funcional
Por que Importa?
Diego PachecoSoftware Architect | Agile Coach
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco
http://about.me/diegopacheco
Ilegra.com
Programação Funcional
Por que Importa?
FP – É muito velha?
FP – pré-histórico!
Lambda Calculus - 1930
Funções matemáticas – Currying - Lambda Calculus - 1930
LISP - 1958
Código - LISP #SQN
Código - LISP - 1958
Haskell - 1990
Código - Haskell- 1990
Matemática…
Ah não…
#Fail
Entrega, Prática, Mercado!
Tudo em C, C++, Java,.NET
Banco de Dados
Servidor Web
Sistemas Operacionais
Middleware Server
Cache/Data Grids
Web Browsers
GamesSmartPhones
Mercado, empregos, java/.net
http://www.indeed.com/jobanalytics/jobtrends?q=java%2C+.net%2C+C%2C+haskell%2C+lisp&l=
TOP Linguagens 2014
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Mas como assim? Se programação OO / imperativa tem tudo isso de bom!
Por que eu deveria dar bola para programação funcional hein?
Programação Imperativa / OO
Formalismo, Syntax, Detalhes, Steps...
Distrações podem causar erros!
Distrações
Mais do mesmo...
Java
.NETPython
Ruby
CC++Php
OO Bad Design
OO Bad Design – EX: Checked Exceptions
Cargo Cult! (Fulano)Todo mundo faz então...
Aprenda algodiferente !!!
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
FP Puro
FP Influencia
Pós FP/Híbridas
Algumas comparações
FP e o mundo prático!
http://www.indeed.com/jobanalytics/jobtrends?q=clojure%2C+scala%2C+f%23&l=
Crescimento
Qual a diferença?
FP
Imperativa
Function & Data | Data & Functions
https://github.com/mmcgrana/ring/blob/master/ring-jetty-adapter/test/ring/adapter/test/jetty.clj
Algorithm focus
Mais reuso de código!
O que eu posso fazer?
State Discipline
Pure Functions: Avoid Side Effects, Improve Refactoring!
Correto VS Prático
No final do dia...
Aprendendo com Diversão, por que é algo realmente diferente!
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
O que mais de legal vem da programação Funcional!?
Reactive 2.0
http://www.reactivemanifesto.org/
Akka.io
~650 bytes
4GB: 5.6 milhões de atores
50 milhões de mensagens p/segundo – 1 maquina.
Melhores Abstrações
Big Data / Map Reduce
100x Memoria10x disco
FRP / RX / Netflix
Perspectiva é tudo, muda seu jeito de ver o mundo!
Diego PachecoSoftware Architect | Agile Coach
Programação Funcional
Por que Importa?
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco
Obrigado !!!