前言:學程式語言的終極目的是什麼?
「我們學習語言,不是為了成為語言專家,而是為了成為解決問題的專家。」價值體現在客戶價值,而非程式碼多漂亮。帶著這個心法,以下五階段路徑助你少走彎路。
第一階段:先學 C——走穩再跑
- C++ 是 C 的物件導向延伸,但函數內部邏輯仍是面向過程的 C 風格。
- 先掌握 C 的指標、記憶體管理、結構化程式設計,打穩「解決小問題」的基礎,再談「組織大系統」。
- 建議教材:《C 程式設計語言》(K&R)、《C 專家編程》。
第二階段:在 C 中體會結構化設計精髓
- 軟體工程核心:高內聚、低耦合、模組化、資料私有化。
- C 的
static 全域變數、.c 內部函數、.h 只暴露介面,正是模組化、資訊隱藏的雛形。
- 養成習慣:預設用
static 限制連結範圍,只在 .h 宣告對外介面。
第三階段:進入 C++——物件導向其實是結構化的編譯器強制版
class = struct + 封裝 + 存取控制(private/public)。
- 若你在 C 中已習慣「
.c 內部靜態變數 + .h 只公開函數原型」,那你已理解 class 80% 的精神。
- 重點掌握:建構/解構函數(RAII)、複製/移動語意、
this 指標、虛函數表機制。
第四階段:深入 C++ 進階特性——其實都很直觀
| 特性 | 一句話心法 |
| 模板 | 「類別的類別」,編譯期產生型別安全的程式碼族群 |
| STL | 一大堆現成的「類別的類別」,容器+演算法+迭代器,別重造輪子 |
| 泛型程式設計 | 演算法骨架固定,資料型別參數化,sort 一寫適用所有可比較型別 |
| 智慧指標 | RAII 管理動態記憶體,unique_ptr/shared_ptr 讓 delete 隱形 |
| Lambda/標準庫算法 | 內嵌行為參數化,配合 algorithm 標頭寫出聲明式程式碼 |
學到這裡,C++ 語法層面已無盲區。再鑽牛角尖(如模板元編程邊緣案例)投資報酬率極低,除非你在寫標準庫或編譯器。
第五階段:應用開發——語言只是工具,平台與領域知識才是核心
- 選平台:Windows 桌面 → Visual C++ / MFC / Qt;Linux 伺服器 → GCC/Clang + CMake + POSIX;嵌入式 → 交叉編譯工具鏈 + RTOS/裸機。
- 選框架/庫:不要一上來就學 MFC/Qt。先搞懂作業系統 API(Win32 / Linux system call)、網路協定、資料庫、執行緒同步、序列化……框架只是把這些包裝起來。
- 實戰專案:從「客戶需求」反推「技術選型」,不會的語言/庫現學現用。這才是商業程式設計師的核心競爭力。
給初學者的三句話
- 別被 VC、BCB、Qt、CMake 等工具名嚇倒——它們只是 IDE/建置工具,核心語言只有一個。
- 浮躁時告訴自己:「別問、學就對了;都好、只要你學就行。」
- 程式設計秘訣只有三個字:寫、寫、再寫。