Namensräume
Varianten
Aktionen

Geschichte von C

Von cppreference.com
< c‎ | Sprache

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
  1. bestehende Praktiken kodifiziert
  2. neue Funktionen: volatile, enum, signed, void, Locales
  3. 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)
  1. erweiterte Unterstützung für breite und multibyte Zeichen (<wctype.h>, <wchar.h>, Ergänzungen und Änderungen an Stream-E/A usw.)
  2. Digraphen, <iso646.h>,
  • 1996: Technisches Korrigendum 2 (ISO/IEC 9899:1990/Cor.2:1996)
  • 1999: C99 (ISO/IEC 9899:1999)
  1. 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, hh und ll Längenspezifizierer in printf, snprintf, _Exit, <tgmath.h>, POSIX-ähnliche strftime-Spezifizierer
  2. von C++ übernommen: inline, Mischung von Deklarationen und Code, Deklarationen in der Initialisierungsklausel der for-Schleife, // Kommentare, universelle Zeichen Namen im Quellcode
  3. 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)
  • 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)
  1. 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
  2. entfernte gets
  3. aus Bounds-checking interfaces TR: Bounds-checking interfaces,
  4. aus Unicode TR: char16_t, char32_t und <uchar.h>
  • 2012: Technisches Korrigendum 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO-Shop)
  • 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)
  1. 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)
  1. 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)
  1. 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)
  1. 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)
  1. enthält Änderungen an C11 zur Unterstützung aller von IEC 60559:2011 empfohlenen zusätzlichen Attribute (Auswertungsmodell, Ausnahmebehandlung, Reproduzierbarkeit usw.)
Hauptartikel: C17
In C17 behobene Fehlerberichte (54 Fehler)
  • 2023 C23 (ISO/IEC 9899:2024). C23 ist die aktuelle Überarbeitung des C-Standards.
Hauptartikel: C23
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)
  1. 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