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:
- Tornar o C# uma linguagem com capacidades de uma linguagem dinâmica;
- Trazer variância ao C#, tanto contravariância quanto covariância.
- Argumentos opcionais e argumentos nomeados em funções;
- 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:
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:
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).
Postado na(s) categoria(s)
.Net
pelo
giovanni bassi em 7 de novembro de 2008 às 01:08
| Tags:
c#4,
vbx
bd83a690-c7ab-4315-9c9a-f9290e5a43cf|0|.0