Código == Dados

Ontem fui à palestra do Andres Hejsberg sobre C# 4.0. Ele contou que o foco da próxima versão é a inclusão de mecanismos para a cooperação com linguagens dinâmicas (incluso no futuro .Net Framework 4.0). Você vai poder declarar uma variável como dynamic e, com isto, o cheque de tipos vai para o tempo de execução. Em seguida ele demonstrou um código C# chamando um código jscript do Silverlight 2.0 de forma transparente(!) para, em seguida, escrever um código C# semelhante ao mesmo jscript. Muitos aplausos. Ao final ele demonstrou uma chamada para um código IronRuby. Mais aplausos.

(um comentário: isto mostra que o futuro framework do Silverlight pode executar jscript com desempenho análogo ao do C#. hum... talvez, um dia, o jscript do ie possa usar este rumtime de alto desempenho)

Em segundo lugar ele falou de correções. A primeira foi sobre interop: nunca mais ref missing! Com os elementos das linguagens dinâmicas fica mais simples chamar o interop – menos casts, sem Value1 na api do Office, etc.

Outra correção que interessa aos arquitetos. No C# 4.0 vamos ter o cheque de co-variância e contra-variância em interfaces e delegates. Isto corrige o sistema de tipos do C# e nos deixa especificar com maior precisão e corretude a atribuição e passagem de parâmetros. Num próximo blog explico mais o que é isto.

Por fim, ele mostrou uma biblioteca que nos permite passar código como string para uma instância do compilador C# dentro do seu programa. No seu programa, você compila e executa o código na string. Isto facilita o armazenamento de regras de negócio em banco de dados quando você precisar (isto não está prometido para a versão 4.0, mas ele disse que quer lançar o mais cedo possível).

A partir deste ponto poderemos escrever a fórmula: Código == Dados para C# também.

Hoje é dia de aprontar malas e voltar. Vamos destilando e contando mais aos poucos...

Abraços