Ventajas de C++ respecto a C#
- puedes generar código más rápido
- Generas código nativo, por lo que no necesitas instalar una máquina virtual como en C# para que tu programa funcione
- Es muy versátil
- Es muy potente
- Hay compiladores para prácticamente cualquier arquitectura hardware
- Como controlas todo a bajo nivel, puede funcionar bastante bien con pocos recursos
Ventajas de C# respecto a C#
- El desarrollo de aplicaciones es muchísmo más rápido
- La librería estándar es mucho más amplia
- Es más sencillo de aprender
- Te puedes despreocupar de detalles de bajo nivel, como la gestión de la memoria.
- Es muy versátil, aunque menos que C++
- Puede ser muy potente, aunque algo menos que C++
- No necesitas librerías adicionales para programar aplicaciones de escritorio o entornos web.
C++ es muy complicado de aprender... su dominio es algo que lleva varios años de trabajo, pero es una herramienta muy potente... de hecho, es muy potente porque deja todo en manos del programador... es como si para conducir un coche tuvieses que activar manualmente cada ciclo de explosión del motor mientras regulas el flujo de aceite y la entrada de aire... todo ello mientras te encargas de paso de la presión de los neumáticos, de la estabilidad y del sistema aerodinámico... y, por supuesto, manejando el volante, las luces, los limpias... todo a al vez!!!! eso sí, si lo consigues controlar sin matar a nadie puedes ser el más rápido del circuito.
C#, en cambio, es un lenguaje de más alto nivel. Esto quiere decir que te abstrae de ciertos elementos de bajo nivel, como la gestión de memoria. Este punto es importante porque en la inmensa mayoría de los desarrollos (por no decir la práctica totalidad) la gestión de la memoria es algo que suele dar más problemas que alegrías... dejar este punto en manos de la máquina virtual es, en la mayoría de los casos, una buena idea:
- Evitas lagunas de memoria
- Todos los objetos funcionan igual: No te encuentras con el caso de que te llega un smart pointer y tienes que enchufárselo a una función que únicamente admite punteros crudos
La inmensa mayoría de los desarrollos son mucho más baratos y perfectamente realizables en C# o Java respecto a su homólogo en C++... quizás para aplicaciones de alto rendimiento sea más aconsejable el uso de C++, pero este tipo de aplicaciones salvo que te dediques a juegos o cálculo científico...
Conocer C++ está genial porque te obliga a conocer las tripas del sistema que estás usando, y eso es vital para entender qué es lo que estás haciendo... este tipo de conceptos son igualmente importantísimos en lenguajes de más alto nivel, como C#... aunque en la mayoría de los casos no son tan vitales.
Sin embargo, el punto más importante: ¿Qué decide que una persona se decante por un lenguaje o por otro? sencillo, el dinero: La empresa en la que decidas trabajar tendrá preferencia por un lenguaje (ya sea por motivos históricos o porque es el lenguaje que mejor conoce el jefe de turno)... y tu tendrás que amoldarte a eso o buscarte otro curro... lo dicho.