C++ es uno de los lenguajes de programación más influyentes (quizás el que más) y ampliamente utilizados en el desarrollo de sistemas, software embebido, videojuegos y aplicaciones.
Su historia abarca décadas de evolución y, en muchos sentidos, ha sido durante mucho tiempo un referente e inspiración para todo el resto de lenguajes.
Además, de ser el objeto de este curso 😉. Así que, por culturilla general, vamos a dedicarle un momento a ver brevemente algo de su historia.
Años 80: Orígenes
C++ fue creado en 1979 por Bjarne Stroustrup en los laboratorios Bell de AT&T, con el propósito de desarrollar un lenguaje que combinara las características de bajo nivel de C con las capacidades de programación orientada a objetos.
En ese momento, el lenguaje fue bautizado como “C with Classes” (C con Clases), y su objetivo principal era mejorar la capacidad de modularidad y reusabilidad del código.
En 1983, el lenguaje cambió su nombre a C++ (haciendo referencia a la operación de incremento en C) y agregó funcionalidades como la encapsulación, herencia y polimorfismo. Conceptos esenciales en la programación orientada a objetos.
La versión comercial del lenguaje C++ se lanzó en 1985, marcando el inicio de una era en la programación (que pasa por distintas etapas, incluida conmigo escribiendo esto)
Años 90: Estándar y popularización
A lo largo de la década de 1980, C++ fue ganando popularidad, debido en buena para a su compatibilidad con C. Esto facilitaba la transición para los desarrolladores de C, y en parte porque ofrecía un modelo orientado a objetos.
Para 1990, C++ se había convertido en uno de los lenguajes más importantes en el desarrollo de software de sistemas y aplicaciones de alto rendimiento. Este crecimiento en el uso de C++ impulsó la creación de un estándar oficial.
En 1998, se publicó la primera versión estandarizada de C++, se lanzó el estándar ISO/IEC 14882:1998 (conocido como C++98), que consolidaba la sintaxis y estructura del lenguaje, y estableció las especificaciones oficiales del lenguaje.
Esta versión estableció también la biblioteca estándar (STL), que incluía estructuras de datos como vector
, map
, y algoritmos genéricos que ayudaron a los desarrolladores a escribir código más fácilmente.
STL fue creada en 1994 por Alexander Stepanov y Meng Lee, y algunos de sus elementos ya estaban en uso antes de su inclusión oficial en el estándar.
Años 2000: Necesidad de actualización
En la década de 2000, C++ comenzó a enfrentarse a ciertos desafíos. Especialmente al riesgo de quedarse obsoleto ante la aparición de nuevos lenguajes como Java y C#.
Estos lenguajes ofrecían muchas características modernas, como sintaxis sencilla, administración automática de memoria, portabilidad, bibliotecas, y ciclos de actualización más rápidos, etc etc.
Mientras tanto, C++ comenzó a percibirse como un lenguaje difícil de aprender y usar correctamente, en parte debido a la falta de actualizaciones regulares y la complejidad de su manejo de memoria.
Para no perder competitividad, el comité de estandarización de C++ comenzó a planear una actualización significativa. (¡se viene!)
2011, el retorno del rey
En 2011, tras más de una década desde la última actualización importante, se lanzó C++11. Esta versión fue una revolución para el lenguaje, agregando características para intentar ponerlo al nivel de los lenguajes “modernos” (modernos en 2011).
C++11 introdujo mejoras importantes como las funciones lambda, deducción automática de tipos (auto
), punteros inteligentes (smart pointers
), programación concurrente y paralela, entre otras.
Pero, más importante incluso, C++11 marcó un punto de inflexión, porque demostraba que el lenguaje podía evolucionar y adaptarse a las necesidades modernas. Además, de que había intención de ello.
Así que, a partir de ese momento, el comité de estandarización decidió adoptar un ciclo de lanzamientos regulares con nuevas versiones aproximadamente cada tres años, estableciendo una nueva era de evolución constante para C++.
C++14, C++17 y C++20
Tras el éxito de C++11, las siguientes versiones, C++14 y C++17 consolidaron el enfoque de actualizaciones frecuentes.
C++14, lanzado en 2014, se centró en mejoras menores y correcciones de C++11, ccomo mejorar la deducción de tipos y agregar la funcionalidad std::make_unique
.
Pero C++17, lanzado en 2017, agregó características más avanzadas, como std::optional
, std::variant
, paralelismo en la STL, y estructuras de datos adicionales como std::any
.
Posteriormente, C++20, lanzado en (¡adivina!) 2020, fue otra actualización mayor. Incluía novedades como conceptos, módulos, corutinas, ranges y expresiones regulares en la biblioteca estándar.
Estas características acercaron a C++ a otros lenguajes modernos, sin sacrificar su rendimiento y control de bajo nivel.
C++ en la actualidad
Siguiendo el ciclo de lanzamientos regulares, C++23 trae una serie de mejoras prácticas. No es una actualización tan disruptiva como C++20, esta versión se centra en optimizar la usabilidad y la consistencia del lenguaje.
Entre las novedades, C++23 amplía el soporte de algoritmos en ranges, ofrece mejoras en la biblioteca estándar para hacerla más intuitiva y flexible, e incluye herramientas adicionales para depuración y sintaxis más conveniente para deducción de tipos en plantillas.
Actualmente, C++ sigue siendo uno de los lenguajes de programación más relevantes y utilizados en el desarrollo de software.
Aunque, lo cierto es que ha cambiado mucho respecto a 1998. (de hecho, se ha complejizado bastante). Si aprendiste C++ 98, va siendo hora de actualizarte.
Así que si has aguantado todo este chapon, y quieres aprender a programar en C++ moderno, sigue con el resto del curso 💛.