cpp-historia-y-evolucion

Historia y evolución de C++

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).

cpp-2011

El retorno de C++

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 💛.