segunda-feira, 16 de junho de 2008

Mudança de paradigmas

Desde que o Roberto me apresentou ao concurso de programação que acompanha a ICFP (International Conference on Functional Programming), venho me sentindo tentado a participar. O problema é que se trata de uma maratona de 48 a 72 horas, onde as equipes tem que executar uma tarefa, que tipicamente é resolvida utilizando os paradigmas de programação funcional. A palavra chave aqui é equipe. Devo admitir que as tarefas são bastante complexas, e a equipe de um homem só não dá conta. Além disso, é muito, muito difícil encontrar quem entenda de programação funcional.

Eu mesmo não conhecia esse conceito: a idéia é descrever o programa utilizando apenas funções e funcionais. Existem poucas linguagens para programação funcional, todas derivadas do lendário LISP, e da ML (meta-language). As mais conhecidas são o Haskell, o OCaml e o Erlang.

Em programação funcional, bugs podem ser evitados, não por métodos de teste ou depuração, mas por ser possível demonstrar os algoritmos usando uma álgebra especial, o cálculo lambda. Aliás, diversos nomes na programação funcional são de matemáticos do cálculo lambda, como Haskell Curry e Alonzo Church.

A mudança de paradigma é enorme! Estou pensando até em escrever algumas notas sobre programação funcional, mas acho que o formato de Wiki é mais apropriado. De qualquer forma, para quem quiser conhecer um pouco mais, indico o artigo do John Backus (o mesmo do Fortran), que explica qual a importância da mudança de paradigma, e apresenta uma linguagem conceitual, o FP. É um artigo árido, com uma notação matemática pesada, mas cuja leitura é importantíssima para conhecer o conceito.

Em tempo: brinquei um pouco com a biblioteca Clam, que citei em um post anterior, mas no Windows ela deu uma série de crashes de alocação de memória. Depois vou tentar de novo no Linux, ou usando o fonte, para depurar.

2 comentários:

Roberto disse...

Fala, seu geek sumido! :D

Pois é, continua brincando com programação funcional de vez em quando. Na verdade, talvez tenha que mexer com Erlang pra um projeto específico, o que parece uma perspectiva bem interessante; afinal, gosto de vários conceitos do Erlang, e até da sintaxe.

Claro que, em termos de linguagem funcional, minha primeira opção ainda é o OCaml... mas considerando que tenho mexido 99% do tempo com C++, Python e Lua, acho que minhas "brincadeiras" vão ter que esperar um pouco.

Parabéns pelo novo blog, e sucesso! Grande abraço!

Rafael Gustavo disse...

Erlang possui uma biblioteca interessante e bem completa, mas meus olhos estão voltados para o Haskell, no momento.

O OCaml é legal, e os resultados obtidos nos últimos ICFP-PCs não deixam dúvidas do poderio da linguagem, mas acho que os mônades do Haskell são uma alternativa muito mais elegante ao problema do IO e dos estados do que embutir um conjunto de instruções imperativas na linguagem.

Obrigado por ser o primeiro a comentar!

Postagens populares