¿Es recomendable programar aplicaciones .net con C ++

9

Por lo que puedo entender, C # es el lenguaje de facto al codificar aplicaciones .NET. ¿Es recomendable programar aplicaciones .NET [sea ASP.NET, WinPhone 7, GUI, etc.] en C ++? ¿Cuáles son los escollos y los inconvenientes si elegimos seguir este camino?

Gracias por compartir.

Joshua Partogi
fuente
3
C ++ / CLI es diferente del resto de los lenguajes .NET, ya que produce ensamblajes de modo mixto (lo que restringe severamente sus posibles usos). Es una buena idea usar únicamente lenguajes compatibles con CLI, a menos que realmente desee tener una interoperabilidad complicada con una base de código C ++ no administrada.
SK-logic

Respuestas:

16

Como programador de mucho tiempo que usó C ++ hasta que me mudé a C # /. Net, mi consejo es no usar C ++ para el desarrollo .Net. En realidad, no puede usar C ++ real para programar en .Net, pero una abominación de Microsoft llamada C ++ / CLI con una fealdad que no se encuentra en ISO C ++. Diría que desde el punto de vista de la legibilidad, C ++ / CLI no debería considerarse en absoluto. ¿Desea utilizar _gc, gcnew, etc.?
Además, para fines prácticos, no encontrará muchos ejemplos de código, tutoriales, blogs, etc. con C ++ / CLI, ni encontrará programadores que sepan o quieran trabajar en C ++ / CLI. No es un lenguaje natural para el desarrollo .Net. C # / VB.Net / F # continuará cambiando mucho más rápidamente con nuevas características en comparación con C ++ / CLI.

softveda
fuente
C ++ con clases administradas fue patético, pero C ++ / CLI es mucho mejor. No compro el bit de "lenguaje natural" porque realmente no es tan difícil para un programador de C ++ aprender C ++ / CLI. Al menos no fue para mí. No, a menos que dependa mucho de las muestras de código para la codificación. Y Microsoft nunca quiso que el estándar C ++ / CLI fuera un competidor del nuevo estándar C ++ 0x. Están destinados a dos cosas diferentes. Dado que C ++ / CLI ha existido por 3-4 años y el nuevo estándar ISO está listo para su lanzamiento ahora, creo que fue algo razonable para MS.
DPD
2
C ++ / CLI cumple bien su propósito. Está diseñado para pequeñas capas de interoperabilidad entre los mundos administrados y no administrados. No es aconsejable usarlo para nada más que eso.
SK-logic
Bueno, actualmente lo estoy usando para un nuevo proyecto. No para la interoperabilidad, no para envolver bibliotecas nativas, desde cero. El único problema que tuve fue el tiempo inicial necesario para familiarizarme con la sintaxis de C ++ / CLI y el marco Dot Net, que creo, fue mucho menos que el tiempo que tomaría familiarizarme con C # de todos modos. Bueno, todos tienen su propia experiencia, así que cada uno tiene su propia :-)
DPD
2
@DPD: no veo un tipo de proyecto C ++ / CLI para ASP.NET (MVC), LINQ, EF, ODATA, etc. en Visual Studio 2010. Por lo tanto, incluso si fuera posible hacer lo anterior, sería difícil sin herramientas soporte, falta de documentación, etc. Así que mantengo mi opinión de que C ++ / CLI no es un ciudadano de primera clase en el mundo .Net.
softveda
12

La idea misma de .Net es que puede usar cualquier idioma con el que ya se sienta cómodo y usar la plataforma DotNet sin tener que aprender un nuevo idioma nuevamente. Una forma de verlo es como una inversión de la pirámide de Java. Java puede explicarse como "lenguaje único-único ejecutable (IL) -mucho SO". dot net es "muchos lenguajes, uno ejecutable, un SO" (por supuesto, el bit de un SO es incorrecto ya que tenemos Mono, pero no creo que eso sea lo que Microsoft tenía en mente :-P).

Sí, C # estaba destinado a ser EL lenguaje para DotNet, pero no "EL ÚNICO". Microsoft probablemente esperaba lograr que los programadores de C ++ migren a C # a largo plazo, si no de inmediato. Pero eso no parece estar sucediendo. C ++ sigue siendo el tercer lenguaje más popular. La falta de similitud con un lenguaje y el esfuerzo necesario para portar una aplicación de C ++ a C # ha hecho que la mayoría de los desarrolladores sean reacios. Después de todo, ¿por qué arreglar algo que no está roto? Es por eso que Microsoft ideó C ++ / CLI. Es una forma maravillosa de obtener programadores de C ++ en el vagón DotNet sin tener que aprender un nuevo lenguaje. Me tomó muy poco tiempo acostumbrarme a C ++ / CLI. El único inconveniente que vi fue que la nueva notación de puntero para las clases administradas puede confundir a aquellos que tienen una comprensión débil de los punteros en C ++. Aunque no me afectó.

DPD
fuente
2
El principal inconveniente de C ++ / CLI es que difiere considerablemente de C ++ estándar, ya que algunas construcciones de C ++ simplemente no se transfieren a CLI en absoluto. SK-logic también afirma que no funciona a la perfección con .NET, por lo que sugiero evitarlo.
David Thornley
9

No veo cuál es el beneficio. El principal beneficio de C ++ es un código nativo, autónomo y de bajo nivel crítico para el rendimiento. Una vez que esté utilizando un entorno administrado y todo el equipaje que trae, no puedo ver por qué no querría un lenguaje más moderno diseñado para entornos administrados.

dsimcha
fuente