最近看完了《编码》这本书,大呼过瘾。第一次看这本书的时候,一晚上就看了100多页,难以自拔(当然也是因为前面大部分都是作者放慢速度在引导,以及本身已经拥有了计算机的基础知识)。

编码.png

这本书的书名是编码,但是书里实际讲述的不是狭义的ASCII、Unicode之类的字符编码,这其实是一本讲述计算机的底层工作原理的书。作为一个计算机专业的学生,虽然学过了数电和计算机组成原理,但是其实心里对于计算机的底层原理有很多疑惑,如果让我讲一下怎么从逻辑门构建起一个最初级的计算机系统,恐怕我说不出几句来。

本书的作者Charles Petzold确实是个好人,在写了厚厚的《Windows程序设计》之后,还惦记着我们这些初学者,用生动简洁的语言,为我们编写了这本趣味版的数字电子电路,帮我们理解计算机的基本运行原理。

这本书的内容,除了对于二级制、字节、十六进制、ASCII编码、定点浮点数之类的理论之外,基本上就是从零开始,用灯泡、导线、继电器,经过巧妙的组装,构建出一台电子计算机。听起来很令人诧异,但这就是人类计算机发展的历程。作者带着我们重新从头回顾了这段历史,让我们一方面惊叹于前人的智慧,能够从如此简单的部件开始,一点一点构建出更为复杂的组件,最终组成一台电子计算机;另一方面,作者在叙述过程中的由浅入深、抽象泛化能力也让人惊叹,在叙述的过程中不断将已经讨论过的部件抽象出来,让我们在思考的过程中能够不囿于繁杂的连线。或许计算机的发展就是在这样不断的抽象当中进行的,不断抽象屏蔽底层的细节,让我们在思考上层的结构的时候能够专注问题,无论硬件软件,皆是如此!

本书的精华部分在第17章,这是真正把前面提到的各种元件组织起来,让他们按照我们的要求组织成一台电子计算机的核心部分。从运算器和存储器的组织,代码存储和数据存储的分离与统一,指令的设计与实现,都在这一章中淋漓尽致地展现了出来。这是真正烧脑又让人酣畅淋漓的一章。

我认为,对于像我一样已经学过数电、计组等内容的人来说,这本书可以看做一种回顾和升华,将我们之前学过的内容串在了一起,并且弥补了之前学习过程中的某些断层,让我们对于计算机的运行原理有了更加完整且通畅的理解;对于那些计算机的初学者,甚至是没有学习过计算机的读者来说,这本书可以说是一本非常好的数字电路和计算机组成原理的入门书籍了,相对于国内教材的晦涩刻板,这本书能够引起兴趣,甚至让人有马上放下书动手一试的冲动。

总之,如果你对神奇的计算机世界充满兴趣,如果你厌恶各式各样Boring充满说教和格式化的计算机教科书。那么你可以开始读这本书了,尽管IT技术日新月异,但是这本经典不会过时。