Renascimento?

Tenho acompanhado uma renovada animação e curiosidade com a programação funcional – o que é ótimo.

Do front da Microsoft temos a incorporação de técnicas de programação funcional tanto na nova versão do C# (3.0) quanto na do VB (9.0). E com o anúncio do F# (uma linguagem da linhagem de ML e OCaml) como uma futura linguagem incorporada no Visual Studio, este interesse parece estar aumentando ainda mais.

Mas por que este renascimento?

Um palpite:

1) os usuários pedem, cada vez mais, o poder de definir suas regras. Regras como funções que devem ser aplicadas em um contexto. Por exemplo, um filtro a ser usado numa função que percorre os elementos maiores que um valor ‘x’ em uma lista (Linq), ou um teste a ser aplicado numa máquina de estados de um workflow (WF).

2) precisamos de maior dinamismo das linguagens e ambientes para que possam receber e aplicar código em runtime (basta ver como o Ajax utiliza o JScript e o DOM para incorporar ou mudar comportamentos de uma página em tempo de execução);

Para que isto ocorra, precisamos de dois mecanismos lingüísticos:

a) funções devem se tornar entidades de primeira ordem numa linguagem. Elas viram tipos e podem ser passadas como argumentos, definir variáveis e definir novas funções;

b) funções podem ser armazenadas e ou passadas via stream (entre máquinas, processos ou funções);

Linguagens funcionais são linguagens que têm como fundamento estes dois mecanismos.

Tenho curiosidade para ver no que isto vai resultar quando chegar à massa de programadores. Meu palpite é que o efeito será mínimo: continuarão a programar como hoje, sem usar diretamente estes recursos, e sem saber que os frameworks e bibliotecas que usam são fortemente baseados nestes mecanismos.