Programação funcional para iniciantes







HOPE é uma linguagem de programação experimental, pequena, despretenciosa e minimalista que opera sob o paradigma funcional 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, mas pode ser usada perfeitamente na esfera educacional como ferramenta de introdução ao 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 mínima, exigindo a implementação de diversos recursos que são encontrados prontos em outras linguagens funcionais. Esta característica funcional 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.

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 e influenciada a partir das linguagens PROLOG, ML, SASL, OBJ e SCRATCHPAD. HOPE antecede as linguagens Haskell e Miranda.

HOPE encontra-se disponível para os sistemas operacionais FreeBSD e Windows. No sistema operacional FreeBSD a linguagem pode ser instalada com a instrução "pkg install hope" e usada a partir da chamada do comando hope. Para o sistema operacional Windows basta baixar o arquivo "hope.zip" (clique aqui) descompactar seu conteúdo 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 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 tutorial publicado na revista BYTE em agosto do ano de 1985 que pode ser obtido 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 para o sistema operacional FreeBSD foi escrito por Ross Paterson estando o arquivo fonte do interpretador e algumas bibliotecas disponibilizadas no endereço https://github.com/dmbaturin/hope mantido por Daniil Baturin. A versão do interpretador para o sistema operacional Windows é desenvolvida por Marco Alfaro a partir do código fonte escrito por Ross Paterson disponibilizado no endereço http://hopelang.blogspot.com/.