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.
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:
5. Programação Funcional
Linguagem puramente funcional
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çõ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
8. Vantagens de Linguagens
Funcionais
Código menor,
mais claro e
mais fácil de manter.
Andy Adams-Moran
(engenheiro de
software da Galois)
reduziu de
200.000 ->20.000
usando Haskell.
14. Haskell no Mundo real
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 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
17. ???
• 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
18. ???
• Várias das coisas 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)