C 語言歷史
出自 cppreference.com
目錄 |
[編輯] 早期 C
- 1969 年:B 語言誕生,基於 BCPL,旨在取代 PDP-7 組合語言,作為 Unix 的系統程式語言
- 新增運算子 ++、--、複合指定運算,維持與 BCPL 一樣的無型別語言特性
- 1971 年:將 B 語言移植至 PDP-11 時,產生了 NB("new B")
- 型別(int、char、陣列與指標)、陣列轉指標轉換、編譯為機器碼
- 1972 年:語言更名為 C
- struct、運算子 && 與 ||、預處理器、可移植 I/O
- 1973 年:以 C 語言重寫 Unix
- unsigned、long、union、列舉(enumeration)、增強型別安全性
- 1978 年:《C 程式設計語言》第一版
[編輯] 標準 C
- 1983 年:ANSI 成立 X3J11 委員會
- 1988 年:《C 程式設計語言》第二版
- 1989 年:C89,ANSI C 標準發布
- 將現有的實作慣例標準化
- 新特性:volatile、enum、signed、void、本地化(locales)
- 來自 C++:const、函式原型(function prototypes)
- 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 的新增與變更等)
- 雙字母詞(digraphs)、<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、複合實字(compound literals)、變長陣列(VLA)、彈性陣列成員、指定初始化器、<fenv.h>、可變參數巨集、複數、__func__、十六進位浮點格式(%a)、lconv 中的貨幣格式化、isblank、窄字串與寬字串實字串接、列舉中的尾隨逗號、函式型巨集中的空白參數、STDC_* 雜注(pragmas)、va_copy、tmpnam 的空指標回傳、setvbuf 中的空指標、printf 中的
hh與ll長度限定符、snprintf、_Exit、<tgmath.h>、類 POSIX 的 strftime 限定符 - 來自 C++:inline、混合宣告與程式碼、for 迴圈初始化子句中的宣告、// 註解、原始碼中的通用字元名稱(universal character names)
- 移除隱含函式宣告與隱含的 int
- 2001 年:技術勘誤 1 (ISO/IEC 9899:1999/Cor.1:2001)
- 2004 年:技術勘誤 2 (ISO/IEC 9899:1999/Cor.2:2004)
- 2004 年:Unicode 技術報告 (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 年:邊界檢查介面技術報告 (ISO/IEC TR 24731-1:2007) (ISO 商店) (N1225 2007年3月28日草案)
- 2008 年:嵌入式技術報告 (ISO/IEC TR 18037:2008) (ISO 商店) (N1021 2003年9月24日草案)
- 2009 年:十進位浮點數技術報告 (ISO/IEC TR 24732:2009) (ISO 商店) (N1241 2007年7月5日草案)
- 2009 年:數學特殊函式技術報告 (ISO/IEC TR 24747:2009) (ISO 商店) (N1182 2006年8月2日草案)
- 2010 年:動態配置函式技術報告 (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
- 來自邊界檢查介面技術報告:邊界檢查介面、
- 來自 Unicode 技術報告:char16_t、char32_t 與 <uchar.h>
- 2012 年:技術勘誤 1 (ISO/IEC 9899:2011/Cor 1:2012) (ISO 商店)
- 修正 DR 411
- 2013 年:安全編碼規則技術規範 (ISO/IEC TS 17961:2013) (ISO 商店) (N1718 2013年5月30日)
- 2014 年:浮點數技術規範第 1 部分:二進位浮點算術 (ISO/IEC TS 18661-1:2014) (ISO 商店) (N1778 2013年草案)
- 提供對 C11 的變更(主要針對附錄 F),涵蓋 IEC 60559:2011 的所有基本要求與部分建議(C11 建構於 IEC 60559:1989 之上)
- 2015 年:浮點數技術規範第 2 部分:十進位浮點算術 (ISO/IEC TS 18661-2:2015) (ISO 商店) (N1912 2015年草案)
- 提供對 C11 的變更,以支援 IEC 60559:2011 中關於十進位浮點算術的所有要求與基本建議。此文件取代了 ISO/IEC TR 24732:2009。
- 2015 年:浮點數技術規範第 3 部分:交換與擴充型別 (ISO/IEC TS 18661-3:2015) (ISO 商店) (N1945 2015年草案)
- 提供對 C11 的變更,以支援 IEC 60559:2011 中關於擴充浮點格式與交換格式(算術與非算術)的建議。
- 2015 年:浮點數技術規範第 4 部分:補充函式 (ISO/IEC TS 18661-4:2015) (ISO 商店) (N1950 2015年草案)
- 提供對 C11 的變更,以支援 IEC 60559:2011 推薦的所有數學運算,包括 π 單位三角函式、平方根倒數、複利等。
- 2016 年:浮點數技術規範第 5 部分:補充屬性 (ISO/IEC TS 18661-5:2016) (ISO 商店) (N2004 2016年草案)
- 提供對 C11 的變更,以支援 IEC 60559:2011 推薦的所有補充屬性(評估模型、例外處理、可重現性等)。
- 2023 年 C23 (ISO/IEC 9899:2024)。C23 是目前的 C 語言標準版本。
| C23 修正的缺失報告(?項) |
|---|
[編輯] 未來發展
- 平行計算技術規範(草案 N2017 2016-03-10)
- 交易記憶體技術規範(草案 N1961 2015-09-23)
- C(最新草案 n3467 2025-02-09)
- 未獲得 DR 狀態的問題清單:(N2556 2020-08-02)
- 主文章:C29 ?
- 下一個主要的 C 語言標準修訂版
[編輯] 參見
| C++ 文件 關於 C++ 歷史
|
[編輯] 外部連結
| 1. | C 語言的發展,作者:Dennis M. Ritchie |
| 2. | C99 標準的基本原理 |