Espacios de nombres
Variantes
Acciones

Historia de C++

De cppreference.com
< cpp‎ | language
 
 
Lenguaje C++
Temas generales
Control de flujo
Instrucciones de ejecución condicionales
Instrucciones de iteración (bucles)
Declaraciones de salto
Funciones
Declaración de funciones
Declaración de funciones lambda
Especificador inline
Especificación de excepciones(hasta C++20)
Especificador noexcept(C++11)
Excepciones
Espacios de nombres
Tipos
Especificadores
decltype(C++11)
auto(C++11)
alignas(C++11)
Especificadores de duración de almacenamiento
Inicialización
Expresiones
Representaciones alternas
Literales
Booleanos - Enteros - De punto flotante
De carácter - De cadena - nullptr(C++11)
Definidos por el usuario(C++11)
Utilidades
Atributos(C++11)
Tipos
Declaración de typedef
Declaración de alias de tipo(C++11)
Conversiones
Conversiones implícitas - Conversiones explícitas
static_cast - dynamic_cast
const_cast - reinterpret_cast
Asignación de memoria
Clases
Propiedades de funciones específicas de la clase
Funciones miembro especiales
Plantillas
Misceláneos
Historia de C++
 

Contenido

[editar]Los inicios de C++

  • 1979: Primera implementación de C con Clases
  1. 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++)
  2. 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
  1. 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
  2. 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
  1. 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
  2. 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.

  1. 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)
  1. 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
  2. Adiciones a la Biblioteca: locales, bitset, valarray, auto_ptr, cadena emplantillada, streams E/S, y números complejos.
  3. 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.

Reportes sobre defectos arreglados en C++03 (92 principales, 125 de la librería)

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.

Este reporte técnico es una extensión de la biblioteca de C++, que agrega lo siguiente a la biblioteca estándar de C++:

  1. 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.
  2. 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 tipo long 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.

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

Artículo principal: C++11

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

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.


[editar]periodo C++14

(borrador final del 2014)

Artículo principal: C++14

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.

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.

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.

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.

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.

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

Artículo principal: C++17

La mayor revisión del estándar de C++ después de C++11

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

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.

Este TS extiende la biblioteca de C++ para incluir redes TCP/IP basadas en: boost.asio.

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.

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

Artículo principal: C++20

La mayor revisión del estándar de C++ después de C++17

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

Artículo Principal: C++23

La siguiente gran revisión del estándar de C++

[editar]Vease también

Documentación de C para Historia de C

[editar]Enlaces externos

 Una historia de C++: 1979-1991
 Evolucionando un lenguaje en y para el mundo real: C++ 1991-2006
 Prosperando en un concurrido y cambiante mundo: C++ 2006-2020
 Fundación del estándar de C++
  C++ en Wikipedia
 Comité de Estándares de C++
close