Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

    
            
  •             ¿Hay alguna ventaja de usar ¿C ++ / CLI sobre C ++ estándar o C #?                                      4 respuestas                          
  •     
    

He estado trabajando como programador nativo de C ++ durante los últimos años. Ahora estamos empezando un nuevo proyecto desde cero. Entonces, ¿cuál es su opinión sobre cambiar a C ++ \ CLI a costa de perder el código independiente de la plataforma? ¿Existen ventajas especiales que se puedan obtener al cambiar a C ++ \ CLI?

¿Fue útil?

Solución

Recomendaría lo siguiente, según mi experiencia con C ++, C # y .NET:

  • Si quieres ir por el camino de .NET, usa C #.
  • Si no desea .NET, use C ++ tradicional.
  • Si tiene que salvar C ++ tradicional con código .NET, use C ++ / CLI. Funciona tanto con .NET llamando a clases de C ++ como con C ++ llamando a clases de .NET.

No veo que tenga sentido ir solo a C ++ / CLI si no lo necesita.

Otros consejos

Algunas preguntas a considerar antes de cambiar:

[1] ¿Estás bien con quedarte en Windows? Hay clones .NET para otros sistemas operativos, pero su aplicación no se ejecutará de forma transparente. Una complejidad que quizás no necesites.

[2] ¿Está considerando cambiar solo por el soporte de recolección de basura? Si es así, solo puede usar algunas bibliotecas del recolector de basura C ++. Y si descubre cómo aprovechar std :: shared_ptr, es posible que no sienta la necesidad de los recolectores de basura. Una sobrecarga que podría no necesitar.

[3] ¿Está considerando C ++ / CLI debido a la recolección de basura & amp; ¿Todas las clases útiles de .NET que puedes aprovechar? Si es así, ¿por qué no simplemente cambiar a c #. C ++ / CLI es una tecnología de transición, y es mejor no invertir recursos en tales cosas. c # se está volviendo bastante maduro y utilizable.

Personalmente, me quedaría con C ++;).

¿Hay algún beneficio para usted? Es probable que pierda la capacidad de cambiar a otro sistema operativo.

no te molestes a menos que estés integrando con aplicaciones .NET. Ciertamente, no utilice STL / CLR ya que su rendimiento es realmente horrible.

Es tentador cambiar ese conmutador para usar las bibliotecas de clase .NET, pero hay alternativas. Si hace esto, no podrá portar su código tan fácilmente.

También parece que el aumento de OSS está aumentando, por lo que ahora podría ser el momento de investigar utilizando bibliotecas y herramientas multiplataforma. Puede implementar una aplicación de Linux mucho más fácilmente que una de Windows (¡mediante el envío de un sistema operativo totalmente configurado!), Y obtendrá un ROI mucho mejor si implementa clientes de Linux (ya que son gratuitos).

Si fuera un hombre de negocios, buscaría tener al menos la capacidad de implementación en Linux o Mac que solo en Windows. Estratégicamente, no quisiera apostar a que el mundo se quedó con Microsoft dentro de 5 años.

La principal ventaja que obtendría al cambiarse a C ++ / CLI es que puede acceder a las bibliotecas .NET y al propio marco (recolección de basura, etc.). Sin embargo, por lo que puedo decir, la razón principal por la que C ++ / CLI existe es para facilitar la transferencia del código C ++ existente para que se ejecute en el marco .NET. Se alienta a los nuevos proyectos a usar C #.

Si necesita usar el código existente de C ++ mezclado con el marco .NET, entonces tendría sentido usar C ++ / CLI, pero en general debería comenzar con C #.

Si hay algo en .NET que el nuevo proyecto necesita usar extensivamente (quizás un diseño de GUI más simple o algo así), entonces use C #. Si no, entonces quédate con C ++ nativo. No creo que pierdas nada haciendo eso.

No me gusta C ++ / CLI tanto que recomiendo la dirección clara, ya que describo here . Algunos sugieren usar C ++ / CLI como puente entre C ++ estándar y C #, pero gracias a la forma en que está diseñado C ++ / CLI, es muy tedioso usarlo (debe crear manualmente envoltorios de código de C ++ normal que se puede llamar desde DO#). Por lo tanto, recomendaría SWIG en lugar de interconectar el estándar C ++ con C # (aunque, ciertamente, SWIG tiene una curva de aprendizaje sustancial ).

Eche un vistazo a esos dos artículos:

Una descripción crítica de C ++ / CLI, Parte I

Una descripción crítica de C ++ / CLI, Parte II

  

Creo que a estas alturas ya estás   convencido como estoy de que C ++ / CLI es   ni un conjunto de extensiones a C ++ "   (En muchos aspectos es en realidad un   subconjunto de C ++), ni está relacionado con   C ++ más que cualquier otro idioma con   punto y coma y llaves.   Además, C ++ / CLI es definitivamente un   Lenguaje de programación orientado a Windows;   Definitivamente no es un lenguaje que un   Servidor Solaris 10 o un móvil Nokia   El teléfono estará feliz de correr. Que hace   ¿Tiene algo que ver con C ++?

Una de las principales desventajas de usar C ++ / CLR es la posibilidad de perder su IP (propiedad intelectual) si el código no se oculta de manera suficiente. En general estoy de acuerdo con las declaraciones hechas por otros miembros aquí. Si desea un código portátil independiente de MS .net vm, entonces C / C ++ nativo es el camino a seguir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top