Historia de C++
Contenido |
[editar]Los inicios de C++
- 1979: Primera implementación de C con Clases
- Nuevas características: clases, funciones miembro, clases derivadas, compilación separada, control de acceso público y privado, amigos, comprobación de tipos de argumentos de función, argumentos por defecto, inline functions, operador sobrecargado de asignación, constructores, destructores, f() es igual a f(void), función de llamada y función de retorno (funciones de sincronización, no en C++)
- Bibliotecas: la biblioteca de tarea simultánea (concurrentes) (no en C++)
- 1982: publicado manual de referencia C con Clases
- 1984: implementado C84, publicado manual de referencia
- 1985: Cfront 1.0
- Nuevas características: funciones virtuales, sobrecarga de funciones y operadores, referencias, operadores new y delete , la palabra reservada
const
, el operador de resolución de ambito - Adiciones a la Biblioteca: números complejos,
string
(versión AT&T), E/S stream
- 1985: El lenguaje de programación C++, 1 ª edición
- 1986: La hoja "whatis?" documenta los objetivos de diseño restantes, incluida la herencia múltiple, manejo de excepciones y plantillas.
- 1989: Cfront 2.0
- Nuevas características: herencia múltiple, punteros a miembros, acceso de tipo protegido, enlace de tipo seguro, clases abstractas, funciones miembro static y const, new y deleteespecíficas de clase
- Adicciones a la biblioteca: manipuladores de E/S
- 1990: El manual de referencia de C++ comentado (The Annotated C++ Reference Manual)
Este libro describe el lenguaje como está diseñado, incluyendo algunas características que no estaban implementadas todavía. Sirvió como el estándar de facto hasta que se publicó el ISO.
- Nuevas características: espacios de nombres, manejo de excepciones, clases anidadas, plantillas
- 1991: Cfront 3.0
- 1991: El lenguaje de programación C++, 2ª edición
[editar]Estándar de C++
- 1990 Se funda el Comité de ANSI C++
- 1991 Se funda el Comité de ISO C++
- 1992 Se implementa la STL en C++
[editar]periodo C++98/03
- 1998
C++98
(ISO/IEC 14882:1998)
- Nuevas características: RTTI (
dynamic_cast
,typeid
), tipos de retorno covariantes, operadores de conversión,mutable
,tipo bool
, declaraciones en las condiciones, instanciaciones de plantilla, plantillas de miembros, exportar - Adiciones a la Biblioteca: locales, bitset, valarray, auto_ptr, cadena emplantillada, streams E/S, y números complejos.
- Basado en la STL: contenedores, algoritmos, iteradores, objetos de función.
- 1998 El lenguaje de programación C++, 3ª edición
- 1999 Boost fundada por los miembros del comité para producir nuevas bibliotecas candidatas de alta calidad para el estándar.
- 2003
C++03
(ISO/IEC 14882:2003)
Esta fue una revisión menor, destinada a ser poco más que una corrección técnica. Esta revisión introduce la definición de inicialización de valor.
- 2006 Reporte técnico del rendimiento (ISO/IEC TR 18015:2006) (Tienda ISO) (borrador del 2006)
Este reporte técnico discutió los costes de varias abstracciones de C++, brindó una guía de implementación, discutió el uso de C++ en sistemas embebidos e introdujo la interfaz <hardware>
a el ISO / IEC TR 18037: 2008 <iohw.h> de C
.
- 2007: Extensión de biblioteca TR1 (ISO / IEC TR 19768: 2007) (Tienda ISO) (borrador del 2005).
Este reporte técnico es una extensión de la biblioteca de C++, que agrega lo siguiente a la biblioteca estándar de C++:
- Desde Boost: envoltura de referencia, punteros inteligentes, función miembro, result_of, bind, function, Type Traits|características de tipo, aleatoriedad, funciones matemáticas especiales, tupla, array, contenedores desordenados (incluyendo hash), y expresiones regulares.
- Desde C99: funciones matemáticas de
<math.h>
que eran nuevas en C99, clase de caracteres en blanco, entorno de punto flotante, manipulador de E/S hexfloat, tipos enteros de tamaño fijo, el tipolong long
, va_copy, las familias de funciones snprintf() y vfscanf(), y la conversión C99 específica de las familias de funciones printf() y scanf().
Todos los TR1 (reportes técnicos), excepto para las funciones especiales, se incluyeron en C++11, con cambios menores.
- 2010 Funciones matemáticas especiales (ISO/IEC 29124:2010) (Tienda ISO) (borrador del 2010)
Este estándar internacional es una extensión de biblioteca estándar de C++, que agrega las funciones especiales que eran parte del TR1, pero que no estaban incluidas en C++11: integrales elípticas, integral exponencial, polinomios de Laguerre, polinomios de Legendre, polinomios de Hermite, funciones de Bessel, funciones de Neumann, función beta y función zeta de Riemann. Este estándar se fusionó con C++17.
[editar]periodo C++11
- 2011 C++11 (ISO/IEC 14882:2011) (Tienda ISO)(2012 Borrador post-publicación).
Se introdujeron una gran cantidad de cambios tanto en las prácticas existentes estandarizadas como para mejorar las abstracciones disponibles para los programadores de C++.
- 2011 Punto-flotante decimal TR (ISO/IEC TR 24733:2011) (Tienda ISO) (borrador del 2009)
Este reporte técnico implementa los tipos de punto-flotante decimal del Estándar IEEE 754-2008 para aritmética de punto-flotante:std::decimal::decimal32
, std::decimal::decimal64
, y std::decimal::decimal128
.
- 2012 Se funda la fundación del estándar de C++
- 2013 El lenguaje de programación, 4ª edición
[editar]periodo C++14
- 2014 C++14 (Tienda ISO) (Tienda ANSI)
Revisión menor del estándar de C++
- 2015: Especificación técnica de la biblioteca "Sistema de Archivos" (Filesystem) (ISO/IEC TS 18822:2015)
(Tienda ISO) (borrador del 2014) Esta es una especificación técnica experimental de la biblioteca de extensión de C++, la cual especifica una biblioteca de sistemas de archivos basada en boost.filesystem V3 (con algunas modificaciones y extensiones). Esta especificación técnica fue incluida en C++17.
- 2015 TS de extensiones para paralelismo (ISO/IEC TS 19570:2015) (Tienda ISO) (borrador del 2015)
Este TS estandariza la API paralela y vectores paralelos para todos los algoritmos de la biblioteca estándar, así como añade nuevos algoritmos como reduce
, transform_reduce
, o exclusive_scan
. Este TS fue incluido en C++17.
- 2015 TS sobre extensiones para memoria transaccional (ISO/IEC TS 19841:2015) (Tienda ISO) ([borrador del 2015)
Este TS extiende las características principales de C++ con bloques sincronizados y atómicos, así como funciones de transacción seguras, que implementan semántica de memoria transaccional.
- 2015 TS de extensiones para fundamentos de bibliotecas (ISO/IEC TS 19568:2015) (Tienda ISO) (borrador del 2015)
Este TS añade varios componentes nuevos a la biblioteca estándar de C++: optional, any, string_view, sample, search, apply, asignadores polimórficos, and plantilla de variables para rasgos de tipo. Este TS fue incluido en C++17.
- 2015 TS sobre extensiones de conceptos (ISO/IEC TS 19217:2015) (Tienda ISO) (borrador del 2015)
Este TS extiende el núcleo del lenguaje C++ con conceptos (requisitos de tipo con nombre) y restricciones (limites de los tipos permitidos en plantilla, función, y declaraciones de variable), que ayudan a la meta-programación y simplifica diagnósticos de instanciación de plantillas, ver conceptos. Este TS fue incluido en C++20, con algunas omisiones.
- 2016 Extensiones para concurrencias TS (ISO/IEC TS 19571:2016) (Tienda ISO) (borrador del 2015)
Este TS extiende la biblioteca de C++ para incluir varias extensiones a std::future, std::latch y std::barrier, y punteros atómicos inteligentes.
[editar]periodo C++17
- 2017 C++17 (Tienda ISO) (Tienda ANSI) (n4659 21-03-2017 borrador final)
La mayor revisión del estándar de C++ después de C++11
- 2017 Extensiones para rangos TS (ISO/IEC TS 21425:2017) (Tienda ISO) (borrador del 2017)
Este TS extiende la librería de C++ para incluir rangos, una nueva y más poderosa abstracción para remplazar a los pares de iteradores, junto con vistas de rangos, rangos de centinela, proyecciones para transformaciones sobre la marcha, nuevos adaptadores de iteradores y algoritmos. Esta extensión finalmente hace posible ordenar un vector con sort(v);
- 2017 Extensiones para corrutinas TS (ISO/IEC TS 22277:2017) (Tienda ISO) (borrador del 2017)
Este TS extiende el núcleo del lenguaje C++ y la librería estándar para incluir corrutinas apiladas (funciones reanudables). Este añade las palabras reservadas co_await, co_yield, y co_return.
- 2018 Extensiones para redes TS (ISO/IEC TS 19216:2018) (Tienda ISO) (borrador del 2017)
Este TS extiende la biblioteca de C++ para incluir redes TCP/IP basadas en: boost.asio.
- 2018 Extensiones para módulos TS (ISO/IEC TS 21544:2018) (Tienda ISO) (borrador del 2018)
Este TS extiende el núcleo del lenguaje C++ para incluir módulos. Esto añade los identificadores especiales module, import, y reintroduce la palabra reservada export con un nuevo significado.
- 2018 Extensiones para Paralelismo versión 2 TS (ISO/IEC TS 19570:2018) (Tienda ISO) (borrador 2018)
Este TS extiende la bilbioteca de C++ para incluir dos nuevos políticas de ejecución (unseq y vec), algoritmos paralelos adicionales como son reduction_plus o for_loop_strided, bloques de tarea para bifurcación y unión de tareas paralelas, tipos SIMD y operaciones en esos tipos.
[editar]periodo C++20
- 2020 C++20 (Tienda ISO) (borrador final n4860 31-03-2020)
La mayor revisión del estándar de C++ después de C++17
- 2021: Reflection TS (ISO/IEC TS 23619:2021) (ISO store) (borrador 2020)
Este TS extiende C++ con facilidades para inspeccionar entidades del programa como variables, enumeraciones, clases y sus miembros, lambdas y sus capturas, etc.
[editar]El desarrollo futuro
- Especificaciones técnicas experimentales
- 2026: C++26 último borrador n4964 (2023-10-15)
La siguiente gran revisión del estándar de C++
[editar]Vease también
Documentación de C para Historia de C |