之前從事了 C/C++ 相關基礎課程的教學大概有五六年,
接觸到大部分都是有心想學但是非本科系的學生。
如果你只是想學一個程式語言,我覺得 C/C++ 不是個好選擇。
如果你不知道為什麼想徹底的學會 C/C++,建議的曲線大概是:
[C 語言]
* 計算機概論
- 基礎知識, 主要是對於電腦結構運作抽象化、資料數位化以及運算有基礎認識
- 通常會帶一點編譯器和作業系統的觀念
* C 語言程式基礎
- 學會自己看懂標準函式庫的文件並可自由應用為目標
* C 語言程式進階
- 這階段就是學習怎麼學會使用第三方函式庫, 例如 SDL, OpenGL, OpenCV, GTK+
之類, 應該牽涉到比較進階的概念跟使用慣例, 例如 C 風格封裝、函式指標與位
元運算
* 演算法和資料結構以 C 語言實作
- 我覺得演算法不太應該跟資料結構分開學
- 語言方面主要是加強遞迴使用、指標和動態記憶體配置的概念
[C++ 語言]
* 計算機概論
- 所需要的基礎可以比 C 語言再少一點,因為有更強大的標準庫。
* C++ 語言中與 C 較接近的部分
- 雖然我相信很多人會覺得應該直接學 C++ 風格的設計,
但是教學實務上我還是覺得有很大的困難。
同時我也信奉 C 風格設計是 C++ 使用上的一種可能,
要透徹了解 C++ 在 "目前" 我覺得了解 C 跟 C++ 的差異還是有必要。
* 基於物件的 C++ 程式設計
- 主要學 C++ 風格封裝。
* C++ 與物件導向
- 主要學物件導向的語法,建議是實作某些大型系統,例如 GUI。
* 設計模式與 C++ 程式設計
- 主要學物件導向在實務系統上的應用
* C++ 泛型程式設計
- 用 C++ 實作資料結構 (泛型容器) 跟泛型演算法
- 之前的教學經驗就是直接自己實作 STL
* 其他學不完的東西
- 例如例外之類的,但是實務上重要性目前還是不夠高,這類的東西在
之後的 C++ 可能又會有些改動,因此重要性就往後一點。