身为一名码农程序员,有这么一本书,恐怕是在成为一名合格的程序员之前必读的了。

《深入理解计算机系统》

这是机械工业出版社计算机“黑皮书”系列中最著名的一本。

但是这本书在出版到国内的时候,书名被翻译为“深入理解计算机系统”。

我在读完书后觉得现在的书名不太恰当,可能作为这本书的一句话概括更合适。

它的原书名是“Computer Systems: A Programmer’s Perspective”,直译过来的意思就是:“计算机系统:一个程序员的视角”。所以我后面就叫它的简称 CSAPP 好了。


说来惭愧,第一次听说 CSAPP 的时候,我已经是大学三年级期末,那时在忙着参加研究生推免的笔试和面试。

在参加南京大学推免线上考试的时候,我遇到了非常多关于 Linux 操作系统的题目,尤其是 Linux 操作系统编程相关的题,甚至会被提问例如 execve() 这个系统调用的哪个(些)参数可以从原进程传递信息到新进程。

笔试不出所料的没有通过,不过这些都是题外话了。

没想到,大学同专业的一个同学也参加了这场笔试,考完之后,我和他交流了一会。

他提到在这个笔试题目里面,有非常多从 CSAPP 书本课后习题中改编或者是按照书本所讲内容提炼出的题目。他做题的时候书中知识的回忆在脑海里不断浮现。

可惜对于我这个连书本都没摸过多少的懒虫来说,做那些题的时候是当然是大脑空白。

这也是我第一次听说 CSAPP 这本书。


正是因为这次失败的经历,我的心中萌生出了想法,觉得是得去读读这本书了。毕竟,身边已经有同学冲在前面。

为了迫使自己去读,我还买了正版的实体书,拿到手里的时候着实给吓了一跳,原来这本书那么厚。

大学四年级之后我的空余时间多了起来,利用那段时间读完了这本书。

我自己的感受是:真的想拍自己一巴掌,那么优秀的书没有早点去读。

以至于后来在公司和同事交流的时候,他们也说:这本书不是每个计算机专业、程序员必读的吗?

网络上面已经有太多太多关于这本书的评价,而我也不想写太多了。

总之,我给这篇文章的读者们建议:

在学完至少一门编程语言之后,读完这本书,计算机世界就等你来创造了。


然而,更让我关注的不是这本书本身,而是这本书背后的一些事情,这些恐怕是连 CSAPP 的读者们可能都没有关注到的。

这本书是书的作者们所在的大学——卡内基·梅隆大学的一门课程 CMU 15-213/14-513/15-513 的教材。为了完成这门课程,学生在整个课时内是得读完这本书的。

CMU 15-213 配套有几个课程实验 lab,CSAPP 书本中也有提到可以去网站上下载配套的作业和实验。

最开始,我读 CSAPP 的时候并不知道有这些课程实验,更不知道有 CMU 15-213。

后来,我在网络上收集国外大学著名计算机专业公开课,机缘巧合找到并观看了 CMU 15-213 在 2015 年录制的课程。看完课程才知道有这些课程实验。


起初,我是计划在大学毕业之前去动手做做这些实验的,但因为种种原因,一直到入职工作以后才在周末抽出时间去做。

各个实验确实让我印象深刻,每一个 lab 都有自己的特色。它们是一定要动脑筋思考 + 动手动手动手才能完成的。

尽管这些 lab 还远远没有达到工业可用的程度,但确实是一名学生在成为程序员之前所应该涉猎过、做过,应具备的基础。

正如前面所说,这些实验有如此特色,其本质展现出来的是国外的优秀大学是如何培养计算机专业人才的。

通过精心设计,千锤百炼而使用多年的实验(再和课程绩点挂钩 ¯\_(ツ)_/¯)去 push 学生独立思考和动手,完成一个实验,甚至是一个项目。

计算机专业是一个非常注重工程实践的学科哇,是一定要动手的!

不同于很多人喜欢的 Bomb lab 拆炸弹,最让我印象深刻的实验是 Attack lab。

在这个实验中,教授的设计分为五个阶段,每个阶段在这个实验所占的比分权重以及如何评分都有详细说明。

教授在实验文档里第五阶段的附加说明有提到:

“在动手完成第五阶段前,你可以回顾一下之前的结果。你已经拿到了这个实验的95/100分,这是一个不错的分数了。第五阶段只占5分,可以把这个阶段考虑为给那些希望加分来拿到比平常更高课程分数的同学。“

也就是说,教授是坦然开放地和同学们提议这个阶段可能费力不讨好,更多是建议给那些希望冲刺和突破的同学去准备的,来拿到一个更高的绩点。

我作为一名被应试教育做题家思想蹂躏的中国学生,看到这一段说明的时候确实让我感触良多。

老师、教授愿意主动直白地告诉他的学生们这里有一份机会,路途可能艰难,成果也不一定理想,但这份机会是平等的公开的。我现在把告诉你,你可以选择不走这条路,但如果你选了,只要你有努力,收益是绝对会有的。

大学毕业之后,尽管我曾是国内大学的计算机专业学子之一,如今也入职了国内著名的互联网公司。但可惜,我的感受是,国内的计算机教育和人才培养之路,还有好长好长一段路要走哇……


动手做完 CMU 15-213 的课程实验是我大学毕业前未能完成的一件事情,我没有预料到这段经历会给我如此收获和影响。
这也让我对国外的大学更加憧憬,为完成那个计划更添一份信心和动力。

分类: 闲暇时光

1 条评论

石樱灯笼 · 2023年1月30日 下午5:11

Firefox 109.0 Firefox 109.0 GNU/Linux x64 GNU/Linux x64

买过,没读完,送人了。

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注


The reCAPTCHA verification period has expired. Please reload the page.