Rodrigo Strauss :: Blog
Parece que a certificação de Visual C++ voltou (ou quase)
O Fabio Galuppo disse no blog dele que nas novas provas para o Framework 2.0 (ainda em beta, segundo ele) vocês escolhe a linguagem de programação que será usada durante o teste. E, para meu espanto, estava lá na lista o C++/CLI. Ainda não tive notícias sobre provas do Visual C++ 2005 unmanaged - nem o pessoal da Microsoft soube responder se elas vão voltar - mas já é um grande progresso. Eu sinceramente duvido que elas voltem (ainda bem que eu já tirei a minha), mas...
Essa mudança se deve provavelmente ao fato de que o C++/CLI consegue produzir assemblies 100% gerenciados, da mesma forma que o C# e VB8. "Da mesma forma" é modo de dizer, já que o C++/CLI usa o otimizador do Visual C++, o que faz com o que os assemblies sejam melhores do que os gerados pelo C# e VB. Eu já falei sobre o otimizador do Visual C++ antes.
Ah, e só para lembrar, o Wiki C/C++ está a todo vapor, com muitas visitas e colaborações. Vamos ver se agora alguém se anima a escrever sobre C++/CLI :-)
Em 09/01/2006 14:01, por Rodrigo Strauss





1. C++/CLI além de utilizar o otimizador do VC++ ele comprovadamente gera uma IL melhor do que o C# ( http://msdn.microsoft.com/msdnmag/issues/05/01/COptimization...). Eliminando o mito que compilador .NET é tudo igual, na compilação JIT com certeza é tudo igual - mas o compilador pode ser camarada e gerar um IL otimizado.
2. Outro ponto, o VC++ juntamente com C++/CLI permite integração de código nativo e gerenciado no mesmo assembly (isto é excelente!).
3. C++/CLI possui semantica de stack para objetos .NET. Por causa disto, vc tbm não precisa se preocupar com chamada Dispose (Close) para liberar recursos gerenciados, ele é chamado quando o objeto sair do escopo.
4. Algumas construções em C++/CLI são mais simples do que em C#. Vide item 3, ex.: objetos temporários
5. Esta é para gerentes: Considerando 2 bons programadores, a quantidade de esforço para uma tarefa de programação em .NET é igual para C# e C++/CLI. Por exemplo, para criar um socket, compactar os dados com a stream GZip e enviar os dados compactados - leva o mesmo tempo de desenvolvimento nas 2 linguagens. Ou seja, todas as tarefas que envolvem as classes do .NET Framework tem o mesmo peso.
6. Indiscutivelmente, o VC++ oferece mecanismos melhores para interoperabilidade do que P/Invoke e COM Interop (apesar de suportar estes tbm, veja C++ Interop - http://msdn2.microsoft.com/en-us/library/2x8kf7zx.aspx).
7. Em breve, STL/CLI ou STL.NET ou STL para .NET :)
Abstraindo certos esteriótipos (tipo programador ineficiente), isto deixa claro a viabilidade do C++ em .NET, bem como a melhor na plataforma se comparado as outras linguagens (C#, VB.NET, Delphi.NET, Cobol.NET, ...)!