SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
Programação Funcional 
Por que Importa? 
Diego Pacheco 
Software Architect | Agile Coach 
diego-pacheco.blogspot.com 
@diego_pacheco 
diegopacheco 
diego.pacheco 
diegopachecors 
diegopacheco
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 
Games 
Smart 
Phones
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 
.NET 
Python 
Ruby 
C 
C++ 
Php
OO Bad Design
OO Bad Design –EX: Checked Exceptions
Cargo Cult! (Fulano)Todo mundo faz então...
Aprenda algo 
diferente !!!
FP vs Prog. Imperativa 
1. Pega o café 
2. Coloca o café na xícara 
3. Coloca água quente na xícara 
5. Mexe o café com a água 
4. 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 Memoria 
10x disco
FRP / RX / Netflix
Perspectiva é tudo, muda seu jeito de ver o mundo!
Diego Pacheco 
Software Architect | Agile Coach 
Programação Funcional 
Por que Importa? 
diego-pacheco.blogspot.com 
@diego_pacheco 
diegopacheco 
diego.pacheco 
diegopachecors 
diegopacheco 
Obrigado !!!

Mais conteúdo relacionado

Mais procurados

Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem cRafael_Lima87
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskellDaniel Farias
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoAntonio Rufino
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalJosé Araújo
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskellRenzo Petri
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Helder da Rocha
 
Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Alan Prando
 
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMinicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMaradona Morais
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 

Mais procurados (20)

Funcao PHP
Funcao PHPFuncao PHP
Funcao PHP
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Haskell
HaskellHaskell
Haskell
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
PHP 5.3 - Funções
PHP 5.3 - FunçõesPHP 5.3 - Funções
PHP 5.3 - Funções
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
 
PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio Rufino
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Curso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem PascalCurso de Delphi - Linguagem Pascal
Curso de Delphi - Linguagem Pascal
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskell
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014Swift em 45 minutos - TDC Sao Paulo 2014
Swift em 45 minutos - TDC Sao Paulo 2014
 
Minicurso Prolog
Minicurso PrologMinicurso Prolog
Minicurso Prolog
 
Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers Functional programming for Old Object Oriented Developers
Functional programming for Old Object Oriented Developers
 
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMinicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Seminário Prolog
Seminário PrologSeminário Prolog
Seminário Prolog
 

Semelhante a Programação Funcional: Por que Importa

Porque dar bola para FP?
Porque dar bola para FP?Porque dar bola para FP?
Porque dar bola para FP?Diego Pacheco
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...taty paya
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...taty paya
 
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...taty paya
 
Criando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comCriando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comPentahoBrasil
 
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...taty paya
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPaulino Michelazzo
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado ServidorMario Guedes
 
Php 7 do início ao profissional
Php 7  do início ao profissionalPhp 7  do início ao profissional
Php 7 do início ao profissionalLeonardo Tumadjian
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilRafael Pinheiro
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineTiago Peczenyj
 
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Pablo Dall'Oglio
 
Apresentação Conceitual de RPA com Automation Anywhere
Apresentação Conceitual de RPA com Automation AnywhereApresentação Conceitual de RPA com Automation Anywhere
Apresentação Conceitual de RPA com Automation AnywhereEduardo Britto
 

Semelhante a Programação Funcional: Por que Importa (20)

Porque dar bola para FP?
Porque dar bola para FP?Porque dar bola para FP?
Porque dar bola para FP?
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Scala
ScalaScala
Scala
 
Plugins
PluginsPlugins
Plugins
 
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...
DODSALVADOR19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre ...
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...
DODPOA19_Arrancada - o que este esporte pode nos ensinar sobre agilidade e pe...
 
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...
DODFORTALEZA19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre...
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Criando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.comCriando Indicadores de Negócios com o Pentaho na Globo.com
Criando Indicadores de Negócios com o Pentaho na Globo.com
 
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...
DODFLN19_Arrancada & DevOps - o que este esporte pode nos ensinar sobre agili...
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
Cacheamento Lado Servidor
Cacheamento Lado ServidorCacheamento Lado Servidor
Cacheamento Lado Servidor
 
Php 7 do início ao profissional
Php 7  do início ao profissionalPhp 7  do início ao profissional
Php 7 do início ao profissional
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
Big Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade onlineBig Data, Performance, Posix, RTB no mercado de publicidade online
Big Data, Performance, Posix, RTB no mercado de publicidade online
 
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
Construindo ERP's com PHP: Desafios em design, manutenção segurança e perf...
 
Apresentação Conceitual de RPA com Automation Anywhere
Apresentação Conceitual de RPA com Automation AnywhereApresentação Conceitual de RPA com Automation Anywhere
Apresentação Conceitual de RPA com Automation Anywhere
 

Mais de Diego Pacheco

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Diego Pacheco
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdfDiego Pacheco
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape UpDiego Pacheco
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep DiveDiego Pacheco
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! IIIDiego Pacheco
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not SubjectiveDiego Pacheco
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!Diego Pacheco
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II Diego Pacheco
 
Testing in production
Testing in productionTesting in production
Testing in productionDiego Pacheco
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about workDiego Pacheco
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!Diego Pacheco
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependenciesDiego Pacheco
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in testsDiego Pacheco
 

Mais de Diego Pacheco (20)

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdf
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape Up
 
Holacracy
HolacracyHolacracy
Holacracy
 
AWS IAM
AWS IAMAWS IAM
AWS IAM
 
CDKs
CDKsCDKs
CDKs
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep Dive
 
Sec 101
Sec 101Sec 101
Sec 101
 
Reflections on SCM
Reflections on SCMReflections on SCM
Reflections on SCM
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! III
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not Subjective
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II
 
Testing in production
Testing in productionTesting in production
Testing in production
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about work
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!
 
AI and the Future
AI and the FutureAI and the Future
AI and the Future
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependencies
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in tests
 
Kanban 2020
Kanban 2020Kanban 2020
Kanban 2020
 

Programação Funcional: Por que Importa