关于计算机"科学"与"技术"的一点思考

Posted by Coink on April 24, 2017

最近疯狂的想去读一点大砖头经典书籍,《TCP/IP协议》三大坨买不起,就搁置了。剩下SICP ,CSAPP和 CLRS ,哦,还有被作为我校大一教材的编译原理——龙书(当然是中文译版。

其实我也不太清楚读这些书能给我带来什么好处——只是听说是经典,也便人云亦云了。但最近在啃SICP的时候,我仔细思考了一下“读这本书能给我带来什么好处?”,难倒仅仅是“拓展视野”吗?

SICP 我读的是 Lisp 版本,给我带来的最直观的感受就是:原来程序可以这样写!函数式的思维对于我这个好奇的大一新生来说的确非常新颖,但欣喜之余,细细回想,这跟学校所教授的课程似乎丝毫无关——经典书籍在教你什么是科学(Science),而学校的课程似乎更加偏向技术(Technology (or Skills))。

是的,你就算仔细阅读了这些比你年龄大上不少的不朽经典书籍,你也并不能快速做出一个静态 Web 网站——25个不同页面的那种(某课程期末大作业)。这根本就是两回事。

科学深入研究,解释事情的原理,而技术却不断封装打包,提高效率。——“你只要会用就足够了。”

回想一下大学所上过的课程,似乎每一门课都离不开框架和 IDE ,许多老师也只是教授着程序语言的基础语法,然后转向框架,从来不会深入探讨这些技术的意义以及相关,到了大二大三,许多人或是“帮助”老师,或是自己参加项目,大多数情况也是外包项目——一成不变的需求和一成不变的框架,这样当一个码畜真的能像他们所说那样“锻炼自己”吗?我是心存疑惑的。

国内大学很少有纯粹的CS专业,基本都是CST,也就是“计算机科学与技术”,而很多学校又把极大的侧重点安排在了这个T字身上,从我校大一就不顾学生基础而开始编译原理课程不难看出,其实学校是不重视这门课程的,我敢肯定,大一学生绝大多数听不懂老师在讲什么,就算听懂的,也只是停留在“会做习题”的阶段——你指望一群 栈 堆 都没听说过的学生去啃龙书研究编译原理?做梦呢。

所以结论很清晰了:想快速投入项目,掌握技术,就快速掌握脚本和框架,提高生产效率。虽然略显功利与浮躁,但不能否认是一条稳定而简单的道路;若是想修炼内功,钻研计算机科学,那就绕不开这些底层的经典。

当然,书是用来读的,而不是放在书架上,或是成天挂在嘴上,用以显示自己姿势水平之高的。——浏览了一圈自己的书架,自我反省一下。希望成年的自己,能控制住这颗浮躁的心吧。也希望这些经典,能让我发现一个更广阔的世界。