Geschichte von C++
Inhalt |
[bearbeiten] Frühes C++
- 1979: C with Classes zuerst implementiert
- Neue Features: Klassen, Member-Funktionen, abgeleitete Klassen, separate Kompilierung, öffentliche und private Zugriffssteuerung, Friends, Typüberprüfung von Funktionsargumenten, Standardargumente, Inline-Funktionen, überladener Zuweisungsoperator, Konstruktoren, Destruktoren, f() gleich wie f(void), Call-Funktion und Return-Funktion (Synchronisationsmerkmale, nicht in C++)
- Bibliotheken: die nebenläufige Task-Bibliothek (nicht in C++)
- 1982: C with Classes Referenzhandbuch veröffentlicht
- 1984: C84 implementiert, Referenzhandbuch veröffentlicht
- 1985: Cfront 1.0
- Neue Features: virtuelle Funktionen, Funktions- und Operatorüberladung, Referenzen, new und delete Operatoren, das Schlüsselwort
const, Scope-Auflösungsoperator - Bibliothekszusätze: komplexe Zahlen,
string(AT&T Version), I/O-Streams
- 1985: The C++ Programming Language, 1. Auflage
- 1986: Das "whatis?"-Papier dokumentiert die verbleibenden Designziele, einschließlich Mehrfachvererbung, Ausnahmebehandlung und Templates.
- 1987: C++-Unterstützung in GCC 1.15.3
- 1989: Cfront 2.0
- Neue Features: Mehrfachvererbung, Zeiger auf Member, geschützter Zugriff, typsichere Verknüpfung, abstrakte Klassen, statische und const-qualifizierte Member-Funktionen, klassenspezifisches new und delete
- Bibliothekszusätze: I/O-Manipulatoren
- 1990: The Annotated C++ Reference Manual
Dieses Buch beschrieb die Sprache, wie sie entworfen wurde, einschließlich einiger Features, die noch nicht implementiert waren. Es diente als De-facto-Standard bis zum ISO-Standard.
- Neue Features: Namensräume, Ausnahmebehandlung, verschachtelte Klassen, Templates
- 1991: Cfront 3.0
- 1991: The C++ Programming Language, 2. Auflage
[bearbeiten] Standard C++
- 1990: ANSI C++ Komitee gegründet
- 1991: ISO C++ Komitee gegründet
- 1992: STL in C++ implementiert
[bearbeiten] C++98/03 Periode
- 1998: C++98 (ISO/IEC 14882:1998)
- Neue Features: RTTI (
dynamic_cast,typeid), kovariante Rückgabetypen, Cast-Operatoren,mutable,bool, Deklarationen in Bedingungen, Template-Instanziierungen, Member-Templates,export - Bibliothekszusätze: Lokalisierungen, bitset, valarray, auto_ptr, templatisiertes String, I/O-Streams und komplexe Zahlen.
- Basierend auf STL: Container, Algorithmen, Iteratoren, Funktionsobjekte
- 1998: The C++ Programming Language, 3. Auflage
- 1999: Boost von Komiteemitgliedern gegründet, um neue hochwertige Kandidatenbibliotheken für den Standard zu produzieren.
- 2003: C++03 (ISO/IEC 14882:2003)
Dies war eine kleinere Revision, die kaum mehr als ein technisches Korrigendum sein sollte. Diese Revision führt die Definition der Wertinitialisierung ein.
- 2006: Performance TR (ISO/IEC TR 18015:2006) (ISO Store) (2006 draft)
Dieses TR diskutierte die Kosten verschiedener C++-Abstraktionen, lieferte Implementierungshinweise, diskutierte die Verwendung von C++ in eingebetteten Systemen und führte die <hardware> Schnittstelle zu C's ISO/IEC TR 18037:2008 <iohw.h> ein.
- 2007: Library Extension TR1 (ISO/IEC TR 19768:2007) (ISO Store) (2005 draft).
Dieses TR ist eine C++-Bibliothekserweiterung, die der C++-Standardbibliothek Folgendes hinzufügt:
- Von Boost: reference_wrapper, Smart Pointers, Member Function, result_of, bind, function, Type Traits, Random, Mathematische Sonderfunktionen, tuple, array, Ungeordnete Container (einschließlich hash) und Reguläre Ausdrücke.
- Von C99: mathematische Funktionen aus
<math.h>, die in C99 neu waren, Leerzeichen-Zeichenklasse, Gleitkomma-Umgebung, hexfloat I/O-Manipulator, Ganzzahltypen mit fester Größe, derlong long-Typ, va_copy, die Funktionsfamilien snprintf() und vfscanf() und die C99-Konvertierungsspezifizierer für die Funktionsfamilien printf() und scanf().
Alles von TR1 außer den Sonderfunktionen wurde mit geringfügigen Änderungen in C++11 aufgenommen.
- 2010: Mathematische Sonderfunktionen (ISO/IEC 29124:2010) (ISO Store) (2010 draft)
Dieser internationale Standard ist eine C++-Bibliothekserweiterung, die die Sonderfunktionen hinzufügt, die Teil von TR1 waren, aber nicht in C++11 enthalten waren: elliptische Integrale, Exponentialintegral, Laguerre-Polynome, Legendre-Polynome, Hermite-Polynome, Bessel-Funktionen, Neumann-Funktionen, Beta-Funktion und Riemannsche Zeta-Funktion. Dieser Standard wurde in C++17 integriert.
[bearbeiten] C++11 Periode
- 2011: C++11 (ISO/IEC 14882:2011) (ISO Store) (2012 post-publication draft).
Eine große Anzahl von Änderungen wurde vorgenommen, um bestehende Praktiken zu standardisieren und die für C++-Programmierer verfügbaren Abstraktionen zu verbessern.
- 2011: Decimal Floating-Point TR (ISO/IEC TR 24733:2011) (ISO Store) (2009 draft)
Dieses TR implementiert die Dezimal-Gleitkommazahlen-Typen aus dem IEEE 754-2008 Standard für Gleitkomma-Arithmetik: std::decimal::decimal32, std::decimal::decimal64 und std::decimal::decimal128.
- 2012: The Standard C++ Foundation gegründet
- 2013: The C++ Programming Language, 4. Auflage
[bearbeiten] C++14 Periode
- 2014: C++14 (ISO Store) (ANSI Store) (2014 final draft)
Kleine Revision des C++-Standards
- 2015: Filesystem Library TS (ISO/IEC TS 18822:2015) (ISO Store) (2014 draft)
Diese TS ist eine experimentelle C++-Bibliothekserweiterung, die eine Dateisystembibliothek spezifiziert, die auf boost.filesystem V3 basiert (mit einigen Modifikationen und Erweiterungen). Diese TS wurde in C++17 integriert.
- 2015: Extensions for Parallelism TS (ISO/IEC TS 19570:2015) (ISO Store) (2015 draft)
Dieser TS standardisiert parallele und Vektor-parallele APIs für alle Standardbibliotheksalgorithmen und fügt neue Algorithmen wie reduce, transform_reduce oder exclusive_scan hinzu. Dieser TS wurde in C++17 integriert.
- 2015: Extensions for Transactional Memory TS (ISO/IEC TS 19841:2015) (ISO Store) ([2015 draft)
Diese TS erweitert die C++-Kernsprache um synchronisierte und atomare Blöcke sowie transaktionssichere Funktionen, die transaktionale Speichersemantik implementieren.
- 2015: Extensions for Library Fundamentals TS (ISO/IEC TS 19568:2015) (ISO Store) (2015 draft)
Diese TS fügt der C++-Standardbibliothek mehrere neue Komponenten hinzu: optional, any, string_view, sample, search, apply, polymorphe Allokatoren und Variable Templates für Typ-Traits. Diese TS wurde in C++17 integriert.
- 2015: Extensions for Concepts TS (ISO/IEC TS 19217:2015) (ISO Store) (2015 draft)
Diese TS erweitert die C++-Kernsprache um Konzepte (benannte Typanforderungen) und Constraints (Beschränkungen für die Typen, die in Template-, Funktions- und Variablendeklarationen zulässig sind), was die Metaprogrammierung unterstützt und die Diagnose von Template-Instanziierungen vereinfacht, siehe Konzepte. Diese TS wurde mit einigen Auslassungen in C++20 integriert.
- 2016: Extensions for Concurrency TS (ISO/IEC TS 19571:2016) (ISO Store) (2015 draft)
Diese TS erweitert die C++-Bibliothek um mehrere Erweiterungen für std::future, Latches und Barrieren sowie atomare Smart Pointers.
[bearbeiten] C++17 Periode
- 2017: C++17 (ISO Store) (ANSI Store) (n4659 2017-03-21 final draft)
Die große Revision des C++-Standards nach C++11.
- 2017: Extensions for Ranges TS (ISO/IEC TS 21425:2017) (ISO Store) (2017 draft)
Diese TS erweitert die C++-Bibliothek um Ranges, eine neue, leistungsfähigere Abstraktion, die Iterator-Paare ersetzt, zusammen mit Range-Views, Sentinel-Ranges, Projektionen für On-the-fly-Transformationen, neuen Iterator-Adaptern und Algorithmen. Diese Erweiterung macht es endlich möglich, einen Vektor mit sort(v); zu sortieren.
- 2017: Extensions for Coroutines TS (ISO/IEC TS 22277:2017) (ISO Store) (2017 draft)
Diese TS erweitert die C++-Kernsprache und die Standardbibliothek um stackless Coroutines (wiederaufnehmbare Funktionen). Dies fügt die Schlüsselwörter co_await, co_yield und co_return hinzu.
- 2018: Extensions for Networking TS (ISO/IEC TS 19216:2018) (ISO Store) (2017 draft)
Diese TS erweitert die C++-Bibliothek um TCP/IP-Networking basierend auf boost.asio.
- 2018: Extensions for Modules TS (ISO/IEC TS 21544:2018) (ISO Store) (2018 draft)
Diese TS erweitert die C++-Kernsprache um Module. Dies fügt die speziellen Bezeichner module, import hinzu und führt das Schlüsselwort export mit einer neuen Bedeutung wieder ein.
- 2018: Extensions for Parallelism Version 2 TS (ISO/IEC TS 19570:2018) (ISO Store) (2018 draft)
Diese TS erweitert die C++-Bibliothek um zwei neue Ausführungsrichtlinien (unseq und vec), zusätzliche parallele Algorithmen wie reduction_plus oder for_loop_strided, Task-Blöcke für das Erzeugen und Zusammenführen paralleler Tasks, SIMD-Typen und Operationen auf diesen Typen.
[bearbeiten] C++20 Periode
- 2020: C++20 (ISO Store) (final draft n4860 2020-03-31)
Die große Revision des C++-Standards nach C++17.
- 2021: Reflection TS (ISO/IEC TS 23619:2021) (ISO store) (2020 draft)
Diese TS erweitert C++ um Einrichtungen zur Inspektion von Programmelementen wie Variablen, Aufzählungen, Klassen und deren Mitgliedern, Lambdas und deren Captures usw.
[bearbeiten] Zukünftige Entwicklung
- Experimentelle technische Spezifikationen
- 2026: C++ latest draft n5001 (2024-12-17)
Die nächste große Revision des C++-Standards.
[bearbeiten] Siehe auch
| C-Dokumentation für Geschichte von C
|