SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Programação Funcional
em Haskell
2a Reunião — Motivação para Programação Funcional
Conteúdo e objetivos
 Introdução à programação funcional usando Haskell
 Objetivos de aprendizagem
 Motivação sobre programação funcional;
 O que é programação funcional ;
 Vantagens das linguagens funcionais;
Motivação
 Programação declarativa preocupa-se em especificar o
problema e a solução e não com a maneira com a qual esta
solução será encontrada. Uma linguagem declarativa
preocupa-se com o que deve ser computador e não como um
valor deve ser computador.
 OBJETIVO do grupo: estudar Programação Funcional
com a Linguagem Haskell.
Programação Funcional
 Lisp foi a primeira linguagem de programação funcional. Ela
foi descrita por MacCarthy do MIT em 1960.
 Vamos estudar uma linguagem de
programação funcional moderna, chamada Haskell, que possui
várias características interessantes:
• Linguagem puramente funcional: Não existe atribuição!
• Avaliação Lazy: argumentos são avaliados somente quando
necessário. Possibilita o trabalho com estrutura de dados infinitas.
Linguagens Funcionais
 Funções são os elementos principais neste tipo de linguagem.
 Funções podem receber funções como argumentos e uma função
pode devolver como resultado outra função.
 Estruturas de dados podem conter funções como elementos
Vantagens de Linguagens
Funcionais
 Programas são pequenos e com alto poder de expressão.
 Suporta componentes reusáveis de software.
 Permite prototipação rápida.
 Permite verificação formal de programas. As funções em uma
linguagem funcional são funções matemáticas puras, não existe
atribuição. Uma função que recebe os mesmos argumentos sempre
devolve o mesmo resultado.
???
Se linguagens funcionais são tão legais como é que eu nunca
ouvi falar delas?
• Um paradigma de programação leva um longo tempo até ser
adotado. Ex: orientação a objetos surgiu nos anos 60.
• Linguagens funcionais são ensinadas na maioria dos cursos
de computação da EUROPA e EUA, e em alguns cursos no
Brasil
???
• Linguagens funcionais são utilizadas em várias empresas e
projetos:
• Autocad possui partes implementadas em LISP
• Super Mario 64 usa LISP internamente
• ERLANG: Linguagem funcional desenvolvida pela Ericson
???
• Várias das coisas legais que encontramos nas linguagens de
programação modernas surgiram nas linguagens funcionais.
Ex:
• Garbage Collection (Java, Phyton, Perl, etc)
• Funções Anônimas (Phyton, PhP)
• Programação genérica, polimorfismo de tipo (Java 1.5)

Mais conteúdo relacionado

Mais procurados

Programação 1
Programação 1Programação 1
Programação 1essa
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programaçãoessa
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 

Mais procurados (9)

Programação 1
Programação 1Programação 1
Programação 1
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 

Destaque

Destaque (13)

Livro Mini-Curso de Haskell
Livro Mini-Curso de HaskellLivro Mini-Curso de Haskell
Livro Mini-Curso de Haskell
 
Paradigma funcional
Paradigma funcionalParadigma funcional
Paradigma funcional
 
Haskell
HaskellHaskell
Haskell
 
Haskell
HaskellHaskell
Haskell
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
 
Pylint
PylintPylint
Pylint
 
Haskell
HaskellHaskell
Haskell
 
Haskell
HaskellHaskell
Haskell
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?
 
Seminario haskell
Seminario haskellSeminario haskell
Seminario haskell
 
Introdução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection APIIntrodução à Metaprogramação com Java Reflection API
Introdução à Metaprogramação com Java Reflection API
 
Linguagem de programação haskell
Linguagem de programação haskellLinguagem de programação haskell
Linguagem de programação haskell
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 

Semelhante a Haskell motivaçãoaula2

Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostilaNathiele Lacerda
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Romário santos
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacaopablogranola
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
Programação funcional com_haskell
Programação funcional com_haskellProgramação funcional com_haskell
Programação funcional com_haskellFelipe de Morais
 
Aula 2 linguagem de programação
Aula 2   linguagem de programaçãoAula 2   linguagem de programação
Aula 2 linguagem de programaçãoCristian Andrade
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 

Semelhante a Haskell motivaçãoaula2 (20)

Seminário: Lisp
Seminário: LispSeminário: Lisp
Seminário: Lisp
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostila
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacao
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
Programação funcional com_haskell
Programação funcional com_haskellProgramação funcional com_haskell
Programação funcional com_haskell
 
Aula 2 linguagem de programação
Aula 2   linguagem de programaçãoAula 2   linguagem de programação
Aula 2 linguagem de programação
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 

Mais de CRISLANIO MACEDO

Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record LinkageCRISLANIO MACEDO
 
Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019CRISLANIO MACEDO
 
Search based gravitational algorithm
Search based gravitational algorithmSearch based gravitational algorithm
Search based gravitational algorithmCRISLANIO MACEDO
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...CRISLANIO MACEDO
 
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...CRISLANIO MACEDO
 
JGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast CommunicationJGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast CommunicationCRISLANIO MACEDO
 
Inteligência artificial algumas técnicas aplicadas em jogos
Inteligência artificial  algumas técnicas aplicadas em jogosInteligência artificial  algumas técnicas aplicadas em jogos
Inteligência artificial algumas técnicas aplicadas em jogosCRISLANIO MACEDO
 
