Lo se lo se, pero si ya de por si es malo, imaginate si el lenguaje empeora las cosas.
Lo que quiero decir es que no me gustan esas caracteristicas que tiene porque las veo para la Ingenieria del Software como abrumadoras, ademas que C# esta cogiendo mucha fuerza, y no es de extrañar porque es un lenguaje potentisimo.
Es que volvemos a lo de antes. Empeorar las cosas es algo muy subjetivo y depende de que tanto estés acostumbrado al lenguaje y de gustos personales.
Obviamente aprender C++ no es fácil, y desarrollar con el tampoco lo es y menos aun si el proyecto es de alta complejidad, pero esto no hace que de por si uno tenga que elegir C#.
A lo que voy con esto es que no hay que elegir un lenguaje en base a su dificultad, si no al alcance que tiene en el mercado global de desarrollo y con esto evaluar que conviene respecto del área a la cual uno se quiere dedicar. Eso es lo que debería predominar para luego no llevarse sorpresas.
Por supuesto que C# tomo y sigue tomando muchísima fuerza, y se lo merece porque es una excelente plataforma, pero no es C++ y hay muchas áreas donde C++ es la mejor alternativa.
Desde complejas suites de seguridad como la de Kaspersky, hasta suites de diseño como las de Adobe, pasando por juegos como Battlefield 3. Todos están hechos en C++, utilizando herramientas, frameworks, motores, y lo que les haga falta, pero en C++ al fin y al cabo.
Lo que quiero decir, es que estamos hablando de proyectos de miles de lineas de código, y sin embargo se sigue usando. Se sigue usando porque es una de las mejores alternativas en esa área y no por capricho de las empresas.
Seria genial que exista un C+++ con la facilidad de Java y la flexibilidad de C++? seguro que si, pero es lo suficientemente difícil de realizar y de hacerse se tardarían bastantes años en lograr compiladores tan optimizados como los de C++ hoy en día.
Por eso digo, C# es genial, Java también, pero en sus áreas. En las áreas de C++ todavía no compiten, así que depende lo que uno quiera es lo que debe elegir.
Expresión totalmente correcta
. Pero, ¿por qué dices que sacrifica portabilidad? En principio, no. Lo único que tienen estos procesadores es que interpretan directamente el bytecode de Java. Pero este bytecode sigue funcionando perfectamente sobre JVM bajo otras arquitecturas (no es que se le haga ninguna modificación especial para poder ser ejecutado con un procesador Java).
Saludos
Igualmente los procesadores que ejecutan bytecode en la actualidad son meras curiosidades. No tienen aplicaciones en el mundo real mas que para ejemplificar velocidades y/o futuras aplicaciones pero hoy no encontraras una oferta laboral donde usen uno. Al evaluar Java hay que tener en mente que va a ejecutarse sobre una VM (sea cual sea la implementación de esta)
Saludos!