2006年十二月月 发布的文章
从本源看世界-读'Write Great Code'
以前曾经说过自己并非计算机科班出身。想想自己在大学时的学习过程未免有些底气不足,记得当时一直坚持去旁听计算机专业的课,但是鉴于本专业老师的点名和课堂作业,自己未免耽误了很多节课,弄得自己学的很不系统,效果不是很好。工作后一直从事应用级的开发,对计算机方面基础的本源性的知识也逐渐陌生起来。但我是那种知其然也要知其所以然的人,这两年也不间断的买了不少讲解计算机底层知识的书,目的是让那些计算机本源性的东西在我脑袋里逐渐清晰了起来。这不又一本好书问世了-'Write Great Code'第一卷,我很早就已经下载了其英文版,只是没来得急看,这两天看了其中几章,发现很适合我的口味。
在我眼中每个领域的大师级人物都是知其领域本源的人,他们把本领域的知识融汇贯通,而且大多时候我们在聆听大师级人物的讲解时都有一种豁然开朗的感觉,那其实就是因为他的知识体系很成形,他们会从本源去讲解,从最简单的原始状态去讲解,这样听起来印象深刻,收获自然颇丰。
'Write Great Code'(中文名:编程卓越之道)一系书的作者是Randall Hyde,他同时也是'The Art of Assembly Language'的作者。'The Art of Assembly Language'一书算是汇编领域的佼佼者了,虽然我没看过^_^,不过网友的评价也是很重肯的哟。当初刚刚下载'Write Great Code' Vol1时曾经浏览一遍目录,'Numeric Representation','Binary Arithmetic and Bit Operations'等这些章节的名字让我心动,我就喜欢这样的书,而且和一般的教材性质的计算机组织结构或者计算机系统结构相比,这本书是从程序员角度来讲的,更加适合我们这些人的口味。这本书所讲解的知识层次就在我们工作层次的下一层,对于想挖掘知识本源的我来说再合适不过了,东西要一点一点的吃,你说是不是^_^。
我没有从开篇'Numeric Representation'这张开始读,我直接跳到了第六章'Memory Organization and Access',因为前不久又对内存对齐等有新的认识,所以我也希望通过这章的阅读知道更多的东西,让我脑子中的知识点'串'起来。这本书没有令我失望,本章第一节关于三大总线的介绍就格外精彩:
The system bus connects the various components of a VNA machine.
-> A bus is a collection of wires on which electrical signals pass between components of the system.
-> Most CPUs have three major buses: the address bus, the data bus, and the control bus.
-> CPUs use the data bus to shuffle data between the various components in a computer system.
-> The data bus on an 80×86 family processor transfers information between a particular memory location or I/O device and the CPU. The only question is, 'Which memory location or I/O device?' The address bus answers that question.
-> The CPU uses the data bus to move data between itself and memory. This prompts the question, 'How does the system know whether it is sending or receiving data?' Well, the system uses two lines on the control bus, read and write, to determine the data flow direction (CPU to memory, or memory to CPU).
几句'关键意义'的句子循序渐进的把三大总线的用途描绘的淋漓尽致,其思路和方式完全符合认知的过程,同时让你的大脑里马上形成一个框架,带着这个框架再去读相关细节,只能让你越读越兴奋。
第6.2小节讲的是物理内存的组织以及CPU如何访问内存,但是你看完后再细致品味,实际上这节的内容完全可以作为'为什么要进行Data Alignment'的标准讲义,和我上次在'三谈内存对齐-背后的故事'一文中说的同出一辙,而且更加细致,让我对内存这块的内幕了解的更加透彻。
第6.3小节讲的则是'字节序'问题,讲解了'Big-endian'和'Little-endian'的由来,最后作者通过一个很实用的例子形象的说明了字节序带来的影响。
第6.4节和6.5节讲的略微有些深了,要细看才行,最好对更底层有所了解,可以参照别的书籍一起学。
我刚刚读到第7章-'Composite Data Types and Memory Objects',该章每一小节针对一种复合数据类型做深入分析,精彩在后头,我正准备继续呢,实在忍不住了,写下此篇,好让更多同仁知道有这么一本书,早读早受益,明天周末去书店买本中文版,坐在床上读更舒服。
从本源看世界,你会发现另一番天地。
评论