






















































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento discute as vantagens de usar linguagens declarativas e funcionais em programação de software, incluindo clareza, concisão, alto nível de abstração, componentes reutilizáveis, verificação formal, rápida prototipagem e poderosas ferramentas de resolução de problemas.
O que você vai aprender
Tipologia: Slides
1 / 94
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Capítulo 1
José Romildo Malaquias
Departamento de Computação Universidade Federal de Ouro Preto
1 Paradigmas de programação
2 Programação funcional
3 A crise do software
4 Algumas características de Haskell
5 Antecedentes históricos
6 Algumas empresas que usam Haskell
7 Curso online
8 Programando com Funções
9 Experimentando Haskell
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Um paradigma de programação determina a visão que o programador possui sobre a estruturação e a execução do programa.
Por exemplo: Em programação orientada a objetos, programadores podem abstrair um programa como uma coleção de objetos que interagem entre si. Em programação lógica os programadores abstraem o programa como um conjunto de predicados que estabelecem relações entre objetos (axiomas), e uma meta (teorema) a ser provada usando os predicados. Em programação funcional os programas são expressões a serem avaliadas, e são organizados usando funções.
Diferentes linguagens de programação suportam diferentes paradigmas de programação.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico.
Por exemplo: Smalltalk, Eiffel e Java suportam o paradigma orientado a objetos. Haskell e Clean suportam o paradigma funcional. OCaml, LISP, Scala, Perl, Python e C++ suportam múltiplos paradigmas.
Geralmente os paradigmas de programação são diferenciados pelas técnicas de programação que permitem ou proíbem.
Por exemplo, a programação estruturada não permite o uso de goto.
Esse é um dos motivos pelos quais novos paradigmas são considerados mais rígidos que estilos tradicionais.
Apesar disso, evitar certos tipos de técnicas pode facilitar a prova de correção de um sistema, podendo até mesmo facilitar o desenvolvimento de algoritmos.
O relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo pelo fato de linguagens de programação poderem suportar mais de um paradigma.
Geralmente os paradigmas de programação são diferenciados pelas técnicas de programação que permitem ou proíbem.
Por exemplo, a programação estruturada não permite o uso de goto.
Esse é um dos motivos pelos quais novos paradigmas são considerados mais rígidos que estilos tradicionais.
Apesar disso, evitar certos tipos de técnicas pode facilitar a prova de correção de um sistema, podendo até mesmo facilitar o desenvolvimento de algoritmos.
O relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo pelo fato de linguagens de programação poderem suportar mais de um paradigma.
Geralmente os paradigmas de programação são diferenciados pelas técnicas de programação que permitem ou proíbem.
Por exemplo, a programação estruturada não permite o uso de goto.
Esse é um dos motivos pelos quais novos paradigmas são considerados mais rígidos que estilos tradicionais.
Apesar disso, evitar certos tipos de técnicas pode facilitar a prova de correção de um sistema, podendo até mesmo facilitar o desenvolvimento de algoritmos.
O relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo pelo fato de linguagens de programação poderem suportar mais de um paradigma.
Programação imperativa
Descreve a computação como ações, enunciados ou comandos que mudam o estado ( variáveis ) de um programa, enfatizando como resolver um problema. Um programa imperativo é uma sequência de comandos para o computador executar, sendo muito parecido com o comportamento imperativo das linguagens naturais que expressam ordens. O nome do paradigma, imperativo, está ligado ao tempo verbal imperativo, onde o programador diz ao computador: faça isso, depois isso, depois aquilo... Exemplos: paradigmas procedimental: C, Pascal, etc, e orientado a objetos: Smalltalk, Java, C++, Python, etc
Programação declarativa Descreve o que o programa faz e não como seus procedimentos funcionam. Ênfase nos resultados, no que se deseja obter. Exemplos: paradigmas funcional: Haskell, OCaml, LISP, etc, e lógico: Prolog, etc.