visual programacion net lenguaje historia entre diferencia descargar caracteristicas c# .net c++ unmanaged managed-code

c# - programacion - visual basic.net download



¿Qué ventajas hay para desarrollar una aplicación Win32 en C++ sobre una aplicación.NET en C#? (9)

+1 por no tener que requerir un paquete .NET / instalar en la (s) máquina (s) de destino. Esto sigue siendo un gran problema.

Cuando todas las máquinas tienen mono o NET, no será tan importante.

Aprendí la programación de Windows usando Visual C ++ y la API de Win32. Hoy en día, parece que la mayoría de las aplicaciones se están desarrollando en .NET usando C #. Entiendo que la mayoría de las veces no hay mucha diferencia de rendimiento entre el código nativo y el código administrado. Así que me pregunto, si hoy comenzara a escribir una nueva aplicación de escritorio, ¿hay alguna razón (aparte del hecho de que estoy más familiarizado con C ++), que podría querer escribirla en C ++ no administrado en su lugar? de .NET? ¿Todavía hay algunas ventajas al usar C ++ y el código nativo? ¿O ese método ha sido más o menos reemplazado por .NET en la plataforma de Windows?

Por supuesto, sé que las personas que escriben controladores de dispositivos de bajo nivel y programas similares no lo harían en .NET. Pregunto en referencia a las aplicaciones típicas orientadas al cliente que no hacen llamadas directas de hardware.


Dos cosas que puedo pensar

  1. Protección de propiedad intelectual. Es infinitamente más difícil para alguien aplicar ingeniería inversa a una aplicación C ++ no administrada. Las aplicaciones administradas .Net o Java se pueden compilar fácilmente, pero este no es el caso con C ++ no administrado.

  2. Velocidad. C ++ está más cerca del hardware y tiene una huella de memoria más pequeña que el otro comentario mencionado. Esta es la razón por la que la mayoría de los videojuegos continúan escritos en C ++ y ensamblado en línea.


Huella de memoria. Pero a menos que esté desarrollando para una máquina con discapacidad grave en cuanto a la memoria, realmente no debería ser un problema para la mayoría de las aplicaciones.


Si puede permitirse la dependencia de la pila, elija .NET Modern, elegante, potente y, como resultado, mucho más rápido de desarrollar.

Pero tenga en cuenta que encadena su aplicación a ella: al lenguaje y al marco, si prevé un futuro en el que puede querer escapar de esto, entonces, es mejor que lo piense dos veces.

Win32 es viejo y torpe, pero funciona en prácticamente cualquier versión de Windows sin dependencias adicionales, y su código puede ser simple, portátil, C / C ++.


Si su aplicación necesita poder ejecutarse sin una instalación (es decir, si no puede o no debe hacer algo como instalar .NET Framework), no puede contar con que .NET esté en una máquina de Windows (previa a Vista ) Muchas aplicaciones de utilidad pueden caer en esta categoría.


Yo recomendaría escribir todas las aplicaciones de escritorio en código administrado . .NET / C # es una gran plataforma para hacerlo.

Mis razones:

  1. La pena de rendimiento es insignificante . Google para los puntos de referencia si no tomas mi palabra. Lo que más importa es el código en sí mismo. Puede escribir algoritmos O (n ^ m) en C ++ o .NET / C #. Los motores JIT están muy maduros en estos días.
  2. C ++ no administrado tiene importantes inconvenientes cuando se trata de pruebas unitarias, burlas y refactorizaciones . Es muy engorroso e inflexible. La reflexión permite que el código administrado haga que todo esto sea muy conveniente.
  3. La implementación es un pequeño problema. Sin embargo, crear una configuración que verifique las condiciones previas de .NET necesarias y las instale automáticamente es una tarea obvia.
  4. La compilación es más rápida, ¡ no hay enlazador ! Incluso sucede en segundo plano cuando edita el código.
  5. El soporte de biblioteca .NET es mucho mejor y más limpio que STL, MFC y boost.
  6. Sin archivos de encabezado y macros Son simplemente propensos a errores.
  7. Seguridad ! Adiós desbordamientos de búfer, malos indicadores, variables no inicializadas ...
  8. Excepciones Borrar la jerarquía de excepciones en .NET. Las excepciones de C ++ están en mal estado.

  • Rendimiento (ciertas situaciones, como gráficos)
  • Huella de memoria (como dijo Mancuso)
  • Uso de bibliotecas existentes
  • No hay necesidad de un tiempo de ejecución
  • Control más preciso

Para enumerar algunos.

Sin embargo, es posible que también desee ver la pregunta desde el ángulo opuesto para evaluar de manera justa qué idioma utilizar.

Además, puede usar C ++ / CLI para incorporar código nativo y .net.


IMO, el más importante para aplicaciones pequeñas descargables es que el código nativo no necesita el tiempo de ejecución .NET. Mientras que la banda ancha se vuelve más y más común, no casi todos lo tienen todavía.

Algunas personas pueden sentirse decepcionadas al ver que su aplicación de 2 MB en realidad requiere otros 20 MB de descarga de infraestructura y un molesto proceso de instalación para ejecutar. Si no están seguros de si realmente necesitan o no su aplicación, podrían simplemente eliminarla antes de intentarlo y recurrir a un producto de la competencia.


Los programas .Net también tienen una vida útil de soporte, donde los nativos no lo hacen realmente. Native se ejecutará durante muchos años en diferentes sistemas operativos sin requerir actualizaciones.

Los programas .Net pueden ser manejados con una mala configuración de .Net, nativo simplemente sigue funcionando y apenas se ve afectado por las actualizaciones del sistema operativo.

El arranque de los programas .Net es lento y lento, el nativo comienza rápido y funciona rápido.

.Net debe codificarse para el denominador común más bajo (la mayoría de las versiones distribuidas), Native compila todo el código en la aplicación, así que use lo que desee.

Use Delphi para nativo, no C ++. .Net se basa parcialmente en Delphi RAD y Java back-end.