O documento discute a motivação para programação funcional usando Haskell, descrevendo suas vantagens como código menor e mais claro, facilitando reuso através de abstrações poderosas e aumento da produtividade.
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 declarativapreocupa-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
Lispfoi 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:
5.
Programação Funcional
Linguagem puramentefuncional
Avaliação Lazy: argumentos são avaliados somente quando
necessário. Possibilita o trabalho com estrutura de dados infinitas.
Não existe a noção de estado
Não existe comando de atribuicão
Não existem variáveis!
Cada função é definida como a composição e aplicação de outras
funções (ou da própria)
6.
Linguagens Funcionais
Funçõessã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
Códigomenor,
mais claro e
mais fácil de manter.
Andy Adams-Moran
(engenheiro de
software da Galois)
reduziu de
200.000 ->20.000
usando Haskell.
Haskell no Mundoreal
Google MapReduce, Sawzall
Ericsson AXE phone switch
Jane Street Capital
Credit Suisse
Morgan Stanley
Standard Chartered
Twitter
Facebook
Yahoo
Erlang
Scala
Microsoft F#
15.
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.
16.
???
Se linguagens funcionaissã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
17.
???
• Linguagens funcionaissã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
18.
???
• Várias dascoisas legais que encontramos nas linguagens de
programação modernas surgiram nas linguagens funcionais.
Ex:
• Funções Anônimas (Phyton, PhP)
• Garbage Collection (Java, C#, Python, Perl, Ruby, Javascript)
• Generics (Java, C#)
• List comprehensions (C#, Python, Perl 6, Javascript)
• Type classes (C++ “concepts”)
• Higher-order functions (Java, C#, Python, Perl, Ruby, Javascript)
• Programação genérica, polimorfismo de tipo (Java 1.5)