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.
Em todos esses anos nessa indústria vital, essa é a primeira vez que isso me acontece!
segunda-feira, 16 de junho de 2008
Assinar:
Postar comentários (Atom)
Postagens populares
-
Havia visto esse circuito há um tempo no instructables.org e fiquei curioso em entender como ele funcionava. Esse final de semana acabei mo...
-
Mônadas ( monads em inglês) são o ponto alto da programação funcional. Em Haskell, uma linguagem que se proclama puramente funcional, elas ...
-
Pois é pessoal! Ainda estou devendo a parte final do meu programa do ICFP2009. O programa ainda está muito mal estruturado, e enquanto não o...
2 comentários:
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!
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!
Postar um comentário