Personal tools

Pt/Introdução

From HaskellWiki

Jump to: navigation, search


Haskell é uma linguagem de programação para computadores. Em particular, ela é uma linguagem polimórfica tipada, preguiçosa e puramente funcional, completamente difrente da maioria das outras linguagens. A linguagem foi batizada por Haskell Brooks Curry, que trabalha em expressões lógicas matemáticas em uma fundação para linguagens funcionais. Haskell é baseada em cálculo lambda, por isso o lambda é usado como logo.

1 Por quê usar Haskell?

Escrever grandes softwares é um trabalho difícil e dispendioso. Dar manutenção nesses sistemas é mais difícil e dispendioso ainda. Linguagens de programação funcional, como Haskell, podem torná-lo mais fácil e mais barato. Por exemplo, um novo usuário que escreve um pequeno banco de dados relacional em Haskell dirá:

Uau! Eu basicamente escrevi o programa sem testar nada em termos de transformação entre tipos. Eu escrevi o teste/código do exemplo e não teve quase nenhum erro da execução no código! O compilador/sistema é realmente realmente bons em impedi-lo de fazer erros de codificação! Nunca em minha vida tive um bloco do código tão grande executar corretamente na primeira tentativa. Estou realmente impressionado.

Mesmo se você não estiver em uma posição para usar Haskell em seus projetos de programação, aprender Haskell pode tornar-lhe um programador melhor em qualquer linguagem.

Eu aprendi Haskell há alguns anos atrás, programando anteriormente em Python e (muitos) outras linguagens. Recentemente, eu tenho usado o Python para um projeto (a escolha que está sendo determinada por critérios técnico e por não técnicos), e encontro em meu estilo de programação Python agora pesada influência (para o melhor, eu espero; -) por minha experiência em programação Haskell.

Graham Klyne

Haskell oferece a você:

  • aumento substancial da produtividade do programador (Ericsson mediu um fator da melhoria entre 9 e 25% utilizando Erlang, uma língua de programação funcional similar a Haskell, em um conjunto de experimentos em software de telefonia).
  • código menor, mais limpo e mais fácil de dar manutenção.
  • menos erros e maior confiabilidade.
  • menor "gap semântico" entre o programador e a linguagem.
  • menor tempo de codificação.

Haskell é uma linguagem do largo-spectrum, apropriada para uma variedade das aplicações. É particularmente apropriado para os programas que necessitam ser altamente modificáveis e de fácil manutenção.

Muito do ciclo de vida do software é gasto em especificação , design , , manutenção , do projeto e não na programação . As linguagens funcionais são superb para as especificações da escrita que podem realmente ser executadas (e daqui testado e eliminado erros). Tal da especificação então é o primeiro protótipo do final programa.

Linguagens funcionais são soberbas para as especificações da escrita que podem realmente ser executadas (e assim testado e eliminado erros). Tal especificação então é o primeiro protótipo do programa final.

Programas funcionais são também relativamente fáceis de manter, porque o código é menor, mais claro, e o controle rigoroso de efeitos laterais elimina uma classe enorme de interações desnecessárias.

2 O que é programação funcional?

C, Java, Pascal, Ada, e assim por diante, são linguagens imperativas. São "imperativas" no sentido em que consistem em uma seqüencia de comandos, que são executados estritamente um após o outro. Haskell é uma linguagem funcional. Uma linguagem funcional é uma única expressão, que é executada avaliando essa expressão. Qualquer um que já usou uma planilha eletrônica, tem experiência em programação funcional. Em uma planilha, especificamos o valor de cada célula, em função dos valores de outras células. O foco está em "o quê" deve ser computado, e não "como" deve ser computado. Por exemplo:

  • nós não especificamos a ordem em que as planilhas devem ser computadas, ao invés disso, nós temos garantia que a planilha será calculada em uma ordem que respeite suas dependências.
  • nós não dizemos à planilha como alocar sua memória - melhor, esperamos apresentar-nos com um plano aparentemente infinito de células, e alocar na memória somente as células que estão realmente em uso.
  • na maioria das vezes, avaliamos o valor das células por uma "expressão" (cujas partes podem ser avaliadas em qualquer ordem), melhor que por uma "seqüência de comandos" que compute seu valor.

Uma conseqüência interessante de não especificar a ordem do recálculo, é que a noção de atribuição não é muito útil. Apesar de tudo, se você não souber exatamente quando uma atribuição acontece, você não pode fazer muito uso dela! Isto contrasta fortemente com programas nas línguagens convencionais como C, que consistem essencialmente de uma seqüência especificada cuidadosamente de atribuições, ou de Java, em que a requisição do método é crucial ao funcionamento de um programa.

Este foco em alto nível "o quê" é melhor que o baixo nível "como" é a característica que distingue as linguagens de programação funcionais.