今天看到Andrew Tanenbaum (minix的作者。读过CS的人应该不陌生吧)。在SIGCSE的计算机科学教育杰出贡献奖(Outstanding Constributions of Computer Science Education)上发言的文字材料。A.T在演说里提出十大计算机科学教育的十大准则:
![]() 准则4, 5, 7告诉我们深入了解系统工作原理的重要性。这就是为什么这本书 仍然是CS学生的必读。高德纳早也知道内外兼修的重要性,所以才会在《计算机编程的艺术》里雄辩地阐述了为什么他要用MMIX(一门他创造的汇编)来描速算法。 6和8颇有意思。A.T相当强调CS务实的一面。准则6的最佳注解是一句流行的引言:工程师为了创建而学习,科学家为了学习而创建(Engineers learn to build,. Scientists build to learn). 关于准则7的例子隐隐有理论如果不能刻划现实,就用处不大的意思。这个俺有保留意见。理论本来就是一个演化的过程。无数优秀理论都是由无数人改进不够完美的理论二来。最近重读Klaus Scheider的Verification of Reactive Systems第一章,形式化验证的家谱,就可以看出精彩的理论往往来自一系列向现实逼近的粗糙理论。何况当年看似粗糙的理论因为外界的变化也许就变得有吸引力了呢?这不是没有例子的。 准则10尤其重要。现在的电脑工业出了名的喜欢“重发现”当年的技术。虚拟机不是新鲜东西。垃圾处理不是新鲜东西。delegate不是新鲜东西。匿名函数不是新鲜东西。clsoure不是新鲜东西。OO不是新鲜东西。continuation不是新鲜东西。泛型不是新鲜东西。硬件的进步,软件开发技术的进步,以及理论的进步往往让当年被束之高阁的技术重见天日,再焕活力。所以了解历史绝对有助现实。Andy Kessler的力作How We Got Here(免费书,叙述及其精彩,强烈推荐哈)也可旁证以古为鉴的重要性。 |
|