@wddpct
2017-06-30T21:29:08.000000Z
字数 1663
阅读 2449
“但是不顺心的事情有吗?”
这样问自己的时候,好像过了很久才听到回复——pct呀pct,不要一直吃外卖了,多自己做饭吧~!这些话当然只是玩笑,只是一时间确实很难想起让我觉得阴翳的事情,兴许只有没有把免费的健身卡利用起来才算了。古人云书非借不可读,卡非办不会去,果然诚不欺我。如果非要加一件,就应该是这一个多月都没有好好地更新博客了。不过我保证(对自己的保证),在下半年我会尽可能地发光发热,尽可能地以博客的形式把知识记录下来,分享出去。
啰嗦地讲了一些无关紧要的事情,最后按照惯例来推一本书吧(以后每个月都会有推书的文章,所以原谅我用上“惯例”这个词语)。其实自从去年年中 kindle 遗失以后,我就变成了一个比较喜欢买书的人,而买书应该也算是像我这种普通人最实惠的购物方式之一了。所幸的是京东和当当的活动都挺多,一次买个四五本到也不会觉得心疼(消化的速度其实只有四分之一,惭愧)。这次要推荐的书是 Charles Petzold的《编码:隐匿在计算机软硬件背后的语言》,这个老头可是 Windows 系统上的编程大家,著名的《Windows程序设计》,严格说起来,他也算是 C# 开发者的祖师爷。
题目既然是编码,顾名思义,这本书是一本讲述计算机组成原理的书籍,可能一些人看到所谓的“计算机组成原理”便十分地害怕,其实在这本书中,Petzold 是用一种十分生动易懂的方式将CPU和存储器的原理表现出来的。在书籍的中段部分,作者带领读者用前段讲解过的最基本的逻辑门电路逐步组装出了一台“计算机”,虽然它只具有简陋的CPU,存储器以及相应的控制部分,但是至少它是完整的。更加难能可贵的是,重要的指令机制和寻址概念,以及为什么使用二进制作为计算机底层语言和存储实现的问题,Petzold 都在这个过程中做了详实且白话地解读。
严谨的实验和概念上的白话,使得《编码》与同类书籍比较时(比如深入理解计算机系统),能够让读者自然而然地了解到它的阅读门槛十分的低。当然,与此优点相对应的是,由于篇幅所限和内容上的分类,它不能像其他书籍那样做到面面俱到的讲解,现代的计算机体系以及将这些概念发散扩展了,或者说细分了很多,但是在《编码》这本书中,CPU便是CPU,存储器便是存储器,并没有深入地讲解,总线部分也只是一笔带过。而在Petzold那个时代主流的微机8080或者是CP/M操作系统也未免稍显过时了(当然基础概念还是相似)。
接下来简要介绍下《编码》的内容结构。
《编码》全书二十五章,按主题可以分为三部分。从第一章的“至亲密友”到第十章“逻辑与开关”,Petzold 向我们介绍了如何把现实中的语言转化为电路中的语言。为了讲解信息的载体可以是多种多样的,这个老头举了布莱叶盲文和莫尔斯电码,而为了解决远距离的信息传输问题,电路以及继电器的概念和实现就自然而然地登场了。
而从第十一章至第十七章,如上文所述,Petzold 带领我们借助第一部分主题的知识,从无到有地组装了一台继电器版计算机。这一部分也是全书的精华部分,从最简单的继电器组成逻辑门电路,再从逻辑门电路组成锁存器和选择器。根据二进制语言和开关状态对应的关系,我们又可以用多个开关状态组成的二进制码来表示存储器中的地址内容。从而最终构建出一台简陋却完整的计算机。
最后一部分的主题,虽然篇幅也占到了全书的四分之一,但其实已经只是整本书的余韵。作者带领读者走马观花地领略了一遍微处理器,总线,操作系统以及字符编码(此编码非彼编码)的知识,进一步地完善了之前那个略显简陋的计算机,只是这一部分设计的内容太过宽泛,Petzold 也不能用实验组装和编码的方式去再做一台现代计算机了,所以他直接撷取了现成的8080处理器和CP/M操作系统来进行内容的讲解,也算是聊胜于无了。
总而言之,无论是在校学生,或者是已经工作,但是仍然想返回头来看看计算机底层知识和花边新闻的人,不管你们是不是科班出身(不是还相对好些),《编码》这本书都可以作为你们闲暇时的科普读物(在我看来并不能算是专业读物)。
2017年6月30日晚于公司 小雨