什麼是 C 語言?
C 語言是**通用、過程式、靜態型別、編譯執行**的程式設計語言。由丹尼斯·里奇於 1972 年在貝爾實驗室為開發 UNIX 作業系統而設計。
名稱由來
源自前身語言 **BCPL** (Basic Combined Programming Language) 的第二個字母 **C**。演進:BCPL → B (Ken Thompson) → C (Dennis Ritchie)。
核心特點
| 特性 | 說明 |
| 高階與低階結合 | 提供結構化控制流、函數、資料類型(高階);同時支援指標、位元操作、直接記憶體存取、內嵌組語(低階) |
| 極簡關鍵字 | 僅 32 個關鍵字 (C89),核心語法精簡,編譯器易實現、移植性極強 |
| 靜態型別、編譯期檢查 | 變數型別編譯期確定,捕獲大類錯誤於編譯階段 |
| 手動記憶體管理 | malloc/free、棧/堆控制、無 GC,效能可預測、適合資源受限環境 |
| 標準化程度高 | C89/C99/C11/C18/C23 國際標準,跨平台一致性佳 |
| 生態系統龐大 | 作業系統核心、嵌入式、資料庫、編譯器、高效能計算、網路基礎設施幾乎皆由 C/C++ 構建 |
主要應用領域
- 作業系統核心:Linux, Windows NT, macOS XNU, FreeBSD, Android/Linux 核心
- 嵌入式系統:單片機 (STM32, ESP32), RTOS (FreeRTOS, Zephyr), 汽車電子, 工業控制, IoT 裝置
- 系統軟體/基礎設施:資料庫, Web 伺服器, 容器執行時, 編譯器/直譯器, 版本控制, 加密庫
- 高效能計算/科學計算:BLAS/LAPACK, TensorFlow/PyTorch 核心, 氣候模擬, 有限元分析
- 遊戲/圖形引擎:Unreal Engine, Unity 底層, 即時渲染管線
- 網路協議/安全:TCP/IP 堆疊, TLS/SSL 庫, 封包處理, 防火牆
為何 2024 年仍值得學 C?
- **理解計算機系統運作本質**:指標、記憶體佈局、呼叫慣例、連結載入、系統呼叫 — 所有高階語言最終皆映射至此。
2. **通往系統級/嵌入式/高效能領域的必經之路** — 這些領域招聘門檻多要求 C/C++。
3. **語言互通基石**:Python/Ruby/Node.js/Julia 等直譯器、擴充模組、FFI 皆以 C API 為橋樑。
4. **訓練嚴謹工程思維**:手動資源管理、未定義行為意識、邊界條件檢查、編譯器警告視為錯誤。
5. **長期投資回報率最高** — C 標準演進緩慢、向後相容極強,1989 年代碼今日多仍能編譯運行。
學習建議
**先懂「記憶體模型」再寫代碼**:變數在哪(棧/堆/靜態區/常數區)?指標指向誰?誰負責 free?生命週期何時結束?**畫記憶體圖**是練好 C 的最佳捷徑。