Geschichte von C
Von cppreference.com
Inhalt |
[bearbeiten] Frühes C
- 1969: B wurde erstellt, basierend auf BCPL, um den PDP-7-Assembler als Systemprogrammiersprache für Unix zu ersetzen
- Operatoren ++, --, Zuweisungsoperatoren hinzugefügt, blieb eine typenlose Sprache wie BCPL
- 1971: NB ("new B") wurde beim Portieren von B auf PDP-11 erstellt
- Typen (int, char, Arrays und Zeiger), Array-zu-Zeiger-Konvertierung, Kompilierung in Maschinencode
- 1972: Sprache wurde in C umbenannt
- struct, Operatoren && und ||, Präprozessor, portable E/A
- 1973: Unix wurde in C neu geschrieben
- unsigned, long, union, Aufzählungen, erhöhte Typsicherheit
- 1978: The C Programming Language, 1. Auflage
[bearbeiten] Standard-C
- 1983: ANSI gründete das Komitee X3J11
- 1988: The C Programming Language, 2. Auflage
- 1989: C89, der ANSI C-Standard veröffentlicht
- bestehende Praktiken kodifiziert
- neue Funktionen: volatile, enum, signed, void, Locales
- Von C++ übernommen: const, Funktionsprototypen
- 1990: C90, der ANSI C-Standard als ISO/IEC 9899:1990 angenommen
- 1994: Technisches Korrigendum 1 (ISO/IEC 9899:1990/Cor.1:1994)
- 1995: C95 (ISO/IEC 9899:1990/Amd.1:1995) (Online-Shop)
- erweiterte Unterstützung für breite und multibyte Zeichen (<wctype.h>, <wchar.h>, Ergänzungen und Änderungen an Stream-E/A usw.)
- Digraphen, <iso646.h>,
- 1996: Technisches Korrigendum 2 (ISO/IEC 9899:1990/Cor.2:1996)
- 1999: C99 (ISO/IEC 9899:1999)
- neue Funktionen: bool, long long, <stdint.h>, <inttypes.h>, restrict, zusammengesetzte Literale, Variable-Length-Arrays, flexible Array-Mitglieder, designierte Initialisierer, <fenv.h>, variadische Makros, komplexe Zahlen, __func__, hexadezimales Gleitkommaformat (%a), monetäre Formatierung in lconv, isblank, Verkettung von schmalen und breiten String-Literalen, nachgestelltes Komma in Aufzählungen, leere Argumente in funktionsähnlichen Makros, STDC_* Pragmas, va_copy, Nullrückgabe von tmpnam, Nullzeiger in setvbuf,
hhundllLängenspezifizierer in printf, snprintf, _Exit, <tgmath.h>, POSIX-ähnliche strftime-Spezifizierer - von C++ übernommen: inline, Mischung von Deklarationen und Code, Deklarationen in der Initialisierungsklausel der for-Schleife, // Kommentare, universelle Zeichen Namen im Quellcode
- implizite Funktionen und implizites int entfernt
- 2001: Technisches Korrigendum 1 (ISO/IEC 9899:1999/Cor.1:2001)
- 2004: Technisches Korrigendum 2 (ISO/IEC 9899:1999/Cor.2:2004)
- 2004: Unicode TR (ISO/IEC TR 19769:2004) (ISO-Shop) (N1040 Entwurf vom 7. November 2003)
- 2007: Technisches Korrigendum 3 (ISO/IEC 9899:1999/Cor.3:2007) (N1256 Entwurf vom 7. September 2007)
- veraltete gets
- 2007: Bounds-checking interfaces TR (ISO/IEC TR 24731-1:2007) (ISO-Shop) (N1225 Entwurf vom 28. März 2007)
- 2008: Embedded TR (ISO/IEC TR 18037:2008) (ISO-Shop) (N1021 Entwurf vom 24. September 2003)
- 2009: Decimal floating-point TR (ISO/IEC TR 24732:2009) (ISO-Shop) (N1241 Entwurf vom 5. Juli 2007)
- 2009: Mathematical special functions TR (ISO/IEC TR 24747:2009) (ISO-Shop) (N1182 Entwurf vom 2. August 2006)
- 2010: Dynamic allocations functions TR (ISO/IEC TR 24731-2:2010) (ISO-Shop) (N1388 Entwurf vom 1. Juni 2009)
- 2011: C11 (ISO/IEC 9899:2011) (ISO-Shop) (ANSI-Shop) (N1570 Entwurf vom 12. April 2011)
- Thread-fähiges Speichermodell, <stdatomic.h>, <threads.h>, typengenerische Funktionen, alignas/alignof, noreturn, static_assert, erweiterte Analysierbarkeit, Erweiterungen für komplexe und imaginäre Typen, anonyme Strukturen und Unions, exklusiver Dateiöffnungsmodus, quick_exit
- entfernte gets
- aus Bounds-checking interfaces TR: Bounds-checking interfaces,
- aus Unicode TR: char16_t, char32_t und <uchar.h>
- 2012: Technisches Korrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO-Shop)
- Behebt DR 411
- 2013: Secure Coding Rules TS (ISO/IEC TS 17961:2013) (ISO-Shop) (N1718 30. Mai 2013)
- 2014: FP TS Teil 1: Binäre Gleitkommaarithmetik (ISO/IEC TS 18661-1:2014) (ISO-Shop) (N1778 Entwurf von 2013)
- enthält Änderungen an C11 (hauptsächlich an Anhang F), die alle grundlegenden Anforderungen und einige Empfehlungen von IEC 60559:2011 abdecken (C11 basierte auf IEC 60559:1989)
- 2015: FP TS Teil 2: Dezimale Gleitkommaarithmetik (ISO/IEC TS 18661-2:2015) (ISO-Shop) (N1912 Entwurf von 2015)
- enthält Änderungen an C11 zur Unterstützung aller Anforderungen und einiger grundlegenden Empfehlungen von IEC 60559:2011 für dezimale Gleitkommaarithmetik. Dies ersetzt ISO/IEC TR 24732:2009.
- 2015: FP TS Teil 3: Austausch- und erweiterte Typen (ISO/IEC TS 18661-3:2015) (ISO-Shop) (N1945 Entwurf von 2015)
- enthält Änderungen an C11 zur Unterstützung der Empfehlungen von IEC 60559:2011 für erweiterte Gleitkommaformate und die Austauschformate, sowohl arithmetisch als auch nicht-arithmetisch.
- 2015: FP TS Teil 4: Zusätzliche Funktionen (ISO/IEC TS 18661-4:2015) (ISO-Shop) (N1950 Entwurf von 2015)
- enthält Änderungen an C11 zur Unterstützung aller von IEC 60559:2011 empfohlenen mathematischen Operationen, einschließlich Trigonometrie in π-Einheiten, Kehrwert der Quadratwurzel, Zinseszins usw.
- 2016: FP TS Teil 5: Zusätzliche Attribute (ISO/IEC TS 18661-5:2016) (ISO-Shop) (N2004 Entwurf von 2016)
- enthält Änderungen an C11 zur Unterstützung aller von IEC 60559:2011 empfohlenen zusätzlichen Attribute (Auswertungsmodell, Ausnahmebehandlung, Reproduzierbarkeit usw.)
- 2018: C17 (ISO/IEC 9899:2018) (ISO-Shop) (Endgültiger Entwurf)
| In C17 behobene Fehlerberichte (54 Fehler) |
|---|
|
- 2023 C23 (ISO/IEC 9899:2024). C23 ist die aktuelle Überarbeitung des C-Standards.
| In C23 behobene Fehlerberichte (? Fehler) |
|---|
[bearbeiten] Zukünftige Entwicklung
- Parallelism TS (Entwurf N2017 vom 10.03.2016)
- Transactional Memory TS (Entwurf N1961 vom 23.09.2015)
- C (Neuester Entwurf n3467 vom 09.02.2025)
- Liste der Probleme, die keinen DR-Status erhalten haben: (N2556 vom 02.08.2020)
- Hauptartikel: C29 ?
- Nächste größere Überarbeitung des C-Sprachstandards
[bearbeiten] Siehe auch
| C++ Dokumentation für Geschichte von C++
|
[bearbeiten] Externe Links
| 1. | Die Entwicklung der C-Sprache von Dennis M. Ritchie |
| 2. | Begründung für den C99-Standard |