c# - microsoft - visual studio installer
C++/CLI: ¿por qué debería usarlo? (8)
De hecho, está pensado principalmente como lenguaje intermedio para vincular fácilmente el código .net con C ++ nativo y no administrado. Hazte un favor, no lo uses si no lo necesitas. La sintaxis de C ++ / CLI es un desastre.
Con respecto a su segunda pregunta ... Creo que hoy en día C # es el idioma dominante en .net, pero no a todos les gusta su estilo y sus paradigmas. La arquitectura de .net facilita la adición de nuevos lenguajes (consulte F #, que apunta a la programación funcional).
Estoy bastante familiarizado con C ++, por lo que consideré aprender .NET y todos sus derivados (especialmente C #).
En el camino me topé con C ++ / CLI, y quiero saber si hay algún uso específico para ese idioma. ¿Se supone que es un lenguaje intermedio para transformar de C ++ nativo a C #?
Otra pregunta que me vino a la cabeza es ¿por qué todavía hay tantos lenguajes de programación en el marco .NET? (VB, C ++ / CLI, C # ...)
He usado C ++ / CLI para crear API de .NET para algunas bibliotecas no administradas de C ++. Pasar y ordenar los parámetros requiere cierto tiempo para acostumbrarse (dependiendo de los tipos usados), pero una vez que lo dominas, es realmente una buena manera de cerrar la brecha entre el mundo administrado y el no administrado.
Microsoft ha cambiado su postura sobre esto unas cuantas veces. Originalmente fue pensado como un lenguaje completo, esencialmente algo que querían que todos los desarrolladores nativos se mudaran, abandonando C ++ nativo tanto como sea posible.
Hace unos años, se dieron cuenta de que esto no era lo que sus clientes querían. Los desarrolladores que se están moviendo a .NET de todos modos generalmente saltan a un lenguaje como C #, y el resto tiene razones para mantener su código en el mundo nativo, por lo que se quedan con C ++.
Así que ahora, Microsoft pretende que C ++ / CLI sea un "puente" entre el código C ++ nativo y el código administrado escrito en algún lenguaje .NET. Ya no es un idioma al que te recomiendan cambiar tu código base completo.
No he mirado a C ++ / CLI, pero utiliza el mundo .NET. Piense en ello como en un punto intermedio entre C ++ y C #, donde tiene lo mejor de ambos mundos. Podría ser útil en situaciones en las que desee utilizar C ++ que pueda acceder fácilmente a los objetos .NET y su BCL central. Eche un vistazo aquí a este article describe los cebadores de C ++ / CLI. Desafortunadamente, no he oído hablar de una aplicación Managed C ++ ya que ha confundido a muchos amigos de C ++ en el lado de la sintaxis y ha perdido la reunión de seguidores que regresaron al mundo no administrado de C ++.
Espero que esto ayude, Saludos cordiales, Tom.
Primero C # no es un ''derivado'' de .NET. .NET no es un idioma, es un marco de aplicación y una biblioteca de clases basada en el CLR, para el cual existen varios idiomas.
Dicho esto, la razón más convincente para usar .NET es que es una biblioteca de clases bien diseñada y una forma mucho más fácil de desarrollar para Windows que Win32 o MFC. Sin embargo, personalmente decidí que preferiría aprender un nuevo idioma por completo que aprender extensiones a uno antiguo, y como C # fue diseñado desde cero para trabajar con .NET, sugiero que es el idioma de elección para .NET.
C ++ / CLI es útil si desea usar .NET con un código heredado, y lo he usado para crear las GUI de Windows Forms y pegarlas al código de la aplicación existente. Su otra razón de ser es que es el único lenguaje .NET que admite código administrado y nativo mixto en un solo módulo de carga, por lo que es bueno tanto para el rendimiento como para la reutilización del código heredado.
Con respecto a la cantidad de idiomas, Microsoft desea que cada aplicación de Windows esté basada en .NET porque es mejor para la seguridad y la estabilidad de su sistema operativo. La única forma en que sucederá es admitiendo múltiples idiomas. Piense en .NET como una plataforma de aplicaciones o API de sistema operativo, y entonces la pregunta tiene menos sentido; Habrá muchos idiomas para .NET por la misma razón, ya que hay muchos idiomas para cualquier plataforma. Esas razones son muchas, incluidas las ventajas comerciales, el ajuste de la aplicación, la política, el apoyo a los desarrolladores existentes, la elección y, sin duda, más.
Sí, C ++ / CLI tiene un uso objetivo muy específico, el lenguaje (y su compilador, sobre todo) hace que sea muy fácil escribir código que necesita interoperar con código no administrado. Tiene soporte incorporado para calcular el cálculo entre los tipos administrados y no administrados. Antes se llamaba IJW (Simplemente funciona), hoy en día se llama Interoperabilidad C ++. Otros lenguajes necesitan usar el ordenador de invocación P / Invoke que puede ser ineficiente y tiene capacidades limitadas en comparación con lo que C ++ / CLI puede hacer.
Si necesita interoperar con C ++ nativo, las clases que tienen funciones de instancia y necesitan las palabras clave nuevas y eliminadas para crear / destruir una instancia de la clase, entonces no tiene más remedio que usar C ++ / CLI. Pinvoke no puede hacer eso, solo el compilador de C ++ sabe cuánta memoria debe asignar y cómo corregir correctamente el puntero de this
para una función de instancia.
El marco .NET contiene código escrito en C ++ / CLI, especialmente en System.Data y PresentationCore de WPF. Si no tiene necesidades de interoperabilidad no gestionadas o no tiene que trabajar con una base de código heredada, hay algunas razones para seleccionar C ++ / CLI. C # o VB.NET son las mejores opciones. El conjunto de funciones de C ++ / CLI se congeló alrededor de 2005, no tiene soporte para adiciones más recientes como lambdas o la sintaxis de Linq. Tampoco el IDE es compatible con muchas de las alarmas disponibles en los IDE de C # y VB.NET. Es notable que VS2010 se enviará inicialmente sin el soporte de IntelliSense para C ++ / CLI. Un poco de un beso de muerte allí.
ACTUALIZACIÓN: revivido en VS2012, el soporte de IntelliSense está de vuelta. No en absoluto gracias a C ++ / CX, una extensión de lenguaje que simplifica la escritura de aplicaciones WinRT en C ++. Su sintaxis es muy similar a C ++ / CLI. Se eliminaron las plantillas de proyecto de Windows Forms, pero el diseñador aún funciona. El nuevo motor de depuración en VS2012 no es compatible con C ++ / CLI, debe activar la opción "Modo de compatibilidad administrada" en Herramientas + Opciones, Depuración, General.
Solo para que sepas. A menos que especifique el código que se compilará como no administrado, cuando compile con soporte CLR, se compilará como código administrado.
Mientras que CLI C ++ es agradable. Me cuesta mucho codificar. Hay algo al respecto que hace que no quiera programar en él. Ni siquiera es el "^". Es como usar una .net rota. Pasé 40 minutos codificando algo completamente administrado en él que me llevó 10 minutos en C #. Quiero decir, a veces simplemente me doy por vencido y uso C # porque me frustra cuando lo codifico. Quiero decir que si va a usar .net, también puede usar C # (sobre CLI C ++).
para mí, tengo que usarlo cuando no hay otra forma de reutilizar la clase c ++