20130720

你最近在读什么书,及CSAPP上的一个疑问

你最近在读什么书,及CSAPP上的一个疑问

"你最近在读什么书?"这句话我在两处看到过。一处是鲁迅先生关怀青少年成长,问某个孩子的,然后向他推荐了《表》这样的道德教育类少儿读物;另一处是贾宝玉问林黛玉,或者反过来,或者是薛宝钗问林黛玉,又或者是贾政问贾宝玉,也许是关心,也许是调情,也许是暗藏机锋,《红楼梦》里这种比生活还复杂的对话,我总也不敢说看懂了。反正有此一问。

最近在douban上看到某位地下书店店员的回忆,写得颇有大家风范,我深以为这是文艺工作者在体验生活之后交的报告。此地下书店中的地下,不是隐藏非常深而不得见的意思,而是真的就在地底下,可能是地铁,也可能是防空洞,我没注意。作者提到很多有意思的小细节,比如证明读者们都如何无知而装作有见识,讲到读者寻求推荐的时候问"最近得诺贝尔奖那个,他的书有没?",似乎并不知道"莫言"。生活在观察之中,作为店员生活得颇有情趣。他提到两件事很有趣,一个是午休的时候挤出时间看溜冰,溜冰的人像水里游泳的鱼,另一个是提到很多明星去买书,他们都买实用型的
(例子可能是,如何治疗拖延症?),只有周迅是个例外,她只买世界名著。

有人可能撇嘴了,"她们都是装的。"一则,人不能处处假装,比如在素不相识的书店店员面前,周迅如何得知这是位文学大家在卧底;二则,又如果周迅只钟看看微博传八卦,喜欢不超过三百字的贴子,但是她只买世界名著,这又不是她所钟爱的,那么她的生活得多么得痛苦啊。

有同学可能说,看看微博怎么了?看微博当然没什么,不过这语气总归有点像李某某的律师的语气,所有回答都是"这是俺们的合法权利"。看微博,就像有人喜欢吃方便面,喜欢吃方便粉丝,喜欢吃咸菜,总也不吃还非常想得慌。你可能会说,微博就方便面,世界名著就满汉全席。没错,我非常明确地认为,作品确实是分三六九等的,无论是思想境界,抽象的高度,还是什么。微博这样短小的文字,甚至包括博客这种篇幅,要是能让一个人进步,或者如某些人回忆到的看了读者知音故事会心灵鸡汤以后提着喷壶灌顶一般顿悟,那都怪了。

我们读那些短小的东西,只是为我们的观点、既有的知识结构找些佐证。就像小女孩左看看右看看,啊,原来大家都跟我一样胖,恩,放心了。这种感觉。颠覆我们观点的,让我们从另一个角度看自己,甚至否定自己的--这就是所谓成长--只能是足够厚的作品。或者偶尔,会有非常薄的作品起到这样的作用,比如离散数学,比如纯粹理性批判,比如爱因斯坦讲相对论的原始那张贴子,不过,无一例外,这种短贴子,非常之难看懂,你得花比看大部头还长的时间去读。

读短东西,我们不过是在自言自语,连反刍都算不上。

我固执地认为,程序员仍然是先进生产力的代表,一个重要原因是,他们在工作以后仍然保持读书。他们终日阅读,读的东西还都够长。

也许他们读的文字只是库函数手册,又或者需求书,但是他们在与别人进行相当精确和深入的交流。有些人也读了,但是只流于表面,用于证明关系,"啊,我也这么想,你看我们的关系多么铁",或者"我完全同意你说的,但是",或者双方各说各话,互无交集。程序员要精确地找出他反对的部分,然后与作者争辩,或者做实验,或者吵得面红耳赤。因为如果双方的观点完全相同,就连交流的必要都没有。这和我们变态的现实生活如此不同,在现实世界,往往观点相同,我们就要一万次确认,观点不同,我们甚至不再说一句话。在现实世界,我们竟然往往只与自己对话,这多么孤独和变态。还是做个程序员更正常。

他们所阅读的,并非自己或自己的同类,那些完全赞同自己观点的人,所产出的东西。不是有些人说,某某类的作品,口戚,我从来不看。以此给自己贴个值钱的标签,供人给些好的品评。毛泽东同志在瑞金的时候,据说曾有人说,你用孙子兵法指导革命战争,如何如何。毛同志说,你知道孙子兵法里面讲些什么,你知道孙子兵法一共有几章?不是有人只读我们自己的传统,不是有人只读非我们自己的传统的东西么。