Artigo ia traps, invariants, and dead-ends
Artigo ia   traps, invariants, and dead-endsArtigo ia   traps, invariants, and dead-ends
Artigo ia traps, invariants, and dead-endsCRISLANIO MACEDO
 
Análise dos dados abertos do governo federal
Análise dos dados abertos do governo federalAnálise dos dados abertos do governo federal
Análise dos dados abertos do governo federalCRISLANIO MACEDO
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...CRISLANIO MACEDO
 
Sistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de AvaliaçãoSistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de AvaliaçãoCRISLANIO MACEDO
 
Sistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de SínteseSistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de SínteseCRISLANIO MACEDO
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosCRISLANIO MACEDO
 
Haskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesHaskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesCRISLANIO MACEDO
 

Mais de CRISLANIO MACEDO (20)

Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record Linkage
 
Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019
 
Pitch Medbloc
Pitch MedblocPitch Medbloc
Pitch Medbloc
 
Search based gravitational algorithm
Search based gravitational algorithmSearch based gravitational algorithm
Search based gravitational algorithm
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
 
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
 
JGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast CommunicationJGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast Communication
 
Inteligência artificial algumas técnicas aplicadas em jogos
Inteligência artificial  algumas técnicas aplicadas em jogosInteligência artificial  algumas técnicas aplicadas em jogos
Inteligência artificial algumas técnicas aplicadas em jogos
 
Artigo ia traps, invariants, and dead-ends
Artigo ia   traps, invariants, and dead-endsArtigo ia   traps, invariants, and dead-ends
Artigo ia traps, invariants, and dead-ends
 
Análise dos dados abertos do governo federal
Análise dos dados abertos do governo federalAnálise dos dados abertos do governo federal
Análise dos dados abertos do governo federal
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
 
Sistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de AvaliaçãoSistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de Avaliação
 
Sistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de SínteseSistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de Síntese
 
Resolução lista2
Resolução lista2Resolução lista2
Resolução lista2
 
Resoluçãohaskell2
Resoluçãohaskell2Resoluçãohaskell2
Resoluçãohaskell2
 
Haskell ufc quixadalista2
Haskell ufc quixadalista2Haskell ufc quixadalista2
Haskell ufc quixadalista2
 
Haskell ufc quixadalista1
Haskell ufc quixadalista1Haskell ufc quixadalista1
Haskell ufc quixadalista1
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivos
 
Haskell aula3 listas
Haskell aula3 listasHaskell aula3 listas
Haskell aula3 listas
 
Haskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesHaskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classes
 

Haskell motivaçãoaula2

  • 1. Programação Funcional em Haskell 2a Reunião — Motivação para Programação Funcional
  • 2. Conteúdo e objetivos  Introdução à programação funcional usando Haskell  Objetivos de aprendizagem  Motivação sobre programação funcional;  O que é programação funcional ;  Vantagens das linguagens funcionais;
  • 3. Motivação  Programação declarativa preocupa-se em especificar o problema e a solução e não com a maneira com a qual esta solução será encontrada. Uma linguagem declarativa preocupa-se com o que deve ser computador e não como um valor deve ser computador.  OBJETIVO do grupo: estudar Programação Funcional com a Linguagem Haskell.
  • 4. Programação Funcional  Lisp foi a primeira linguagem de programação funcional. Ela foi descrita por MacCarthy do MIT em 1960.  Vamos estudar uma linguagem de programação funcional moderna, chamada Haskell, que possui várias características interessantes: • Linguagem puramente funcional: Não existe atribuição! • Avaliação Lazy: argumentos são avaliados somente quando necessário. Possibilita o trabalho com estrutura de dados infinitas.
  • 5. Linguagens Funcionais  Funções são os elementos principais neste tipo de linguagem.  Funções podem receber funções como argumentos e uma função pode devolver como resultado outra função.  Estruturas de dados podem conter funções como elementos
  • 6. Vantagens de Linguagens Funcionais  Programas são pequenos e com alto poder de expressão.  Suporta componentes reusáveis de software.  Permite prototipação rápida.  Permite verificação formal de programas. As funções em uma linguagem funcional são funções matemáticas puras, não existe atribuição. Uma função que recebe os mesmos argumentos sempre devolve o mesmo resultado.
  • 7. ??? Se linguagens funcionais são tão legais como é que eu nunca ouvi falar delas? • Um paradigma de programação leva um longo tempo até ser adotado. Ex: orientação a objetos surgiu nos anos 60. • Linguagens funcionais são ensinadas na maioria dos cursos de computação da EUROPA e EUA, e em alguns cursos no Brasil
  • 8. ??? • Linguagens funcionais são utilizadas em várias empresas e projetos: • Autocad possui partes implementadas em LISP • Super Mario 64 usa LISP internamente • ERLANG: Linguagem funcional desenvolvida pela Ericson
  • 9. ??? • Várias das coisas legais que encontramos nas linguagens de programação modernas surgiram nas linguagens funcionais. Ex: • Garbage Collection (Java, Phyton, Perl, etc) • Funções Anônimas (Phyton, PhP) • Programação genérica, polimorfismo de tipo (Java 1.5)