为什么要学习CSAPP
对于一个计算机专业的学生来说,《深入理解计算机系统》(Computer Systems A Programmer's Perspective,也就是大名鼎鼎的CSAPP)可谓是家喻户晓的神书之一。本书作为计算机系统顶级的入门读物,也是CMU镇校神课之一,能够加深我们对计算机的实现细节的了解,使我们脑中形成一个层次型的计算机系统。贯穿本书的主线是使程序员在设计程序的时候,明白执行程序时到底发生了什么,从而设计高效,可移植,robust的程序,更可以排错,优化程序性能。
笔记内容
我没有打算写一个全书内容的缩略版,只是单纯记录我在学习这本书所遇到的难以理解的地方,我自己的心得体会,以及一部分练习题目,8个lab我也会添加到这个系列文章中。
感想
本书被冠以神书,必读书等等名号,但是本质上,按照作者说的,只算是计算机系统这个领域的introduction,本书包含的东西很多,计算机组成,操作系统,编译原理,网络都涵盖其中,高屋建瓴地介绍了系统这一概念。想要真正深入其中的每个小模块都要花费更多的额外时间去阅读相关书籍,论文。
计算机有着工科的血统,知行合一才能有收获,单纯地看书,完成课后习题效果真的是非常差,不上手做一遍是永远不会理解其中的深意。我建议想要学习此书的朋友最起码要做那8个lab。虽然这样做要花费大量的时间,磨刀不误砍柴工,学知识要是学夹生了就没有任何用处,多花些时间还是值得的。
我的学习方法
有种说法是,知识不成体系就没有任何价值。在学习的时候,我会先看一遍每个chapter的preview,来大体上了解这一章所讲的内容,在阅读本章的时候,当看到不理解的内容的时候,一定要立刻去前面找相关的内容。
其他
我所看的版本是第二版,目前最新的是第三版,不过内容变化有限。新学习的朋友建议去买最新的,不过我这个博客的内容应该也是用的上的。