同时,他们所阅读的,并非完全为了追求阅读当时的的和短暂的快乐,像有些文艺青年那样。他们的阅读是漫长而痛苦的,他们阅读的原因之一是为了追求阅读之后达成的共识,或者挖掘出的差异。这些共识和差异,可能是人与人的,也可能是我们的假想与真实世界之间的。所以,他们不只挑那些读起来爽的,听起来的好的。

这让我想起以前提到过的,小资们艳羡,李安有段时期由老婆供养,成天就是看片儿。看片儿之于李安,与小资们想像的是不同的,我相信,他一定不会只挑自己喜欢的看,还喝着汽水嗑着瓜子,他一定是把那些烦得不行的片子也要看了,看到吐,他一定是把自己喜欢得不行的片子也看了,品评分析很多遍,直到把骨头和肉和神经完全分开了,再也不是最初感情上肤浅地喜欢的那种。

程序员就是这样阅读的。而且,他们一直保持。

还有一些人,从成年 (成熟?腐烂?)开始,就再也不阅读,再也不阅读自己不"喜欢"的,再也不阅读长的,再也不阅读自己不认同或者不认同自己的,再也不阅读对业务
(比如宫斗或者宫斗)有用的任何书籍。他们少年时,读得最多的是考试辅导材料。他们成年时,读得最多的是他们的孩子的考试辅导材料。有些人,即使在工业社会,即使在后工业时代,仍然保持着光荣的传统的小农意识,除了圣经或者语录基本没有读过别的,除了家乡
(不管出生在多么大的城市)再没见过更广阔的土地。如此纯洁,不沾纤尘。

你最近阅读的,不是为了直接的短期见效的功利的动机,超过500页的作品,是什
么?

-----

附记:

今天读CSAPP,第9章。有一处卡住了一个小时,复核书上计算的结果怎么也不对。后来拿着书睡着了。拿着书睡着这件事,一点也不浪漫,它让我意识到衰老,也让我意识到没有读到什么好玩的东西,时光虚度。

CSAPP英文版第2版,826页,或者中文版第2版546页,有这么一段。关于多级页表的。

"But if we had a 32-bit address space, 4KB pages, and a 4-byte
PTE[page table entry, 杨注], then we would need a 4MB page table
resident in memory at all time..."

就这么一段,成了拦路虎。我跳过它,读了后面大半小节,没什么障碍。我是这
么翻译和理解的:

但是如果我们有一个32位的地址空间,每页长度4K字节,PTE每个为4字节,那么,我们将需要4M字节的页表一直驻留在内存中...

以上翻译,有几处需要解释。1.K是1024,不是1000,M是1024*1024,不是1000*1000。2. 4KB
pages,第一篇时我读错了,以为是4*1024页,又重读和读后面,发现作者习惯于这样措辞,其实是每页4KB这么长,即 "splitted
into pages of 4KB page size"。

然后,我按上述理解算了一个小时,没算明白。对不上。

其实这个公式很简单,我甚至google了一下以确认

页表尺寸 = (地址空间 / 页尺寸) * PTE入口大小........公式1

你按我上面的翻译手算一下左边和右边就知道了,不等。为什么不等呢?因为4KB中的B,还有4MB中的B,根本就不是"字节" byte,而是"比特" bit。

网络 (和中文?)中,习惯用 B 表示 字节,b表示 比特。但是CSAPP这段并没认可这个约定。

32-bit address space: 2^32 bit
4KB pages: 4K bytes
a 4-byte: 4 bytes



K = 2^10
M = 2^22

代入公式1的右侧,得

(2^32 bits / 4K bytes) * 4 bytes
= 2^32 * 2^2 / (2^2 * 2^10) bits
= 2^22 bits
= 2^2 M bits
= 4Mb

CSAPP原文和翻译均写作: 4MB

我是不是哪儿算错了啊,各位大师看出来的烦请告诉我。

--------------------

博客会手工同步到以下地址:

[http://giftdotyoung.blogspot.com]

[http://blog.csdn.net/younggift]

No comments: