这本书其实不是面向python用户的,而是剖析python的运行时实现。更适合于进阶C程序员以提高C语言能力。
不过不知道是作者功底不够,还是时间太紧,很多地方作者罗里罗嗦的写了好几页纸,比人家源代码还长,可还没有源代码里的注释讲得清楚。
我仔细看过的有第十六章《Python的内存管理机制》,下面以这个为例。
这章只讲python的obmalloc.c这一个文件,很多内容直接是从注释中拷贝的(比如图16-1),可是注释中最关键的几个地方,书中都没说清楚。
关于struct pool_header,作者花了两页纸讲free block链表的管理,其实free block链表本身是《操作系统》课程中的基本概念,没有必要花这么大篇幅,更没有必要使用“你会发现freeblock开始成为一个苏醒的精灵”这类废话。
这一部分,真正令人迷惑的是pool_header中的nextoffset和maxnextoffset,这两个member是在pool初始阶段用于管理空闲block的,其功能完全可以被freeblock取代,但是为什么python实现要加上这两个member呢?
书中对这个疑惑不着一字,而看注释就非常明白:如果起始就构建一个完整的空闲block列表,会访问整个pool的所有block;而nextoffset则只需要访问pool的前段,这样可以利用机器的VM机制,达到“没有真实访问就不用OS真的分配从而节省内存”的目的。
又比如usedpool数组,代码设计得非常别扭。书中对其如何别扭的工作有讲述,但是对为什么要这么设计,没有说一句话;同样在注释中,注释的作者说“我也不清楚为什么要搞得这么复杂,也许是为了增加cache友好性,但是实在代价有点高”。
再有锁的问题,在源码中只有一句话“ * Python's threads are serialized, so object malloc locking is disabled.” 我不熟悉python的线程,理解不了为什么内存分配可以不用锁,想到书中找答案,结果书中也是完全忽略,一个字的评论都没有。
还有一个问题,陈儒总是把malloc和free说成是“操作系统提供的内存管理接口”,这个说法不太严谨,malloc和free是C库提供的,brk才是OS的接口。 在源码注释中,用的说法是“Underlying general-purpose allocator”,就非常准确。
不过话说回来,这本书在国产IT著作中算是不错了,至少看得出来作者是很诚恳的看过代码,也很诚恳的与读者分享。结合这本书看代码,我觉得自己的功力有明显提升 :)
态度诚恳,但是缺乏洞见
对“态度诚恳,但是缺乏洞见”的回应
《Python源码剖析》热门书评
-
万众期待的优秀著作
80有用 5无用 膘 2008-10-14
Python 是公认的优秀语言,而很多人可能并不知道,标准python实现,同样是非常优秀的C源码项目。它利用中立的标准C语言,洗练的实现了动态面向对象环境,使得Python语言的灵活和优雅得以充分体现。Python平台的C源码,本身就具体很高的学习价值。然而像其它成功的大型开源项目一样,庞大的代码...
-
我写的推荐序
31有用 20无用 Fenng 2008-07-09
非常高兴看到又一本原创 Python 图书的出版。说起来,我和 Python 还算有一点缘分。在 2000 年的时候,非常偶然的一次机会接触到Python,当时网上资料非常之少,不知天高地厚的我竟冒失地接手了国内第一本引进 Python 图书的合作翻译工作,往事不堪回首。记得当时经常有人问我 Pyt...
-
只说不足的
20有用 3无用 E.T 2009-07-10
好的方面已经有很多读者说过了,这里提一下我认为做得不好的几点,概括起来是“二多一缺”:二多:“口水话”多,本人认为对增进理解或过渡没有太大作用;typo 多,需要质疑一下校对者的水平。一缺:缺少参考书目,经常读国外技术书籍的人应该不会对bibliography这个词感到陌生吧,哪怕只引用了一句话,也...
-
态度诚恳,但是缺乏洞见
17有用 0无用 LipingTaBaBa 2012-01-12
这本书其实不是面向python用户的,而是剖析python的运行时实现。更适合于进阶C程序员以提高C语言能力。不过不知道是作者功底不够,还是时间太紧,很多地方作者罗里罗嗦的写了好几页纸,比人家源代码还长,可还没有源代码里的注释讲得清楚。我仔细看过的有第十六章《Python的内存管理机制》,下面以这个...
-
国内技术书籍神作
14有用 1无用 simonliu 2012-01-30
其实这本书已经在我书桌上摆了很久,断断续续看完了,后来又从头看了一遍,总体感觉呢就两个字“佩服”。作者在 Python 研究方面不一定是国内最牛的,关于作者的文笔风格争议也颇多,但是作者是第一个把研究 Python 的收获传播出来的人,光是这一点就比那些成天在那里嚷嚷说这不好、那不对的人高尚很多。也...
书名: Python源码剖析
作者: 陈儒
出版社: 电子工业出版社
副标题: 深度探索动态语言核心技术
出版年: 2008-6
页数: 480
定价: 69.80元
装帧: 平装
ISBN: 9787121068744