Los debates sobre el estado actual de C ++ en el mundo de la programación se dividen en dos campos: a algunos no les gusta C ++ y predicen su muerte está próxima, mientras que otros creen que se mantendrá como lo ha hecho anteriormente. Yo diría que la verdad se encuentra en un intermedio, pero eso significa que el estado de C++ es un poco incierto, como lo fue entre las versiones de C++ 03 y C++ 11. Tampoco es así, creo yo. ¿En qué situación se encuentra entonces? Vamos a tratar de resolver esto.
¿Es el principio del fin?
Nada de eso. C++ no es tan popular como lo son C# y Java entre los programadores novatos y los gigantes de la industria no liberan tecnologías específicas con el nuevo C++, ni es promovido por Microsoft y Oracle. Pero interpretar esto como el final de C ++ es totalmente falso. El software basado en C++ se sigue utilizando y necesita apoyo. La mayoría del nuevo software, como los motores de juegos están construidos con C++. C++ 11 y C++ 14, así como C++ 17 que está a punto de lanzarse, demuestran hay algo en C++ que lo está haciendo bien. Pero antes que nada, empecemos por el principio.
C ++ 11, C ++ 14, C ++ 17 ...
Como he mencionado anteriormente, C ++ se encontraba en una condición algo "incierta" entre los lanzamientos de C++03 y C++ 11. librerías obsoletas como boost, Qt, etc. Estaban desarrollando y mejorando una nueva librería de C++/CLI que fue lanzada, mientras que todavía no había señales del nuevo estándar.
Las cosas siguieron así durante mucho tiempo. Al final, el nuevo estándar C++ 11 fue lanzado en 2011 en lugar de en 2009 tal y como se había planeado. Este nuevo estándar trajo muchas mejoras, extensiones y demás beneficios.
El lenguaje era más sencillo de codificar; la librería estándar se amplió con muchas nuevas funciones que hacían que el proceso de programación fuese más fácil. Se introdujeron un montón de nuevas características: soporte oficial para programación paralela, listas de inicialización para hacer que el código sea más claro, funciones lambda, y muchas más. Pero no hay necesidad de discutir todo esto aquí por aquí, porque este artículo no trata de eso.
OK, ya tenemos el estándar C++ 11, eso es genial. Pero, ¿y ahora qué? ¿Otro estancamiento durante otros 8 años? Ni hablar. No es ningún secreto que C++ 14 ha sido liberado. Es difícil comparar entre las innovaciones de C++ 11 y de C ++ 14, pero aún así ha traído algunas mejoras.
Es muy importante que esta tendencia se mantenga. Incluso existen algunas líneas generales del nuevo estándar C++ 17.
Por supuesto, pasará un largo tiempo antes de que los programadores entiendan plenamente todos los beneficios de los nuevos estándar y aprendan a utilizar sus innovaciones correctamente. Sin embargo, estas innovaciones, de seguro, tendrán un efecto positivo en la calidad del código y, por ende, del software.
Y ¿qué pasa con el software existente?
Hay una gran cantidad de software desarrollado en C++. Como es lógico, debemos que apoyarlo. ¿Quieres ver ejemplos en la vida real? Por favor, revise esta lista. Seguro que encuentras productos que conoces. No creo que nadie se tome la molestia de volver a escribir todo el código existente de C++ en C# o en Java sólo porque sea más fácil trabajar con él en un futuro.
Teniendo en cuenta que C++ se ha transformado para que sea más fácil trabajar con él, la idea de usarlo para desarrollar módulos o aplicaciones no suena tan loco. Será mucho más fácil de soportar dicho código pasado un tiempo. El rendimiento de C++, aparte de seguir siendo como era antes, se ha mejorado mediante la inserción una gran variedad de nuevas características. La librería estándar extendido también nos proporciona la oportunidad de utilizar soluciones prefabricadas en lugar de crearlas de nuevo.
Popularidad entre los principiantes
Todo programador sabe que C++ es difícil. Sí, es gigantesco y tiene un montón de peculiaridades. Pero ¿qué obtenemos a cambio? Alto rendimiento + control absoluto sobre todos los procesos Una vez más, no podemos dejar de mencionar el estándar de C++ 11 con su sencilla sintaxis, algoritmos, y demás características útiles diseñadas para hacer que la vida y el trabajo de los programadores sea menos estresante.
Pocas salidas
No es un secreto para nadie que C# y Java son promovidos salvajemente por Microsoft y Oracle. Con Java no lo tengo tan claro, porque no entiendo mucho de las tendencias actuales de por esos lares, pero la promoción por parte de Microsoft es evidente. La mayoría de las innovaciones de Microsoft están diseñadas específicamente en C# y sus hackathons utilizan C# también. No estoy diciendo que sea malo, sólo recalco el hecho.
C++ no cuenta con soporte de esas magnitudes. Por suerte, hay una gran variedad de herramientas lanzadas específicamente para hacer que el ritmo de trabajo y el proceso de desarrollo sea más sencillo. Entre ellas, cabe destacar Qt y ReSharper C++ publicadas recientemente por JetBrains. Visual Studio 2015 ofrece ahora soporte para algunas de las innovaciones de los últimos estándares más algunas nuevas características adicionales que han hecho que el ritmo de trabajo sea más ágil.
Sin embargo, no se puede comparar con la promoción de C# y Java ni de lejos.
Especialización
A pesar del hecho de que C ++ es un lenguaje muy rico y flexible, su ámbito de uso es bastante limitado. Sus competidores contribuyen a esto. Tal vez lo veamos más claro con un ejemplo en la vida real, el desarrollo de software para móviles. Las principales plataformas ya están ocupadas por lenguajes específicos: Windows Phone por C#, Java por Android, iOS por Objective-C. Tal vez hayas pensado que en plataformas móviles no se pueda utilizar C++. Estás equivocado. La pregunta es si es eficiente y producente programar en C++ para esas plataformas.
Tampoco C++ es muy adecuado para el desarrollo web, el cual se está haciendo más y más popular cada año. Sí, hay medios para trabajar con sockets y librerías como Wt. Pero, ¿has oído hablar mucho de aplicaciones web desarrolladas en C ++? Yo tampoco. Teniendo en cuenta que el desarrollo de software para móviles y la web se han convertido en un campo muy popular últimamente, no es de extrañar que los programadores novatos prefieran aprender otros lenguajes.
Su posición en el mundo
Pero todo esto sólo son palabras, y, como dice el refrán, una imagen vale más que mil palabras. Vamos a echar un vistazo a su situación actual y para ello hay que mirar el TIOBE.
Como puedes ver, C++ está en tercer lugar en la actualidad, una posición mejor que la del año pasado. Además, es uno de los dos lenguajes entre las cinco primeros cuya calificación ha aumentado, aunque ligeramente.
Por último...
Personalmente creo que decir que C++ lo está haciendo mejor que nunca, sería una mentira. Pero si hablamos de mentira, una mucho más gorda es decir que se está muriendo.
C ++ está vivo y ocupando su propio nicho.
Los nuevos estándares introducen innovaciones que hacen que el idioma sea más sencillo y "fácil de utilizar". El software desarrollado con esta lenguaje todavía sigue en uso y necesita apoyo. C++ es totalmente válido para el desarrollo de software en determinados campos, y, junto con todo lo dicho anteriormente, significa que C++ sigue siendo necesario. Resumiendo, siempre seguirá ahí.