2008年08月07日 星期四 23:58
转发作者,可以进一步修订,出第2版时,可以翻译成E文,给 Guido 看看哪... 2008/8/7 charon <wangycc at gmail.com>: > 最近几天花了些业余时间读了"python源码剖析"这本书的第一部分。有些话如刺在喉,不吐不快。 > 不可否认,这本书是国内Python原创书籍中比较有分量的一本,但这个分量从我的感觉,更多的是指重量,而不是质量。 > 1. 这本书写的太罗嗦。既然作为源码剖析,我认为对读者必然有默认的数据结构背景的要求,那么有些东西比如单向链表的平凡实现等就没必要复述了。还有 > 几个地方,抄了一段显见自明的代码,寥寥几句解释,或者连个解释也没有,那还不如不抄;如果要从完整性角度来说,那也不如直接用自然语言陈述一下功能。 > 一看都知道的东西,翻来覆去也还是这个花样,真不如言简意赅。 > 2. 第一部分的几个章节,从Int,String,List到Dict,都有一个结构不清晰,重点不突出的问题。大部分力气花在显而易见的东西上,但 > 一些关键点却没有点到。比如,对于String, Python的intern机制的应用场景和实现,以及为什么它对dict以string为key的 > 操作能带来且仅能带来轻微的效率提升;再比如对list_ass_slice具体实现的回避。正确的做法是对平凡实现的点到即止和对非平凡实现的深入分 > 析,而不是倒过来。 > 3. 存在一些硬伤。比如前面提到的对intern的理解上,对list_ass_slice的理解,又比如对dict机制的阐述上,特别是对 > dict,整一章存在太大的问题,使我对三位作序的大佬的RP有很大的怀疑,没仔细读过的东西就不要做序。就dict那一章而言,对ma_mask的解 > 释是肤浅和错误的,首先它不是entry的数量,而是entry的数量减一,而ma_table中entry的数量是2**n,因此 > ma_mask=2**n-1正好是一个准素数且二进制的后n位全为1(这才是mask的含义),这是构建普通hash表的基本方法,只有对素数/准素 > 数取模,才能防止冲突的频繁化。5.3.4的那个示例虽然有助于理解,但其对模数的选择是不妥的,而且即便以这个模数,相关的图示也是错误的,那个4应 > 该放在5号位(编号从0开始时放到4号位才对,不明白为什么这里作者要把它搞成从1开始,C和Python都是0基的)。还有,这一章最后对图5-12 > 的解释根本就是在扯淡,这是一道简单的算术题,实质上是没有对图5-11的表象正确理解. > 4.第六章完全可以去掉, 这一章太YY了. > > 对后面的几部分初瞄了一下,虽然罗嗦依旧,但感觉第二部分还不错. > --~--~---------~--~----~------------~-------~--~----~ -- http://zoomquiet.org''' 过程改进乃是催生可促生靠谱的人的组织! PE keeps evolving organizations which promoting people be good!'''
Zeuux © 2024
京ICP备05028076号