先問自己:學 C 是為了什麼?
| 目標 | 建議下一步 | 核心理由 |
| 就業:企業級應用/後端/微服務 | Java / C# / Go | 生態成熟、招聘需求大、GC 免除記憶體管理負擔 |
| 就業:系統/嵌入式/高效能/遊戲引擎 | C++ / Rust | 零開銷抽象、記憶體安全、硬體親和力 |
| 考研/學術/編譯器/作業系統研究 | C++ → 作業系統原理 → 編譯原理 | 奠定系統軟體理論基石 |
| 全端/前端/快速原型 | JavaScript/TypeScript + Node.js | 全棧統一語言、生態最豐 |
| 資料科學/AI/腳本自動化 | Python | 科學計算生態霸主、語法簡潔 |
| 純粹提升程式內功 | C++ → 資料結構/演算法 → 《計算機程式的構造與解釋》(SICP) | 重塑抽象思維、理解計算本質 |
通用必修:無論去哪,都要補齊
- 資料結構與演算法(用 C/C++ 實作):鏈表、樹、圖、排序、動態規劃——面試與解決複雜問題的通用貨幣。
- 作業系統核心概念:程序/執行緒、虛擬記憶體、檔案系統、同步原語、系統呼叫。
- 計算機網路:TCP/IP、HTTP、DNS、TLS、Socket 程式設計。
- 版本控制與工程化:Git、CMake/Make、CI/CD、單元測試、Code Review 流程。
- 一門腳本語言:Python/Shell/Perl —— 自動化構建、測試、部署、資料處理。
C → C++ 過渡關鍵點
- RAII:建構子/解構子管理資源(鎖、檔案、記憶體、Socket)。
- 標準庫容器/演算法:`vector`、`string`、`map`、`unique_ptr`、`algorithm`。
- 模板與泛型程式設計、概念。
- 物件模型:虛函式表、多重繼承、物件切割、菱形繼承。
- 現代 C++ (C++11/14/17/20):**棄用舊式 C 風格**(裸指標、宏、手動 new/delete)。
避坑指南
「學完 C 直接學 Java/C# 就不用管記憶體了」
錯!GC 只管記憶體,**不管資源**(檔案控制代碼、資料庫連線、執行緒、GPU 顯存)。不懂 RAII/try-with-resources/using 照樣洩漏。C 的手動管理訓練正是養成「資源獲取即初始化」直覺的最佳途徑。
給迷茫者的極簡建議
- 先把《C Primer Plus》啃完、習題做 80% 以上。
- 用 C 寫一個完整小專案(如:簡易 HTTP Server、記憶體分配器、解釋器)。
- 同時開始刷 LeetCode Hot 100(C/C++ 實作)。
- 根據就業意向,挑**一條**主線語言深入(C++/Java/Go/Rust),其餘按需涉獵。
技術棧無終點,核心能力可遷移。C 給你的底層視角,將伴隨你整個職業生涯。