首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言發展史:從 BCPL、B 到 C,再到 ANSI/ISO 標準化演進

     編輯:C 語言問答

C 語言祖先譜系

年份語言/里程碑關鍵人物貢獻
1967BCPL (Basic Combined Programming Language)Martin RichardsCPL 簡化版,無型別(字長單一型別),引入編譯器可移植性概念
1970BKen ThompsonBCPL 進一步簡化,用於 PDP-7,寫首版 Unix,無型別、字長運算
1972C (取 BCPL 第二字母)Dennis Ritchie在 B 基礎加入型別系統(char, int, float, 指標、陣列、結構體),為 PDP-11 重寫 Unix 核心
1973Unix 核心以 C 重寫Ritchie, Thompson證明高階語言可寫作業系統,開啟可移植系統新時代
1978K&R C 《The C Programming Language》出版Kernighan & Ritchie事實標準,定義「K&R C」,廣泛流傳
1983ANSI X3J11 委員會成立美國國家標準局著手制定正式標準
1989/1990C89 / C90 (ANSI C / ISO C)ANSI / ISO首個國際標準,函數原型、標準庫、void、const、locale 等
1999C99 (ISO/IEC 9899:1999)ISO// 註解、stdint.h、bool、VLA、restrict、inline、complex、指定初始化器
2011C11 (ISO/IEC 9899:2011)ISO_Alignas、_Atomic、_Generic、_Static_assert、_Thread_local、多執行緒、邊界檢查介面
2017/2018C17 / C18ISO修正 C11 錯誤,無新特性
2023/2024C23 (ISO/IEC 9899:2024)ISOtypeof、nullptr、[[attributes]]、_BitInt、_Decimal、constexpr、#embed、#warning、標頭檔 <stdckdint.h> 等

關鍵演進脈絡

  1. 型別系統的誕生:B 無型別 → C 引入 char/int/float/pointer/array/struct,這是 C 區別於前驅的核心創新。
  2. Unix 可移植性:C 語言為了讓 Unix 在不同硬體運行,設計了可移植編譯器(PCC),確立「高階語言寫系統軟體」範式。
  3. 標準化進程:K&R 事實標準 → ANSI C89 正式標準 → ISO 接管 → C99/C11/C17/C23 定期更新,保證跨平台、跨編譯器一致性。
  4. 現代編譯器生態:GCC、Clang、MSVC、ICC 等嚴格遵循標準,提供豐富擴充(GNU C、C23 預支援),推動 C 語言持續演進。

為何 C 語言至今仍是系統程式王者?

  • 零開銷抽象:語言特性直接映射硬體指令,無隱含執行時負擔。
  • 完全控制記憶體:指標、手動配置、對齊、位元操作、MMIO——系統軟體必需。
  • 極簡執行時:啟動極快、體積極小、可在裸機、啟動載入器、核心空間運行。
  • ABI 穩定:C 介面是跨語言、跨編譯器、跨作業系統的通用契約。
  • 龐大生態:作業系統核心、資料庫、瀏覽器引擎、嵌入式韌體、高效能計算、密碼學庫皆以 C 為核心。

現代 C 開發者應知的標準版本選擇

標準編譯器支援建議場景
C90 (C89)全編譯器完美支援極舊平台、嵌入式舊工具鏈、MISRA C 合規
C99GCC/Clang 完整,MSVC 部分通用現代專案,stdint.h、bool、VLA、指定初始化器
C11GCC/Clang 完整,MSVC 大部分需多執行緒、原子操作、泛型選擇、靜態斷言
C17/C18同 C11穩定生產環境,修正 C11 Bug
C23GCC 13+、Clang 16+、MSVC 部分新專案、現代特性(typeof、nullptr、屬性、位元精確整數)

建議:新專案預設 -std=c17 或 -std=c23(若工具鏈支援),嵌入式舊專案維持 C90/C99。

總結

C 語言從 BCPL → B → C 的演進,核心在於 引入靜態型別系統 並為 Unix 可移植性 而設計。經過四十多年標準化沉澱,C 語言以 極簡核心、硬體直映、零開銷、ABI 通用 的特性,持續佔據系統程式設計的核心地位。理解這段歷史,有助於把握 C 語言設計哲學與現代最佳實踐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved