Saturday, October 01, 2005

This blog is not dead.

Geeks com a mesma veêmencia com que costumam desprezar a idéia de religião, adoram se engalfinhar em discussões religiosas. Lembrando torcidas de futebol (outro grande grupo de imbecís), passam horas atirando falácias e sofismas uns aos outros em defesa das cores da camisa. Entre programadores, já há alguns anos, estas camisas costumam ostentar os caracteres ".net" ou uma xícara estilizada. Apesar de evitar participar destes pissing contests, eu confesso que andei mais pro lado da xícarazinha.
A maior crítica que o pessoal de Java faz é que o Outro Lado simplesmente copiou tudo que eles criaram, polvilhou um açúcar sintático e ajambrou um GUI builder para agradar os milhões de desenhadores de janelas descerebrados. E é difícil discordar desse argumento. Era; hoje a Microsoft se prepara para lançar a terceira versão do C# e VB.net, que contêm o mais próximo de uma revolução em linguagens de programação mainstream desde que Java trouxe OO as massas (sim, estou ignorando c++).
No PDC (o JavaOne deles, para meus colegas da xicarazinha), a Microsoft divulgou uma série de features adicionadas ao C# e ao VB que culminam com o Linq, "Language Integrated Query", um mecanismo sintático e semântico que permite ao desenvolvedor escrever queries na própria linguagem de programação. Vejam estes exemplos:

Cool, huh? A query language é abstraída do modelo de dados subjacente. Como este modelo de programação escala destes pequenos exemplos para aplicações inteiras eu não sei, mas será interessante descobrir. O Linq não apareceu do nada, ele é construído em cima de uma série de funcionalidades de metaprogramação que C# e VB.net ganharam (vejam post do Ted Neward sobre isso). Falar em metaprogramação me faz lembrar das tão faladas linguagens dinâmicas; e o Sam Ruby mostra como seria a versão do exemplo do Udell na linguagem homônima. Parece razoávelmente limpo e bastante similar. Se me permitirem uma pequena digressão, só observem como ele cria elementos chamando no objeto 'xml' um método com o nome do elemento a ser criado ('xml.title', por exemplo).
Esta comparação mostra o quanto a tipagem estática torna complexa a evolução de uma linguagem (Anders Heiljsberg comenta sobre isso neste podcast); uma simples aplicação de bibliotecas comuns numa linguagem sintáticamente minimalista permite expressividade semelhante a um mecanismo que exigiu anos de pesquisa e trabalho duro.
O mercado de linguagens de programação está esquentando, muitas novidades vindo à tona e ninguém sabe dizer como estaremos programando daqui a cinco ou dez anos. Eu pessoalmente espero que a resposta a esta pergunta seja múltipla e que os paradigmas mais declarativos encontrem seu espaço em meio à uma massa de programadores mais esclarecidos (essa última parte é a menos provável, creio). No mínimo, espero que as contendas dos próximos anos evolurião além do infantil "nós temos propriedades e vocês não têem" que marcou a última década.

No comments: