É recomendável programar aplicativos .net com C ++

9

Pelo que entendi, C # é a linguagem padrão ao codificar aplicativos .NET. É recomendável programar aplicativos .NET [que sejam ASP.NET, WinPhone 7, GUI etc.] em C ++? Quais são as armadilhas e os inconvenientes se escolhermos seguir esse caminho?

Obrigado por compartilhar.

Joshua Partogi
fonte
3
O C ++ / CLI é diferente do restante das linguagens .NET, pois produz assemblies de modo misto (o que restringe severamente seus possíveis usos). É uma boa idéia usar apenas linguagens compatíveis com CLI, a menos que você realmente queira ter uma interoperabilidade complicada com uma base de código C ++ não gerenciada.
SK-lógica

Respostas:

16

Como programador de longa data que usou C ++ até que eu mudei para C # / .net, meu conselho é não usar C ++ para desenvolvimento em .Net. Na verdade, você não pode usar C ++ real para programar em .Net, mas uma abominação da Microsoft chamada C ++ / CLI com uma feiura não encontrada no ISO C ++. Eu diria que apenas do ponto de vista da legibilidade, C ++ / CLI não deve ser considerado. Você deseja usar _gc, gcnew etc.
Também para fins práticos, você não encontrará muitos exemplos de código, tutorial, blogs etc. usando C ++ / CLI, nem encontrará programadores que sabem ou estão dispostos a trabalhar em C ++ / CLI. Não é uma linguagem natural para o desenvolvimento .Net. O C # / VB.Net / F # continuará mudando muito mais rapidamente com os novos recursos em comparação com o C ++ / CLI.

softveda
fonte
O C ++ com classes gerenciadas era patético, mas o C ++ / CLI é muito melhor. Eu não comprei a parte "linguagem natural" porque realmente não é tão difícil para um programador de C ++ aprender C ++ / CLI. Pelo menos não foi para mim. A menos que você seja fortemente dependente de amostras de código para codificação. E a Microsoft nunca quis que o padrão C ++ / CLI fosse um concorrente do novo padrão C ++ 0x. Eles são feitos para duas coisas diferentes. Dado que o C ++ / CLI existe há 3-4 anos e o novo padrão ISO está pronto para lançamento agora, acho que era uma coisa razoável para a MS fazer.
DPD
2
C ++ / CLI serve bem a seu propósito. Ele foi projetado para pequenas camadas de interoperabilidade entre os mundos gerenciado e não gerenciado. Não é aconselhável usá-lo para nada além disso.
SK-lógica
Bem, atualmente estou usando para um novo projeto. Não é para interoperabilidade, para não quebrar bibliotecas nativas, do zero. O único problema que tive foi o tempo inicial necessário para me familiarizar com a sintaxe C ++ / CLI e a estrutura Dot Net, que acredito, foi muito menos do que o tempo necessário para me familiarizar com o C #. Bem todo mundo tem his.her própria experiência assim cada um na sua :-)
DPD
2
@DPD - Não vejo um tipo de projeto C ++ / CLI para ASP.NET (MVC), LINQ, EF, ODATA etc. no Visual Studio 2010. Portanto, mesmo que seja possível fazer o acima, seria difícil sem ferramentas suporte, falta de documentação etc. Por isso, mantenho minha opinião de que o C ++ / CLI não é um cidadão de primeira classe no mundo .Net.
softveda
12

A própria idéia do .Net é que você pode usar qualquer idioma com o qual já se sinta confortável e usar a plataforma DotNet sem precisar aprender um novo idioma novamente. Uma maneira de encará-lo é como uma inversão da pirâmide Java. Java pode ser explicado como "único idioma - único executável (IL) - muitos SO". dot net é "muitos idiomas - um executável - um SO" (é claro que o bit de um SO está incorreto, pois temos o Mono, mas acho que não era isso que a Microsoft tinha em mente :-P).

Sim, o C # deveria ser o idioma para o DotNet, mas não "o único". A Microsoft provavelmente esperava que os programadores de C ++ migrassem para C # a longo prazo, se não imediatamente. Mas isso não parece estar acontecendo. C ++ ainda é a terceira linguagem mais popular. A familiaridade com uma linguagem e o esforço necessário para portar uma aplicação de C ++ para C # deixou a maioria dos desenvolvedores relutantes. Afinal, por que consertar algo que não está quebrado? É por isso que a Microsoft criou C ++ / CLI. É uma maneira maravilhosa de colocar os programadores de C ++ no vagão DotNet sem precisar aprender um novo idioma. Levei muito pouco tempo para me acostumar com C ++ / CLI. A única desvantagem que vi foi a nova notação de ponteiro para classes gerenciadas pode confundir aqueles que têm um entendimento fraco dos ponteiros em C ++. Não me afetou.

DPD
fonte
2
A principal desvantagem do C ++ / CLI é que ele difere consideravelmente do C ++ padrão, pois algumas construções do C ++ simplesmente não são transferidas para a CLI. A SK-logic também afirma que não funciona perfeitamente com o .NET, então sugiro evitá-lo.
21711 David Thornley
9

Não vejo qual é o benefício. O principal benefício do C ++ é um código nativo, crítico de desempenho, de baixo nível e independente. Depois de usar um ambiente gerenciado e toda a bagagem que traz, não vejo por que você não deseja uma linguagem mais moderna projetada para ambientes gerenciados.

dsimcha
fonte