合多年教学经验而写出来的。
cmu把这本书作为“introductiontoputersystem”课程的教材,是面向计算机专业低年级学生的“计算机系统介绍(导论)”,可能这些学生只是刚刚了解如何使用一门高级语言——如java进行编程,对于计算机系统的工作方式等话题可谓一点都没有接触过,而《putersystems:aprogrammer’sperspective》对读者的背景也只要求是“一些编程经验”而已。
这本书的话题覆盖面很广,从计算机的基本组成,二进制数据表示方式,到机器级别的指令,cpu工作方式,存储结构和优化,操作系统的虚拟内存管理,程序运行方式,i/o,网络、到(较底层)程序性能优化和并行程序开发等等。所以,它其实覆盖了“计算机组成原理”,“操作系统”等许多课程的内容,其中的许多话题都能再次展开,继续深入,都能再变成一本,甚至n本经典。事实上,在高年级的计算机专业课程设置中,都会有更加纵向的内容出现。
因此,如果有人说它“底层”,章杉同意。
但如果说它“深入”,至少章杉不那么赞同。
“覆盖面广”,其实就是这本书的最大优点。它告诉我们计算机是如何设计和工作的,操作系统有哪些重点,它们的作用又是什么。《putersystems:aprogrammer’sperspective》的目标其实便是要讲清楚原理,但并不会把某个话题挖掘地过于深入,过于细节。例如书中第4章使用了自己“设计”和“实现”的“y86”处理器架构,便是为了简化x86指令集,使课本内容在能够说明问题的前提下也不至于太复杂。因此,读完(其实也并不一定要读完,说实话章杉也没有读完)这本书后,我们就可以对计算机系统各组件的工作方式有了理性的认识。
那么,这本书适合什么人阅读呢?对于这个问题章杉也有过犹豫。
章杉对《putersystems:aprogrammer’sperspective》推崇备至。
无论是本科生还是打算新上手编程实战的程序员都能从这本书有所收获。
即便你是一个前端javascript程序员,也可以从《putersystems:aprogrammer’sperspective》这本书中获益。如果您是.net程序员,那么您更加适合看这本书了。
说一句“豪情万丈”的话:如果不知道xx,yy或zz的话,这如何算是一个优秀的程序员?
这本书和平时的工作可能的确不一样,相比起来“底层”了一些,但是它还是会把“底层内容”控制在一定深度之内,而不会讲某个具体话题挖掘到“事倍功半”的程度。而事实上,虽然在进行.net开发的时候我们已经在一个较高的抽象上工作了,但是我们的程序还