| 年份 | 語言/里程碑 | 關鍵人物 | 貢獻 |
|---|---|---|---|
| 1967 | BCPL (Basic Combined Programming Language) | Martin Richards | CPL 簡化版,無型別(字長單一型別),引入編譯器可移植性概念 |
| 1970 | B | Ken Thompson | BCPL 進一步簡化,用於 PDP-7,寫首版 Unix,無型別、字長運算 |
| 1972 | C (取 BCPL 第二字母) | Dennis Ritchie | 在 B 基礎加入型別系統(char, int, float, 指標、陣列、結構體),為 PDP-11 重寫 Unix 核心 |
| 1973 | Unix 核心以 C 重寫 | Ritchie, Thompson | 證明高階語言可寫作業系統,開啟可移植系統新時代 |
| 1978 | K&R C 《The C Programming Language》出版 | Kernighan & Ritchie | 事實標準,定義「K&R C」,廣泛流傳 |
| 1983 | ANSI X3J11 委員會成立 | 美國國家標準局 | 著手制定正式標準 |
| 1989/1990 | C89 / C90 (ANSI C / ISO C) | ANSI / ISO | 首個國際標準,函數原型、標準庫、void、const、locale 等 |
| 1999 | C99 (ISO/IEC 9899:1999) | ISO | // 註解、stdint.h、bool、VLA、restrict、inline、complex、指定初始化器 |
| 2011 | C11 (ISO/IEC 9899:2011) | ISO | _Alignas、_Atomic、_Generic、_Static_assert、_Thread_local、多執行緒、邊界檢查介面 |
| 2017/2018 | C17 / C18 | ISO | 修正 C11 錯誤,無新特性 |
| 2023/2024 | C23 (ISO/IEC 9899:2024) | ISO | typeof、nullptr、[[attributes]]、_BitInt、_Decimal、constexpr、#embed、#warning、標頭檔 <stdckdint.h> 等 |
char/int/float/pointer/array/struct,這是 C 區別於前驅的核心創新。| 標準 | 編譯器支援 | 建議場景 |
|---|---|---|
| C90 (C89) | 全編譯器完美支援 | 極舊平台、嵌入式舊工具鏈、MISRA C 合規 |
| C99 | GCC/Clang 完整,MSVC 部分 | 通用現代專案,stdint.h、bool、VLA、指定初始化器 |
| C11 | GCC/Clang 完整,MSVC 大部分 | 需多執行緒、原子操作、泛型選擇、靜態斷言 |
| C17/C18 | 同 C11 | 穩定生產環境,修正 C11 Bug |
| C23 | GCC 13+、Clang 16+、MSVC 部分 | 新專案、現代特性(typeof、nullptr、屬性、位元精確整數) |
建議:新專案預設 -std=c17 或 -std=c23(若工具鏈支援),嵌入式舊專案維持 C90/C99。
C 語言從 BCPL → B → C 的演進,核心在於 引入靜態型別系統 並為 Unix 可移植性 而設計。經過四十多年標準化沉澱,C 語言以 極簡核心、硬體直映、零開銷、ABI 通用 的特性,持續佔據系統程式設計的核心地位。理解這段歷史,有助於把握 C 語言設計哲學與現代最佳實踐。