Haskell motivação
-
Upload
crislanio-macedo -
Category
Technology
-
view
86 -
download
5
Transcript of Haskell motivação
Programação Funcional em Haskell2a 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 oproblema e a solução e não com a maneira com a qual estasolução será encontrada. Uma linguagem declarativapreocupa-se com o que deve ser computador e não como umvalor deve ser computador.
OBJETIVO do grupo: estudar Programação Funcionalcom a Linguagem Haskell.
Programação Funcional
Lisp foi a primeira linguagem de programação funcional. Elafoi 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:
Programação FuncionalLinguagem puramente funcionalAvaliação Lazy: argumentos são avaliados somente quandonecessá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)
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
Linguagens Funcionais
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.
Vantagens de Linguagens Funcionais
Reuso Haskell facilita e simplifica refatoração e reuso .
Vantagens de Linguagens Funcionais
.
Realizam a mesma tarefa. Sentiu a diferença?
Abstrações Poderosas
Aumento de Produtividade
Resumindo
Tamanho do Código
Tecnologia testada
Facilita o reuso
Diminuir o gap semântico
Abstrações Poderosas
Aumento da Produtividade
Haskell no Mundo realGoogle MapReduce, Sawzall Ericsson AXE phone switch
Jane Street Capital Credit Suisse
Morgan Stanley Standard Chartered
Twitter Facebook
Yahoo Erlang
Scala Microsoft F#
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 umalinguagem 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 nuncaouvi falar delas?
• Um paradigma de programação leva um longo tempo até seradotado. Ex: orientação a objetos surgiu nos anos 60.
• Linguagens funcionais são ensinadas na maioria dos cursosde computação da EUROPA e EUA, e em alguns cursos noBrasil
???
• Linguagens funcionais são utilizadas em várias empresas eprojetos:• 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 deprogramaçã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)