《深入理解计算机系统》

2018-07-16 19:38
科学中国人 2018年5期
关键词:计算机系统程序员编程

如果直譯原书名,这本书更应该被称为“以程序员的视角理解计算机系统”。它不是一本适合广泛阅读的科普读物,反倒比较适用于那些想要写出更快、更可靠程序的程序员。

在外界看来,阐述系统、C语言和汇编语言,该书必然是晦涩而深奥的。但其实不然,它是一本面向计算机专业初学者的好书,是顶尖学府大咖结合多年教学经验写出来的。作为一本入门级别的专业书,该书所谈内容并不深入,不会把某个话题挖掘得过于细节化,而往往能从浅显问题中一针见血地指出关键所在。通过掌握程序是如何映射到系统上,以及程序是如何执行的,阅读者能够更好地理解程序行为的发生及效率低下的原因。

全书的主要论题涵盖甚广,包括了数据表示、C程序的机器级表示、处理器结构、程序优化、网络编程和并发编程等。它们如何影响应用和系统程序员,在它们的作用下计算机如何设计和工作,操作系统包含哪些重点及其作用又是什么……这是作者想要极力表达清楚的。随着阅读的推进,透过程序员视角,读者能够清楚地明白:学习计算机系统的内部工作原理对计算机科学研究者和工程师的工作具有怎样的帮助,从而更有利于相关从业者为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。

以讲述数据表示为例,该书说明了能够近似地表示整数和实数的数字方法是有限的;而转换到有关高速缓存的叙述,该书讨论了矩阵代码中的循环变量顺序是如何影响程序性能的;在讨论网络互连时,该书描述了并发服务器如何能有效地处理来自多个客户端的请求……作为被众多专业人士称为“最伟大的计算机教材”之一的著作,《深入理解计算机系统》旨在解释计算机系统的所有本质概念,并向读者展示这些概念是如何实际地影响应用程序的正确性、性能和实用性。与其他主要针对系统构造人员的系统类书籍不同,该书更像是为软件和硬件之间搭起了一个桥梁,给出一种帮助读者分别从硬件和软件的角度去理解一个程序及其行为的途径,而这从某种程度上填补了国内计算机系统教学中的一项空白。

有人说,这本书最大优点在于覆盖面广泛、可以帮助读者充分理解概念。它能让读者很清楚地在脑海中构造一个层次型的计算机系统,从最低层数据在内存中的表示(如我们一直陌生的浮点数表示)到流水线指令的构成、虚拟存储器、编译系统、动态加载库,以及最后的用户应用。同时,它还能使读者对计算机系统各组件的工作方式有基本的理性认识,在一定程度上获得锻炼计算思维的方法。

书中提供了大量的例子、练习及部分答案,每一个基本概念都有相应的笔头或程序试验,对于加深读者印象及理解深有裨益。这也能够解释为什么它的英文原著久负盛名,被当做课程教材使用多年。

猜你喜欢
计算机系统程序员编程
数字中波广播发射机的关键技术要点和发展
2020年程序员依然很吃香
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
编程屋完成数百元万天使轮融资
学编程,先画画
程序员之子
计算机系统集成管理点滴谈
计算机组成与结构课程教学的探讨与实践
加班