Programação funcional leve e poderosa







Hope é uma linguagem de programação experimental, pequena, despretenciosa e minimalista que opera sob o paradigma funcional puro com definição de tipos de dados polimórficos, tipos de dados algébricos, correspondência de padrões e uso de listas preguiçosas (lista que atrasa a avaliação de uma expressão até ela ser necessária evitando repetir avaliações já utilizadas) com funções de ordem superior.

Hope não chegou a ser usada comercialmente, industrialmente ou cientificamente apesar de ter influenciado fortemente outras linguagens de programação, como Miranda e Haskell. Devido a sua forma natural pode ser usada perfeitamente na esfera educacional como ferramenta de introdução ao aprendizado do paradigma de programação declarativo funcional a estudantes iniciantes e para profissionais de desenvolvimento de software que estejam enraizados no paradigma imperativo difundido na programação estruturada e orientada a objetos.

O principal motivo que torna Hope ideal para a aprendizagem é o fato da linguagem possuir uma infraestrutura operacional mínima, exigindo a implementação de diversos recursos essenciais que são normalmente encontrados prontos em outras linguagens funcionais. Esta característica faz com que o aprendiz da linguagem tenha profunda experiência de imersão na programação funcional, dando-lhe destreza mental para tirar melhor proveito de outras linguagens funcionais mais conhecidas, como Haskell, OCaml ou F#.

Hope foi desenvolvida por Rod M. Burstall, David B. Macqueen e Donald T. Sannella como trabalho apresentado para a Universidade de Edinburg na Escócia no ano de 1978. Seu nome advém do local onde se situava o Departamento de Ciência da Computação da Universidade de Edinburgh: Hope Park Square.

O objetivo da linguagem Hope é ser simples, permitindo a construção de programas claros e de fácil manutenção, tendo sido baseada a partir das linguagens LISP e ISWIM.

Hope encontra-se disponível para os sistemas operacionais padrões POSIX (Unix) e Windows. Para o sistema operacional Windows este é o objetivo desta página, bastando baixar o arquivo "hope.zip", (clique aqui), descompactar seu conteúdo (preferencialmente na pasta "hope") e executar o programa "hope.exe". Neste link pode ser obtido os arquivos dos módulos escritos por Ross Paterson adaptados para o intrepetador que é executado no sistema operacional Windows.

Por ter sido a linguagem Hope desenvolvida academicamente ela acabou por não ser usada comercialmente havendo pouco material publicado a seu respeito. Na Internet encontra-se alguns artigos e materiais sobre a linguagem Hope que podem ser usados para sua aprendizagem destacando-se um famoso tutorial publicado na revista BYTE em agosto de 1985 que pode ser obtido aqui ou sua versão em português disponível aqui. Além desses documentos há o guia de referência da linguagem escrito por Ross Paterson e disponibilizado em portugês aqui.

Livros sobre linguagem Hope são extremamente raros. Até julho de 2018 foram publicadas duas obras: a primeira intitulada "Functional Programming with Hope" do autor Roger Bailey em abril de 1990 pela editora Ellis Horwood, a qual se encontra esgotada e a segunda, mais recente, intitulada "Linguagem Hope: Programação funcional" do autor Augusto Manzano pela editora Propes Vivens e distribuído pelas plataformas Clube de Autores e agBook. Além desses dois livros há algumas citações e comentários da linguagem em alguns poucos livros.

O interpretador Hope disponibilizado neste sítio para o sistema operacional Windows é desenvolvido por Marco Alfaro (http://hopelang.blogspot.com/) a partir do código fonte escrito por Ross Paterson. Além do interpretador de Marco Alfaro há para o sistema operacional Windows uma segunda alteranativa chamada "Hopeless" (http://shabarshin.com/funny/) desenvolvida por Alexander A. Shabarshin e disponível para download a partir do endereço: http://shabarshin.com/funny/hopeless_cygwin.zip.