SlideShare uma empresa Scribd logo
1 de 22
DevDay 2011 Programação Funcional
Quem sou eu? Rodrigo Vidal Twitter: @rodrigovidal www.rodrigovidal.net FocoemArquitetura de Software Evangelista da Linguagem F# Professional Scrum Developer Microsoft Student Partner
Meu slide não é azul parceiro...  É PRETO
Programação Funcional Antigo paradigma 52 anos  Ignorado do mainstream corporativo
Isso importa? Novos desafios Mudança de Mindset Sair da zona de conforto Muitas linguagens implementam
Object vs Function
Pense diferente...! “Uma linguagem que não muda sua visão sobre programação, não vale ser aprendida.” 	(Alan Perlis)
Lambda Calculus Foi desenvolvido por Alonzo Church in 1930, como uma forma de estudar funções e computabilidade.
Funções: O Coração
C# e ai? Generics Iterators Anonymous Methods Delegates
Transparência Referencial Afunção depende apenas dos valores de seus parametros. Modificamestado Interage de maneiraobservávelcom a funçãoinvocadora Interage com o “mundo exterior” Exemplo: Uma funçãosem valor de retorno
Efeito Colateral Estados Função Impura Saída Entrada Atribuição
Imutabilidade
Aplicação Parcial de Funções
T1 -> T2 -> R
Funções de Alta Ordem
Recursão em Cauda
Composição de Funções f(x) g(x)
MapReduce
Monads
Estrutura de uma Monad Haskell class Monad m where  (>>=) :: m a -> (a -> m b) -> m b Return :: a -> m a
Obrigado!

Mais conteúdo relacionado

Semelhante a Programação Funcional DevDay 2011

A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanostdc-globalcode
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento4Soft
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareLeonardo Zanivan
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHPFlávio Lisboa
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPPablo Dall'Oglio
 
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
 
Feature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralFeature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralRuan Carvalho
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumLuca Bastos
 
Apresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareApresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareAleatório .
 

Semelhante a Programação Funcional DevDay 2011 (20)

A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
Microsoft C#
Microsoft C#Microsoft C#
Microsoft C#
 
Programação Funcional para Humanos
Programação Funcional para HumanosProgramação Funcional para Humanos
Programação Funcional para Humanos
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Lidando com Equipes de Desenvolvimento
Lidando com Equipes de DesenvolvimentoLidando com Equipes de Desenvolvimento
Lidando com Equipes de Desenvolvimento
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de software
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
Linear Engineering
Linear EngineeringLinear Engineering
Linear Engineering
 
Orientação a Aspectos em PHP
Orientação a Aspectos em PHPOrientação a Aspectos em PHP
Orientação a Aspectos em PHP
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Design for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHPDesign for change: Fatores que influenciam na longevidade de um Software PHP
Design for change: Fatores que influenciam na longevidade de um Software PHP
 
Refactoring
RefactoringRefactoring
Refactoring
 
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
 
Feature-Driven Development - Visão Geral
Feature-Driven Development - Visão GeralFeature-Driven Development - Visão Geral
Feature-Driven Development - Visão Geral
 
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelumAgile br2011 lucabastos-prog10x-noiteagilcaelum
Agile br2011 lucabastos-prog10x-noiteagilcaelum
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Apresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de softwareApresentação bichinhos da TI: o que é esse arquiteto de software
Apresentação bichinhos da TI: o que é esse arquiteto de software
 

Programação Funcional DevDay 2011