| 階段 | 零基礎入門者 | 有其他語言經驗者 |
|---|---|---|
| 第一階段 (1-2個月) | • 32關鍵字、基本語法、型別、運算子 • 三大結構 (順序/選擇/迴路) 靈活組合 • 陣列、字串、函式、遞歸基礎 • 編譯器 (GCC/Clang/MSVC) 基本操作、除錯器 (GDB/VS) 基本斷點/單步/變數檢視 • 完成:學生管理系統 (檔案存儲、增刪改查、排序、統計) | • 快速掃描語法差異 (指標、手動記憶體、無 GC、編譯鏈結、頭檔、宏、未定義行為) • 重點攻克:指標算術、多級指標、函式指標、動態記憶體、結構體對齊、位域、變參函式 • 熟悉建構工具 (CMake/Make/Ninja)、靜態分析、Sanitizer |
| 第二階段 (2-4個月) | • 指標與記憶體模型徹底理解 (畫圖、GDB 觀察棧/堆/數據段) • 資料結構 C 實現:單/雙向鏈結串列、棧/佇列、二叉樹 (BST/AVL)、哈希表、堆、圖 (鄰接表) • 排序/查找演算法手寫:快排、合併排序、堆排序、基數排序、二分查找、BFS/DFS、Dijkstra • 檔案 IO 精通:二進制/文字、隨機存取、格式化、大檔案分塊 • 完成:簡易 Shell (管道、重導向、作業控制) 或 HTTP 靜態檔案伺服器 (epoll/kqueue) | • 現代 C (C11/C17/C23) 新特性:` • 並發程式設計:執行緒建立/連接/分離、互斥鎖/條件變數/讀寫鎖、原子操作、無鎖資料結構 (環形緩衝區、MPSC 佇列) • 系統程式介面:檔案描述符、非阻塞 IO、epoll/kqueue/IOCP、信號處理、進程間通訊 (管道/Unix Domain Socket/共享記憶體/訊號量) • 完成:高併發 TCP 伺服器 (Reactor/Proactor) 或 簡易資料庫存儲引擎 (B+樹 + WAL) |
| 第三階段 (持續) | • 計算機系統理論 (CSAPP) 同步推進 • 開源專案閱讀/貢獻 (Redis/Nginx/SQLite/Linux Kernel/musl libc) • 領域深耕:嵌入式 (裸機/RTOS/驅動)、遊戲引擎 (渲染/物理/AI)、高頻交易 (無鎖/核心繞過)、編譯器 (LLVM/GCC 前端/後端)、安全 (逆向/漏洞挖掘/加密庫) | • 架構設計:模組劃分、介面契約 (ABI 穩定)、插件系統、熱更新、可觀測性 (日誌/指標/追蹤) • 效能工程:Profiling (perf/VTune/Instruments)、火焰圖、快取友好、SIMD 向量化、編譯器優化 (`-O2/-O3 -march=native`) • 技術輸出:技術博客、開源庫維護、會議分享、導師帶徒 |