之前从事了 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++ 可能又会有些改动,因此重要性就往后一点。