Páginas

2013-10-11

Haskell - A História!


1930 – O Cálculo Lambda (λ-Calculus)

As teorias e fundamentos matemáticos por trás da Programação Funcional tiveram início na década de 1930 com o Cálculo Lambda – criado por Alonzo Church.
É considerado a primeira linguagem programação funcional – porém, não foi projetada para ser executada em computadores, sendo apenas um modelo matemático que descreve relações entre funções.
O Cálculo Lambda é tão importante que algumas linguagens imperativas o estão incorporando. É o caso da versão 8 da linguagem Java.
Alonzo Church consegui criar um modelo que permitia construir funções mais complexas através de relações entre funções mais simples.

1956 – As Primeiras Linguagens Funcionais

Lisp foi a primeira linguagem de programação funcional; foi criada em 1956 por John McCarthy, logo após a criação do FORTRAN. Isso faz de Lisp a segunda linguagem de programação do mundo.

Muitas outras linguagens funcionais foram criadas desde então – várias delas foram derivadas de Lisp (os também chamados dialetos do Lisp). Entre as quais cito Scheme (do MIT) e Clojure (que roda na JVM).

Em 1996, Lisp foi padronizada e passou a chamar-se Common Lisp.

Infelizmente, Lisp nunca foi uma linguagem puramente funcional, pois agregava componentes de linguagens imperativas (mudanças de estado, efeitos colaterais, comandos de controle, etc.).

1978 – A Grande Crítica!

Em 1978, John Backus (pai do FORTRAN, do BFN, etc.) publicou o artigo “Can Programming Be Liberated from the vonNeumann Style?” (A programação pode ser livre do estilo von Neumann?) no Turing Award. Este artigo atacava severamente a arquitetura de hardware baseada no modelo de von Neumann e seus efeitos negativos sobre as linguagens de programação que seguiam esse estilo. Ou seja, ele criticou o hardware atual e as linguagens de programação do Paradigma Imperativo.

Ele demostrou que as novas gerações de linguagens herdavam falhas de projeto das linguagens antigas e adicionavam novas falhas; estas, por sua vez, seriam herdadas pelas próximas gerações. Assim, essas linguagens apenas cresciam de tamanho (ou, engordavam), porém, não aumentavam seu poder.

Backus afirmava que as pesquisas envolvendo novas linguagens de programação não focavam novas ideias, mas sim, a criação de linguagens acomodadas a um modelo já existente.

Porém, Backus exaltou a Programação Funcional! Neste artigo, apresentou a Programação Funcional como uma prática ferramenta de programação, deixando claro que não se tratava de uma curiosidade matemática – que é um estigma até os dias de hoje.

1980 – Acensão da Programação Funcional

Já na metade da década de 1980, a comunidade de Programação Funcional estava em plena movimentação – entre pesquisas, reuniões e conferências.

Várias técnicas enovadoras foram propostas, como por exemplo: avaliação preguiçosa (lazy evaluation).

Em meio a tantas ideias e teorias, diversos cientistas individualmente propuseram e implementaram suas próprias soluções computacionais; o que gerou uma avalanche de linguagens de programação e de documentação científica. Somente para exemplificar, segue a lista de algumas linguagens funcionais que surgiram nesse período: Miranda, LML (Lazy ML), Orwell, Alfl, Id, Clean, Ponder e Daisy.

1987 – Só uma Linguagem!

Das linguagens criadas nesse período, somente a linguagem Miranda era comercial, madura, tinha um bom projeto e era usada em produção. As demais, eram esforços individuais dos cientistas – e não possuíam um bom projeto de linguagem. Porém, de uma forma geral, todas possuíam ideias muito interessantes – não era fácil provar que uma linguagem era melhor que outra.

Muito bem, havia um número enorme de linguagens e isso gerou desconforto na comunidade de Programação Funcional. Então, surgiu a ideia de se criar uma única linguagem que englobasse todas as melhores práticas de projeto de linguagem, além de implementar as técnicas funcionais que estavam sendo discutidas na época. Esperava-se que isso trouxesse benefícios para toda a comunidade.

Em Setembro de 1987, houve uma reunião, na conferência de Linguagens de Programação Funcionais e Arquitetura de Computadores, em Portland - Oregon, para discutir essa questão. Assim, foi decidido que uma comissão deveria ser formada para projetar tal linguagem, com a finalidade de:
  • Proporcionar comunicação mais rápida de novas idéias;
  • Ser uma fundação estável para o desenvolvimento de aplicações reais;
  • Ser um meio, através do qual, a Programação Funcional seria encorajada.
Essa comissão decidiu não começar do zero e elegeu uma linguagem como base para o projeto. Bem, a linguagem Miranda era a mais amadurecida e bem projetada – entre as demais. Sendo assim, ela foi escolhida como ponto de partida.

A nova linguagem foi batizada de Haskell. Isso foi uma homenagem ao matemático Haskell Brooks Curry – que contribuir com teorias fundamentais para a Programação Funcional.

A versão 1.0 de Haskell foi liberada em 1990. Em 1999, a linguagem e as bibliotecas básicas foram padronizadas sob o nome Haskell 98.

Por Marcelo Parrela (marcelo.parrela@gmail.com)

Nenhum comentário:

Postar um comentário