haskell motivação

Post on 07-Aug-2015

90 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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)

top related