Já sei o que você está pensando. 4.0? É. 4.0.
– Mas eu nem me acostumei com o 3.0 ainda!
Paciência. Mas também não é pra já. A Microsoft fala 2010, mas acho que até Dezembro do ano que vem eles liberam, no finalzinho do ano, como fizeram com o 2008, que na verdade saiu em Novembro de 2007.

Eu não tinha visto direito, mas a máquina virtual com o CTP do Visual Studio 2010 (falei dela aqui) já vem também com o C# 4.0 e o VB X. Pra que… Já estou olhando e estou gostando do que estou vendo. Começa aqui então uma série sobre novidades no C# 4.0. São 4 as grandes novidades do C# 4.0:

  1. Tornar o C# uma linguagem com capacidades de uma linguagem dinâmica;
  2. Trazer variância ao C#, tanto contravariância quanto covariância.
  3. Argumentos opcionais e argumentos nomeados em funções;
  4. Novidades na interação com o COM (incluindo parte das novidades do dinamismo do ponto 1);

Eu gostei muito das novidades, em especial as duas primeiras. A primeira vai deixar o C# muito parecido com o VB, que sempre permitiu late binding, mas ela é mais do que isso. A segunda é sensacional, porque esse lance de o C# ser invariante já me incomodou muito (mais info sobre variância e porque isso é um problema aqui). A solução dada para a variância é muito elegante.

Outra coisa interessante é que finalmente a Microsoft parou com esse negócio de trazer uma feature para o VB e não trazer a mesma feature para o C# e vice-versa. Agora, segundo Anders Hejlsberg, o principal criador do C#, as duas linguagens vão evoluir em paralelo, e o que for adicionado à uma, provavelmente vai ser adicionado à outra. (Será que o VB vai permitir finalmente chamadas unsafe?) Isso significa algo que já venho dizendo a muito tempo: VB e C# são dialetos de uma mesma lingua. Se você quer ver uma linguagem realmente diferente vai dar uma olhada IronRuby ou F#.

Já estudei todos os pontos, mas quero apresentá-los com calma, então no próximo post inicio provavelmente falando de variância, que é um tema que gosto muito. Muito legal também o compilador dinâmico de C# apresentado pelo Anders Hejlsberg em uma palestra no PDC 2008, em que ele demonstra um novo compilador feito em C# (o atual é feito em C++), e o utiliza para compilar código sob demanda. Na boa, o público veio abaixo na hora em que ele fez a demo, muito legal. Só para vocês terem uma idéia das possibilidades, vejam um código simples;

CSharpEvaluator ev = new CSharpEvaluator();
ev.Usings.Add("System");
ev.Eval("for (int i = 0; i < 10; i++) Console.WriteLine(i * i)");

Explicando:

É uma aplicação console. Na linha 1 é criada uma instância do compilador, que é representado por uma classe, como qualquer outra. Na linha 2 ele adiciona uma declaração de using. Na linha 3 ele manda o compilador avaliar uma string, que executa, e, acreditem, escreve na console. Esse é um exemplo simples, o cara cria logo em seguida, com poucas linhas de código, um avaliador direto via console, que avalia o que o usuário escreve e executa, como se fosse um command prompt de C#. Ele chega a criar um form, adicionar um botão, e adicionar o endereçador do botão ao ser clicado, e exibir um Hello World no clique. Lindo lindo lindo. Mas esse não sai tão cedo. Vejam esse trabalho com imagens que tirei do vídeo, com o tal command prompt de C# que ele fez na hora:

Executando uma conta de seno, e um for loop sob demanda:

Executando uma conta de seno, e um for loop sob demanda

Aqui ele declara uma função sob demanda, e chama ela em seguida:

Aqui ele declara uma função sob demanda, e chama ela em seguida

Aqui ele cria um form, coloca uma imagem e um botão:

Aqui ele cria um form, coloca uma imagem e um botão

E por fim ele adiciona um event handler e clica, mostrando o resultado na janela.

E por fim ele adiciona um event handler e clica, mostrando o resultado na janela

Lembrando que isso tudo foi feito a partir de strings, compiladas sob demanda. Muito legal!

Só ficou faltando um toque de Spec#. Será que não vamos ganhar esse brinquedo, nem como opcional?

Mais info sobre tudo isso no blog do Charlie Calvert, neste documento oficial do Word sobre novidades do C#, no video do Anders Hejlsberg do PDC 2008, em dois vídeos (aqui e aqui) com o time do C#, na página do Codeplex sobre futuro do C#, ou aqui, em breve, e em português 🙂 A VM com Visual Studio 2010 e C# 4.0 você baixa aqui (ela tem 8GB de download compactado, e mais de 20GB descompactado).

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.