Namensräume
Varianten
Aktionen

Geschichte von C++

Von cppreference.com
< cpp‎ | Sprache
 
 
C++ Sprache
Allgemeine Themen
Kontrollfluss
Bedingte Ausführungsaussagen
if
Iterationsanweisungen (Schleifen)
for
Bereichs-for (C++11)
Sprunganweisungen
Funktionen
Funktionsdeklaration
Lambda-Funktionsausdruck
inline-Spezifizierer
Dynamische Ausnahmespezifikationen (bis C++17*)
noexcept-Spezifizierer (C++11)
Ausnahmen
Namensräume
Typen
Spezifizierer
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Speicherdauer-Spezifizierer
Initialisierung
Ausdrücke
Alternative Darstellungen
Literale
Boolesch - Ganzzahl - Gleitkommazahl
Zeichen - String - nullptr (C++11)
Benutzerdefinierte (C++11)
Dienstprogramme
Attribute (C++11)
Typen
typedef-Deklaration
Typalias-Deklaration (C++11)
Umwandlungen
Speicherzuweisung
Klassen
Klassenspezifische Funktionseigenschaften
explicit (C++11)
static

Spezielle Member-Funktionen
Templates
Sonstiges
Geschichte von C++
 

Inhalt

[bearbeiten] Frühes C++

  • 1979: C with Classes zuerst implementiert
  1. 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++)
  2. 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
  1. Neue Features: virtuelle Funktionen, Funktions- und Operatorüberladung, Referenzen, new und delete Operatoren, das Schlüsselwort const, Scope-Auflösungsoperator
  2. 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
  1. Neue Features: Mehrfachvererbung, Zeiger auf Member, geschützter Zugriff, typsichere Verknüpfung, abstrakte Klassen, statische und const-qualifizierte Member-Funktionen, klassenspezifisches new und delete
  2. 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.

  1. 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)
  1. Neue Features: RTTI (dynamic_cast, typeid), kovariante Rückgabetypen, Cast-Operatoren, mutable, bool, Deklarationen in Bedingungen, Template-Instanziierungen, Member-Templates, export
  2. Bibliothekszusätze: Lokalisierungen, bitset, valarray, auto_ptr, templatisiertes String, I/O-Streams und komplexe Zahlen.
  3. 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.

In C++03 behobene Fehlerberichte (92 Kern-, 125 Bibliotheksfehler)

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.

Dieses TR ist eine C++-Bibliothekserweiterung, die der C++-Standardbibliothek Folgendes hinzufügt:

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

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

Hauptartikel: C++11

Eine große Anzahl von Änderungen wurde vorgenommen, um bestehende Praktiken zu standardisieren und die für C++-Programmierer verfügbaren Abstraktionen zu verbessern.

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.

[bearbeiten] C++14 Periode

Hauptartikel: C++14

Kleine Revision des C++-Standards

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.

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.

Diese TS erweitert die C++-Kernsprache um synchronisierte und atomare Blöcke sowie transaktionssichere Funktionen, die transaktionale Speichersemantik implementieren.

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.

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.

Diese TS erweitert die C++-Bibliothek um mehrere Erweiterungen für std::future, Latches und Barrieren sowie atomare Smart Pointers.

[bearbeiten] C++17 Periode

Hauptartikel: C++17

Die große Revision des C++-Standards nach C++11.

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.

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.

Diese TS erweitert die C++-Bibliothek um TCP/IP-Networking basierend auf boost.asio.

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.

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

Hauptartikel: C++20

Die große Revision des C++-Standards nach C++17.

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

Hauptartikel: C++23

Die nächste große Revision des C++-Standards.

[bearbeiten] Siehe auch

C-Dokumentation für Geschichte von C

[bearbeiten] Externe Links

1.  A History of C++: 1979-1991
2.  Evolving a language in and for the real world: C++ 1991-2006
3.  Thriving in a crowded and changing world: C++ 2006-2020
4.  Standard C++ Foundation
5.  C++ auf Wikipedia
6.  C++ Standards Committee