Escuché sobre la popularidad moderna de C ++ y algunas conversaciones sobre la migración de regreso a C ++ desde C # u otros lenguajes similares a C.
Conozco las características de C ++ 11, pero me gustaría escuchar sus experiencias, especialmente de los desarrolladores que migraron de C # a C ++.
Más importante aún, ¿Microsoft empuja a los desarrolladores a usar C ++? ¿Si es así por qué?
Respuestas:
Sí, tus sospechas son correctas. Microsoft está presionando a C ++ para que regrese y se vuelva más popular.
No puedo encontrarlo ahora, pero hace un tiempo vi una presentación de uno de los grandes de Microsoft y todo estaba dirigido a los desarrolladores y se trataba de la implementación de Windows 8 y especialmente WinRT (el reemplazo para .NET framework también como Win32 API).
Tenía una línea de tiempo que explicaba cómo varias presiones estaban afectando qué tecnología era popular en ciertos momentos. Entonces, al principio, la gente quería velocidad, por lo que todos codificaron en C / C ++ (dos idiomas separados). A medida que el hardware se hizo más rápido, el enfoque se alejó de la velocidad de ejecución y más hacia la velocidad de desarrollo, por lo que los lenguajes de nivel superior se hicieron mucho más populares.
Sin embargo, ahora el enfoque se está volviendo más hacia las computadoras móviles y basadas en ARM (Windows 8 es la primera versión de Windows compilada para ARM) y muchos creen que se volverán mucho más populares y que algunos reemplazarán por completo el escritorio. Entonces, el enfoque (al menos en los ojos de Microsoft) está de vuelta en C ++ porque ahora nos importa la duración de la batería. Código de nivel superior = más instrucciones = se requiere más jugo.
Para respaldar esta transición de regreso a C ++, han introducido una API de programación de Windows 8 completamente nueva, llamada WinRT (la última vez que lo comprobé, ese era el nombre de todos modos). Esta API sigue el tema de .NET Framework en el alcance de la funcionalidad que proporciona, pero estará disponible para cualquier persona que codifique en C ++ (a través de interfaces COM), en C # o incluso en Javascript para aquellos que deseen escribir aplicaciones HTML 5 / Javascript. También están trayendo XAML (tecnología utilizada en WPF, su nuevo marco UI) para estar disponible también en C ++.
Entonces, para mí, eso indica que definitivamente hay más enfoque en C ++ en Microsoft que en el pasado.
ACTUALIZACIÓN # 1:
Dado que acabo de recibir una insignia de 'buena respuesta' para esto, pensé que tal vez debería volver y a) aclarar algunas cosas yb) hacer feliz a la policía de verificación de hechos porque, como todos sabemos en foros de tecnología, cualquier cosa inexacta podría dar lugar a guerras que duran años
WinRT no es un reemplazo para .NET Framework, pero es otra alternativa que los desarrolladores de MS Windows ahora tienen y MS está presionando fuertemente a las personas para que vayan en esa dirección. Parece (mantenga sus llamas si esto no es 100% exacto) que WinRT estaba dirigido principalmente a aplicaciones modernas de interfaz de usuario, aunque las aplicaciones de escritorio normales también deberían poder aprovecharlo. Una vez dicho esto, MS está presionando fuertemente para que las personas cambien a escribir a) aplicaciones de interfaz de usuario modernas yb) comiencen a usar WinRT para que el porcentaje de cambio de equilibrio de las personas que usan .NET framework probablemente baje.
C ++ NUNCA reemplazará lenguajes de nivel superior como C # o python. Al igual que esos lenguajes NUNCA reemplazarán a C ++. Esta fue probablemente la parte más controvertida de la pregunta de OP. Pero todo se trata del equilibrio y los hechos son que:
En conclusión: Sí, MS está presionando para que C ++ regrese, por lo que lo más probable es que su popularidad aumente. No, C ++ nunca reemplazará a C #.
Actualización n. ° 2:
No sé por qué, pero la comunidad técnica tiende a ver las cosas en términos muy absolutos en blanco y negro cuando la realidad está llena de sombras grises. Esta es una respuesta a varios comentarios nuevos que se agregaron a esta publicación:
.NET Framework no desaparecerá pronto (o nunca). Casi todas las tecnologías que tenían las ventanas desde los años 90 todavía existen de alguna forma o moda. Entonces, para aquellos que están tan apegados a .NET Framework: a) no se preocupen por su desaparición yb) dejen de discutir a su favor como si su vida dependiera de ello, su API es segura.
WinRT vuelve a implementar una gran cantidad de funcionalidades que en el pasado proporcionaban las API de Win32 y .NET Framework. Las personas que desean esa funcionalidad tendrán una opción si quieren usar WinRT, .NET framework o continuar con Win32 API (eso tampoco está muerto). Si WinRT no admite la creación fácil de aplicaciones web hoy, hay una muy buena posibilidad de que las admitirá en el futuro.
La posición que Microsoft anunció es que WinRT es un gran marco que le dio a Microsoft la oportunidad de comenzar con una pizarra limpia y creó una API utilizando las lecciones aprendidas en Win32 API y .NET framework. Intenté buscar ese video, y todavía no puedo encontrarlo, pero una de las cosas que mencionó el orador es que hay ciertas áreas de .NET framework que podrían haberse definido mejor / más simple / más limpio y WinRT expone esa misma funcionalidad en esa nueva interfaz más limpia.
fuente
Full
perfil .NET y el perfil .NET 'WinRT', las principales diferencias son una gran cantidad de cosas que se implementaron mal hace 10-15 años, se eliminaron y se reemplazaron con un código mejor diseñado. Hasta que se deshagan de la biblioteca Win32 todos juntos .NET está aquí para quedarse. Su comentario muestra una falta COMPLETA y TOTAL de conocimiento con respecto al lenguaje .NET y C # en sí.No, Windows 8 se trata de usar cualquier idioma que necesite (o sepa) para hacer el trabajo. JavaScript, lenguajes .Net (C #) y C / C ++ son compatibles por igual.
Nada está siendo reemplazado y de todos modos depende de los desarrolladores al final. Sin embargo, existe un impulso para una mejor duración de la batería que WinRT hace más fácil.
La excepción son los juegos en los que C ++ obtiene más soporte, especialmente en Windows Phone 8, mientras que los lenguajes administrados no tienen soporte nativo (también conocido como no xna).
fuente
La idea de que la gente preferiría C ++ sobre C # (o prácticamente cualquier otra alternativa posterior a 1990 [no php]) para la programación de propósito general es ridícula . C ++ 11 agrega algunos bits que faltan, pero sigue clavando patas a un perro .
C ++ tiene algunos buenos nichos, y sigue siendo la mejor opción en algunas plataformas con soporte de compilador limitado. Pero no, C ++ moderno no está cerca de reemplazar nada, excepto quizás C ++ roto y anticuado.
fuente
DXM escribió:
De acuerdo con estas palabras, elegir Java como lenguaje / marco principal para el Android de Google fue un error. No era. Un lenguaje de nivel superior generalmente significa hacer las cosas más rápido y creo que esto es lo más importante para Microsoft y Google. Cuantas más y mejores aplicaciones se creen para la plataforma, mayor será la ganancia del productor del sistema operativo.
Por otro lado, todavía hay mucho software para Windows escrito en C ++, por lo que presionar a esos desarrolladores para que cambien a C # / JavaScript / cualquier otra cosa sería una locura. Microsoft se enfoca en dar la posibilidad de desarrollar aplicaciones Win8 a tantos desarrolladores como sea posible, por eso, en mi opinión, decidieron admitir C ++ y JavaScript en la pila de desarrollo Win8.
fuente
C ++ todavía tiene archivos de encabezado, preprocesadores flexibles (#define), ... cosas que algunas personas consideraron estas características 'malvadas' o 'difíciles de administrar'.
C #, por otro lado, usa metadatos, no es necesario escribir y mantener archivos de encabezado.
Acerca de Microsoft agregando más funciones a C ++: no es un asunto sorprendente.
Cada compilador de C ++ agrega más funciones, incluidas las funciones de C ++ 11. gcc es también
fuente
Podría ser solo yo, pero veo mucho más uso de C simple que C ++.
El hecho de que C ++ se haya tragado todo C hace que sea difícil inferir quién está usando qué.
Pero hay muchos más proyectos de código abierto de C que C ++.
Mi opinión es que si necesita una velocidad cercana al metal, use C. Si necesita flexibilidad y capacidad de administración con un rendimiento razonable, use C # o Java. Si desea un diseño limpio hecho rápidamente, use Python, Scala, Groovy o cualquiera de varios idiomas con todas las funciones.
fuente
C ++ no está reemplazando a C #. Veamos dónde se usa el lenguaje c ++. Se utiliza cuando es necesario un alto rendimiento, para escribir bibliotecas de middleware, acceso de bajo nivel y para escribir código para dispositivos con recursos limitados. Aunque puede usar C # para algunos de estos, C ++ es más adecuado para estos. El impulso de Microsoft para c ++ está muy relacionado con su gran impulso al espacio móvil. Nadie le pedirá que escriba su próxima aplicación web en c ++. Pero con Qt, el argumento de productividad no puede hacerse contra c ++. Pero creo que mucha gente no está familiarizada con Qt.
fuente
No, C ++ no puede reemplazar C # porque todas las aplicaciones de Windows Phone 8 que no son Direct3D deben desarrollarse con C #. No puede desarrollar y publicar aplicaciones en la tienda de aplicaciones wp8 simplemente usando C ++ o HTML5 / Javascript. Y mientras Microsoft no elimine esta restricción, C ++ no está reemplazando nada. Como resultado, estoy seguro de que muy pocas personas se desarrollarán para WP8. Pobre Nokia, perdiendo una vez más.
Aquí está el extracto del centro de desarrollo de microsoft :
aún otra:
Incluso los MVP de Microsoft afirman que este rumor es una desinformación deliberada hecha por el propio Microsoft:
Y este marketing deliberadamente equivocado desperdicia los meses de las personas :
fuente