然而,既然计算机从数学和物理之中分离出来,成了一个独立的学科,总有它独到之处。那么这个独到之处是什么呢?我觉得不是数据结构,以数学系学生的离散数学知识,我们在数据结构上占不到什么便宜,也正是因为这个,才会有本文开头的那种论调。何况数据结构的复用是做得相当好的,很多人用着STL里的Map、.Net里的HashTable,很好的完成了自己的工作,却不用太注意那背后的红黑树、碰撞处理。
那么除了数据结构的知识之外,要成为一名合格的软件开发者,还需要具备什么样的知识呢?我觉得是面向对象技术和软件工程知识。这两项技术理应成为计算机系学生的优势。然而现实情况实在是令人沮丧。
大学里的课程开设,主干依然是围绕数据结构展开的,软件工程现在总算也是一门主干课程了,但重要性远不如数据结构的一系列课程。而面向对象技术往往只是软件工程课程中的一个章节,有所讲述也往往停留在面向对象技术初始阶段的理论,而完全无视近年的发展。当大家已经承认接口复用的意义,课堂上还在大讲代码复用。当大家已经都在用C++、C#编程的时候,课堂上还在大讲Goto语句的危害性。
面对这样的现实,有的只能是无奈...