Cの歴史
From cppreference.com
目次 |
[編集] 初期の C
- 1969年: BCPL をベースとした B が作成され、Unix のシステムプログラミング言語として PDP-7 アセンブラを置き換える。
- 演算子 ++, --,複合代入演算子が追加され、BCPL のような型のない言語のままだった。
- 1971年: B を PDP-11 に移植する際に NB ("new B") が作成される。
- 型 ( int, char, 配列およびポインタ)、配列からポインタへの変換、機械語へのコンパイル。
- 1972年: 言語名が C に変更される。
- struct, 演算子 && および ||,プリプロセッサ,ポータブル I/O。
- 1973年: Unix が C で再書き込みされる。
- unsigned, long, union, 列挙型, 型安全性の向上。
- 1978年: 『The C Programming Language』第1版発行。
[編集] 標準 C
- 1983年: ANSI が X3J11 委員会を設立。
- 1988年: 『The C Programming Language』第2版発行。
- 1989年: **C89**、ANSI C 標準が発行される。
- 既存の実践を成文化。
- 新機能: volatile, enum, signed, void, ロケール。
- C++ より: const, 関数プロトタイプ。
- 1990年: **C90**、ANSI C 標準が ISO/IEC 9899:1990 として採択される。
- 1994年: 技術訂正 1 (ISO/IEC 9899:1990/Cor.1:1994)。
- 1995年: **C95** (ISO/IEC 9899:1990/Amd.1:1995) (オンラインストア)。
- ワイド文字およびマルチバイト文字のサポートが大幅に拡張される (<wctype.h>, <wchar.h>, ストリーム I/O の追加および変更など)。
- ダイグラフ, <iso646.h>。
- 1996年: 技術訂正 2 (ISO/IEC 9899:1990/Cor.2:1996)。
- 1999年: **C99** (ISO/IEC 9899:1999)。
- 新機能: bool, long long, <stdint.h>, <inttypes.h>, restrict, 複合リテラル, 可変長配列, フレキシブル配列メンバー, 初期化子指定, <fenv.h>, 可変引数マクロ, 複素数, __func__, 16進浮動小数点形式 (%a), lconv における通貨フォーマット, isblank, 文字列リテラル (ナローおよびワイド) の連結, 列挙型における末尾カンマ, 関数ライクマクロにおける空引数, STDC_* プラグマ, va_copy, tmpnam のヌル返り値, setvbuf におけるヌルポインタ, printf, snprintf における `hh` および `ll` 長さ指定子, _Exit, <tgmath.h>, POSIX ライクな strftime 指定子。
- C++ より: inline, 宣言とコードの混在, for ループの初期化節での宣言, // コメント, ソースコードにおけるユニバーサル文字名。
- 暗黙の関数と暗黙の int が削除された。
- 2001年: 技術訂正 1 (ISO/IEC 9899:1999/Cor.1:2001)。
- 2004年: 技術訂正 2 (ISO/IEC 9899:1999/Cor.2:2004)。
- 2004年: Unicode TR (ISO/IEC TR 19769:2004) (ISO ストア) (N1040 2003年11月7日ドラフト)。
- 2007年: 技術訂正 3 (ISO/IEC 9899:1999/Cor.3:2007) (N1256 2007年9月7日ドラフト)。
- gets が非推奨となった。
- 2007年: Bounds-checking interfaces TR (ISO/IEC TR 24731-1:2007) (ISO ストア) (N1225 2007年3月28日ドラフト)。
- 2008年: Embedded TR (ISO/IEC TR 18037:2008) (ISO ストア) (N1021 2003年9月24日ドラフト)。
- 2009年: Decimal floating-point TR (ISO/IEC TR 24732:2009) (ISO ストア) (N1241 2007年7月5日ドラフト)。
- 2009年: Mathematical special functions TR (ISO/IEC TR 24747:2009) (ISO ストア) (N1182 2006年8月2日ドラフト)。
- 2010年: Dynamic allocations functions TR (ISO/IEC TR 24731-2:2010) (ISO ストア) (N1388 2009年6月1日ドラフト)。
- 2011年: **C11** (ISO/IEC 9899:2011) (ISO ストア) (ANSI ストア) (N1570 2011年4月12日ドラフト)。
- スレッド対応メモリモデル, <stdatomic.h>, <threads.h>, 型ジェネリック関数, alignas/alignof, noreturn, static_assert, 解析性拡張, 複素数型および虚数型への拡張, 無名構造体および無名共用体, 排他的ファイルオープンモード, quick_exit。
- gets が削除された。
- Bounds-checking interfaces TR より: バウンズチェックインターフェイス,
- Unicode TR より: char16_t, char32_t, および <uchar.h>。
- 2012年: 技術訂正 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO ストア)。
- DR 411 を修正。
- 2013年: Secure Coding Rules TS (ISO/IEC TS 17961:2013) (ISO ストア) (N1718 2013年5月30日)。
- 2014年: FP TS part 1: Binary floating-point arithmetic (ISO/IEC TS 18661-1:2014) (ISO ストア) (N1778 2013年ドラフト)。
- C11 への変更を提供 (主に付録 F)。IEC 60559:2011 のすべての基本要件および一部の推奨事項をカバー (C11 は IEC 60559:1989 をベースとしていた)。
- 2015年: FP TS part 2: Decimal floating-point arithmetic (ISO/IEC TS 18661-2:2015) (ISO ストア) (N1912 2015年ドラフト)。
- C11 への変更を提供し、10進浮動小数点演算に関する IEC 60559:2011 のすべての要件および一部の基本推奨事項をサポートする。これは ISO/IEC TR 24732:2009 に取って代わる。
- 2015年: FP TS part 3: Interchange and extended types (ISO/IEC TS 18661-3:2015) (ISO ストア) (N1945 2015年ドラフト)。
- C11 への変更を提供し、拡張浮動小数点形式および交換形式 (演算および非演算) に関する IEC 60559:2011 の推奨事項をサポートする。
- C11 への変更を提供し、IEC 60559:2011 で推奨されているすべての数学的演算 (π単位の三角法、逆平方根、複利計算など) をサポートする。
- 2016年: FP TS part 5: Supplementary attributes (ISO/IEC TS 18661-5:2016) (ISO ストア) (N2004 2016年ドラフト)。
- C11 への変更を提供し、IEC 60559:2011 で推奨されているすべての補足属性 (評価モデル、例外処理、再現性など) をサポートする。
- 2023年 **C23** (ISO/IEC 9899:2024)。C23 は C 標準の最新改訂版です。
| C23 で修正された欠陥報告 (?件) |
|---|
[編集] 将来の発展
- Parallelism TS (ドラフト N2017 2016-03-10)
- Transactional Memory TS (ドラフト N1961 2015-09-23)
- **C** (最新ドラフト n3467 2025-02-09)
- DR ステータスが付与されなかった問題のリスト: (N2556 2020-08-02)
- メイン記事: C29 ?
- 次の主要な C 言語標準改訂版。
[編集] 関連項目
| C++ ドキュメント は C++ の歴史 について。
|
[編集] 外部リンク
| 1. | Dennis M. Ritchie による 「C 言語の開発」。 |
| 2. | C99 標準の根拠。 |