其实这本书已经在我书桌上摆了很久,断断续续看完了,后来又从头看了一遍,总体感觉呢就两个字“佩服”。
作者在 Python 研究方面不一定是国内最牛的,关于作者的文笔风格争议也颇多,但是作者是第一个把研究 Python 的收获传播出来的人,光是这一点就比那些成天在那里嚷嚷说这不好、那不对的人高尚很多。
也许你写过很多 Python 代码,写过很多 Java 代码,你熟悉面向对象,听说过虚拟机,听说过自动内存管理,但是面向对象是怎样用 C 语言 -- 一门过程式语言实现的呢?虚拟机是如何加载、运行代码,如何管理内存的呢?这本书给出了解释:
Python 中一切皆对象,包括 Python 内部实现所使用的数据结构:Python 对象表示、方法表示、源码编译结果、运行时栈幀等等;
Python 用结构体保存了类的元信息,用 Flyweight/Strategy 模式处理对象的行为;
Python 用对象池技术来提高对象的创建/销毁效率;
Python 把源码编译成类似与汇编语言一样的中间码(包括内存操作,计算,控制跳转等等),在基于堆栈模型的虚拟机上运行中间码;
Python 由于用 PIL 控制线程的共享状态,所以 Python 多线程其实是不能并行的;
Python 用若干个链表来管理几个代的内存,用引用计数法标记不活动的对象,引入根节点来消除循环引用;
这里提到的不是空洞的理论,而是实实在在的实现,源码级的分析。
如果你在用一门高级语言,想了解语言的实现原理,这本书是你的必选;如果你是一个 C/C++ 程序员,想写出高质量的程序,这本书也是你必选。