{荐书}《Python源码剖析》by Robert Chen

357 views
Skip to first unread message

pongba

unread,
Jul 7, 2008, 2:07:59 AM7/7/08
to TopLanguage
按:一本挺靠谱的书,一个挺靠谱的人:D 踏踏实实做事情的人总是令人心生敬意。从作者的前言就可以看出来这是本值得一读的书。我不推荐对所有的细节穷根究底,有一些细节只是..细节而已。但有一些细节却是本质的,这时就体现出知其所以然的重要性了。只要有鉴别力的看待,分清本质细节和非本质细节,这本书的看点应该不会少。作者前言中提到花了两年多的时间来做这件事情,两年的时间,如果专心于某件事情的话,实际上是一段很长很长的时间,所以我相信书中肯定是有料的。

以下转载前言(猥琐的China-pub网站居然把"前言"页面的文字间随机填充了白色数字字符,使得别人无法拷贝,靠!它又不是靠文章浏览量赚钱的,无语了,实在不够大气.. )

搜了一下,作者的博客在此,上面有大量连载的《Python源码剖析》。

前言
第一次接触Python,是通过《程序员》杂志上"恶魔吹着笛子来"的系列文章——《自由与繁荣的国度》。但是真正开始使用Python,还是在进入实验 室,开始研究自然语言处理和信息检索之后。自然语言处理其实大部分的时间都在与文本打交道,需要进行大量的对文本分析、统计的工作。开始的时候,我使用的 是C++,因为大学的时候第一门编程语言课就是C,其后转向C++是很自然的迁移。那时候觉得C++很有一种高贵的感觉,因为C++足够复杂,有足够多的 trick,尤其是像模板和泛型编程这样的新鲜玩意儿。掌握这么复杂的东西,也就意味着你的脑袋跟这东西一样复杂,这是很能让人虚荣的一件事。

C++的复杂性是个仁者见仁,2智者见智的话题,2但其实回到文本处理这个话题上来说,2C++的STL在很大程度上已经足够好用了.a文本处理不是服务器,2所以不需要考虑自己管理内存,2不需要考虑这个模式那个模式,2STL提供了足够多的工具,2简单组装一下就可以用了.

但俗话说得好,3"不怕不识货,3就怕货比货",3当我开始尝试用Python来进行日常的工作之后,3突然发现C++太复杂了.对于Python,3我的感觉只有四个字:摧枯拉朽.a我只需要简单地写一个lc=c[c],3再也不用写诸如list<cmapcstring>c>clc=clist<cmapcstring>c>()这样折磨人眼的东西了,3这使得代码量急剧减少.a对于采用Python这样的英明决策,3我想,3最满意的就是我的手指头了.(剩余部分

目录    
第0章  PYTHON源码剖析--编译PYTHON    1
0.1  PYTHON总体架构    1
0.2  PYTHON源代码的组织    2
0.3  WINDOWS环境下编译PYTHON    4
0.4  UNIX/LINUX环境下编译PYTHON    7
0.5  修改PYTHON源代码    7
0.6  通往PYTHON之路    9
0.7  一些注意事项    10
第1部分  PYTHON内建对象    13
第1章  PYTHON对象初探    15
1.1  PYTHON内的对象    16
1.1.1  对象机制的基石——PyObject    17
1.1.2  定长对象和变长对象    18
1.2  类型对象    19
1.2.1  对象的创建    20
1.2.2  对象的行为    22
1.2.3  类型的类型    24
1.3  PYTHON对象的多态性    25
1.4  引用计数    26
1.5  PYTHON对象的分类    28
第2章  PYTHON中的整数对象    29
2.1  初识PYINTOBJECT对象    29
2.2  PYINTOBJECT对象的创建和维护    34
2.2.1  对象创建的3种途径    34
2.2.2  小整数对象    35
2.2.3  大整数对象    36
2.2.4  添加和删除    37
2.2.5  小整数对象池的初始化    43
2.3  HACK PYINTOBJECT    44
第3章  PYTHON中的字符串对象    47
3.1  PYSTRINGOBJECT与PYSTRING_TYPE    47
3.2  创建PYSTRINGOBJECT对象    49
3.3  字符串对象的INTERN机制    52
3.4  字符缓冲池    56
3.5  PYSTRINGOBJECT效率相关问题    58
3.6  HACK PYSTRINGOBJECT    60
第4章  PYTHON中的LIST对象    63
4.1  PYLISTOBJECT对象    63
4.2  PYLISTOBJECT对象的创建与维护    64
4.2.1  创建对象    64
4.2.2  设置元素    66
4.2.3  插入元素    68
4.2.4  删除元素    72
4.3  PYLISTOBJECT对象缓冲池    74
4.4  HACK PYLISTOBJECT    75
第5章  PYTHON中的DICT对象    77
5.1  散列表概述    78
5.2  PYDICTOBJECT    79
5.2.1  关联容器的entry    79
5.2.2  关联容器的实现    80
5.3  PYDICTOBJECT的创建和维护    82
5.3.1  PyDictObject对象创建    82
5.3.2  PyDictObject中的元素搜索    83
5.3.3  插入与删除    89
5.3.4  操作示例    95
5.4  PYDICTOBJECT对象缓冲池    96
5.5  HACK PYDICTOBJECT    97
第6章  最简单的PYTHON模拟——SMALL PYTHON    101
6.1  SMALL PYTHON    101
6.2  对象机制    102
6.3  解释过程    106
6.4  交互式环境    108
第2部分  PYTHON虚拟机    111
第7章  PYTHON的编译结果--CODE对象与PYC文件    113
7.1  PYTHON程序的执行过程    113
7.2  PYTHON编译器的编译结果--PYCODEOBJECT对象    115
7.2.1  PyCodeObject对象与pyc文件    115
7.2.2  Python源码中的PyCodeObject    116
7.2.3  pyc文件    117
7.2.4  在Python中访问PyCodeObject对象    120
7.3  PYC文件的生成    120
7.3.1  创建pyc文件的具体过程    120
7.3.2  向pyc文件写入字符串    124
7.3.3  一个PyCodeObject,多个PyCodeObject    128
7.4  PYTHON的字节码    129
7.5  解析PYC文件    130
第8章  PYTHON虚拟机框架    133
8.1  PYTHON虚拟机中的执行环境    133
8.1.1  Python源码中的PyFrameObject    136
8.1.2  PyFrameObject中的动态内存空间    138
8.1.3  在Python中访问PyFrameObject对象    139
8.2  名字、作用域和名字空间    140
8.2.1  Python程序的基础结构——module    140
8.2.2  约束与名字空间    141
8.2.3  作用域与名字空间    142
8.3  PYTHON虚拟机的运行框架    149
8.4  PYTHON运行时环境初探    152
第9章  PYTHON虚拟机中的一般表达式    157
9.1  简单内建对象的创建    157
9.2  复杂内建对象的创建    163
9.3  其他一般表达式    166
9.3.1  符号搜索    166
9.3.2  数值运算    169
9.3.3  信息输出    171
第10章  PYTHON虚拟机中的控制流    173
10.1  PYTHON虚拟机中的IF控制流    173
10.1.1  研究对象--if_control.py    173
10.1.2  比较操作    175
10.1.3  指令跳跃    179
10.2  PYTHON虚拟机中的FOR循环控制流    183
10.2.1  研究对象——for_control.py    184
10.2.2  循环控制结构的初始化    184
10.2.3  迭代控制    188
10.2.4  终止迭代    191
10.3  PYTHON虚拟机中的WHILE循环控制结构    192
10.3.1  研究对象——while_control.py    192
10.3.2  循环终止    194
10.3.3  循环的正常运转    195
10.3.4  循环流程改变指令之continue    195
10.3.5  循环流程改变指令之break    196
10.4  PYTHON虚拟机中的异常控制流    197
10.4.1  Python中的异常机制    197
10.4.2  Python中的异常控制语义结构    207
第11章  PYTHON虚拟机中的函数机制    215
11.1  PYFUNCTIONOBJECT对象    215
11.2  无参函数调用    217
11.2.1  函数对象的创建    217
11.2.2  函数调用    220
11.3  函数执行时的名字空间    223
11.4  函数参数的实现    225
11.4.1  参数类别    226
11.4.2  位置参数的传递    229
11.4.3  位置参数的访问    233
11.4.4  位置参数的默认值    235
11.4.5  扩展位置参数和扩展键参数    243
11.5  函数中局部变量的访问    246
11.6  嵌套函数、闭包与DECORATOR    248
11.6.1  实现闭包的基石    249
11.6.2  闭包的实现    251
11.6.3  Decorator    257
第12章  PYTHON虚拟机中的类机制    259
12.1  PYTHON中的对象模型    259
12.1.1  对象间的关系    260
12.1.2  &lttype 'type'>和&lttype 'object'>    262
12.2  从TYPE对象到CLASS对象    263
12.2.1  处理基类和type信息    266
12.2.2  处理基类列表    267
12.2.3  填充tp_dict    268
12.3  用户自定义CLASS    282
12.3.1  创建class对象    283
12.4  从CLASS对象到INSTANCE对象    293
12.5  访问INSTANCE对象中的属性    296
12.5.1  instance对象中的__dict__    298
12.5.2  再论descriptor    299
12.5.3  函数变身    302
12.5.4  无参函数的调用    304
12.5.5  带参函数的调用    307
12.5.6  Bound Method和Unbound Method    308
12.6  千变万化的DESCRIPTOR    310
第3部分  PYTHON高级话题    313
第13章  PYTHON运行环境初始化    315
13.1  线程环境初始化    315
13.1.1  线程模型回顾    315
13.1.2  初始化线程环境    316
13.2  系统MODULE初始化    320
13.2.1  创建__builtin__ module    320
13.2.2  创建sys module    327
13.2.3  创建__main__ module    330
13.2.4  设置site-specific的module的搜索路径    331
13.3  激活PYTHON虚拟机    334
13.3.1  交互式运行方式    335
13.3.2  脚本文件运行方式    336
13.3.3  启动虚拟机    337
13.3.4  名字空间    339
第14章  PYTHON模块的动态加载机制    343
14.1  IMPORT前奏曲    343
14.2  PYTHON中IMPORT机制的黑盒探测    347
14.2.1  标准import    347
14.2.2  嵌套import    351
14.2.3  import package    352
14.2.4  from与import    356
14.2.5  符号重命名    358
14.2.6  符号的销毁与重载    359
14.3  IMPORT机制的实现    362
14.3.1  解析module/package树状结构    365
14.3.2  加载module/pakcage    370
14.3.3  from与import    381
14.4  PYTHON中的IMPORT操作    382
14.4.1  import module    383
14.4.2  import package    383
14.4.3  from & import    383
14.4.4  import & as    384
14.4.5  reload    385
14.4.6  内建module:imp    386
14.5  与MODULE有关的名字空间问题    386
第15章  PYTHON多线程机制    391
15.1  GIL与线程调度    391
15.2  初见PYTHON THREAD    394
15.3  PYTHON线程的创建    396
15.3.1  建立多线程环境    397
15.3.2  创建线程    402
15.4  PYTHON线程的调度    413
15.4.1  标准调度    413
15.4.2  阻塞调度    416
15.5  PYTHON子线程的销毁    419
15.6  PYTHON线程的用户级互斥与同步    420
15.6.1  用户级互斥与同步    420
15.6.2  Lock对象    421
15.7  高级线程库——THREADING    423
15.7.1  Threading Module概述    424
15.7.2  Threading的线程同步工具    425
15.7.3  Threading中的Thread    426
第16章  PYTHON的内存管理机制    429
16.1  内存管理架构    429
16.2  小块空间的内存池    432
16.2.1  Block    432
16.2.2  Pool    434
16.2.3  arena    438
16.2.4  内存池    442
16.3  循环引用的垃圾收集    457
16.3.1  引用计数与垃圾收集    457
16.3.2  三色标记模型    458
16.4  PYTHON中的垃圾收集    459
16.4.1  可收集对象链表    460
16.4.2  分代的垃圾收集    463
16.4.3  Python中的标记-清除方法    466
16.4.4  垃圾收集全景    475
16.4.5  Python中的gc模块    477
16.4.6  总结    479


--
刘未鹏(pongba)|C++的罗浮宫
http://blog.csdn.net/pongba
TopLanguage
http://groups.google.com/group/pongba

Googol Lee

unread,
Jul 7, 2008, 2:10:58 AM7/7/08
to pon...@googlegroups.com
这书好!现在对Python的知识基本只能在网上找,不成体系。有这么本书在手边就方便多了。

2008/7/7 pongba <pon...@gmail.com>:
按:一本挺靠谱的书,一个挺靠谱的人:D 踏踏实实做事情的人总是令人心生敬意。从作者的前言就可以看出来这是本值得一读的书。我不推荐对所有的细节穷根究底,有一些细节只是..细节而已。但有一些细节却是本质的,这时就体现出知其所以然的重要性了。只要有鉴别力的看待,分清本质细节和非本质细节,这本书的看点应该不会少。作者前言中提到花了两年多的时间来做这件事情,两年的时间,如果专心于某件事情的话,实际上是一段很长很长的时间,所以我相信书中肯定是有料的。

以下转载前言(猥琐的China-pub网站居然把"前言"页面的文字间随机填充了白色数字字符,使得别人无法拷贝,靠!它又不是靠文章浏览量赚钱的,无语了,实在不够大气.. )

搜了一下,作者的博客在此,上面有大量连载的《Python源码剖析》。

前言
第一次接触Python,是通过《程序员》杂志上"恶魔吹着笛子来"的系列文章----《自由与繁荣的国度》。但是真正开始使用Python,还是在进入实验 室,开始研究自然语言处理和信息检索之后。自然语言处理其实大部分的时间都在与文本打交道,需要进行大量的对文本分析、统计的工作。开始的时候,我使用的 是C++,因为大学的时候第一门编程语言课就是C,其后转向C++是很自然的迁移。那时候觉得C++很有一种高贵的感觉,因为C++足够复杂,有足够多的 trick,尤其是像模板和泛型编程这样的新鲜玩意儿。掌握这么复杂的东西,也就意味着你的脑袋跟这东西一样复杂,这是很能让人虚荣的一件事。


C++的复杂性是个仁者见仁,2智者见智的话题,2但其实回到文本处理这个话题上来说,2C++的STL在很大程度上已经足够好用了.a文本处理不是服务器,2所以不需要考虑自己管理内存,2不需要考虑这个模式那个模式,2STL提供了足够多的工具,2简单组装一下就可以用了.

但俗话说得好,3"不怕不识货,3就怕货比货",3当我开始尝试用Python来进行日常的工作之后,3突然发现C++太复杂了.对于Python,3我的感觉只有四个字:摧枯拉朽.a我只需要简单地写一个lc=c[c],3再也不用写诸如list<cmapcstring>c>clc=clist<cmapcstring>c>()这样折磨人眼的东西了,3这使得代码量急剧减少.a对于采用Python这样的英明决策,3我想,3最满意的就是我的手指头了.(剩余部分

目录
第0章  PYTHON源码剖析--编译PYTHON    1
0.1  PYTHON总体架构    1
0.2  PYTHON源代码的组织    2
0.3  WINDOWS环境下编译PYTHON    4
0.4  UNIX/LINUX环境下编译PYTHON    7
0.5  修改PYTHON源代码    7
0.6  通往PYTHON之路    9
0.7  一些注意事项    10
第1部分  PYTHON内建对象    13
第1章  PYTHON对象初探    15
1.1  PYTHON内的对象    16
1.1.1  对象机制的基石----PyObject    17
第6章  最简单的PYTHON模拟----SMALL PYTHON    101

6.1  SMALL PYTHON    101
6.2  对象机制    102
6.3  解释过程    106
6.4  交互式环境    108
第2部分  PYTHON虚拟机    111
第7章  PYTHON的编译结果--CODE对象与PYC文件    113
7.1  PYTHON程序的执行过程    113
7.2  PYTHON编译器的编译结果--PYCODEOBJECT对象    115
7.2.1  PyCodeObject对象与pyc文件    115
7.2.2  Python源码中的PyCodeObject    116
7.2.3  pyc文件    117
7.2.4  在Python中访问PyCodeObject对象    120
7.3  PYC文件的生成    120
7.3.1  创建pyc文件的具体过程    120
7.3.2  向pyc文件写入字符串    124
7.3.3  一个PyCodeObject,多个PyCodeObject    128
7.4  PYTHON的字节码    129
7.5  解析PYC文件    130
第8章  PYTHON虚拟机框架    133
8.1  PYTHON虚拟机中的执行环境    133
8.1.1  Python源码中的PyFrameObject    136
8.1.2  PyFrameObject中的动态内存空间    138
8.1.3  在Python中访问PyFrameObject对象    139
8.2  名字、作用域和名字空间    140
8.2.1  Python程序的基础结构----module    140

8.2.2  约束与名字空间    141
8.2.3  作用域与名字空间    142
8.3  PYTHON虚拟机的运行框架    149
8.4  PYTHON运行时环境初探    152
第9章  PYTHON虚拟机中的一般表达式    157
9.1  简单内建对象的创建    157
9.2  复杂内建对象的创建    163
9.3  其他一般表达式    166
9.3.1  符号搜索    166
9.3.2  数值运算    169
9.3.3  信息输出    171
第10章  PYTHON虚拟机中的控制流    173
10.1  PYTHON虚拟机中的IF控制流    173
10.1.1  研究对象--if_control.py    173
10.1.2  比较操作    175
10.1.3  指令跳跃    179
10.2  PYTHON虚拟机中的FOR循环控制流    183
10.2.1  研究对象----for_control.py    184

10.2.2  循环控制结构的初始化    184
10.2.3  迭代控制    188
10.2.4  终止迭代    191
10.3  PYTHON虚拟机中的WHILE循环控制结构    192
10.3.1  研究对象----while_control.py    192
15.7  高级线程库----THREADING    423



--
新的理论从少数人的主张到一统天下,并不是因为这个理论说服了别人抛弃旧观点,而是因为一代人的逝去。

My blog: http://googollee.blog.163.com

heroboy

unread,
Jul 7, 2008, 2:34:37 AM7/7/08
to TopLanguage
很期待的一本书

dogstar

unread,
Jul 7, 2008, 2:41:07 AM7/7/08
to pon...@googlegroups.com
我以前还觉得奇怪,简介一选择那么多白色字符,原来是防止拷贝呀.这招狠 ...书不错 :)

2008/7/7 heroboy <yangw...@gmail.com>:
很期待的一本书




Eric

unread,
Jul 7, 2008, 9:25:56 AM7/7/08
to TopLanguage
这本书非常好。借这个机会,我正好想说一下我个人对于《源代码剖析》这类书的一个大略的看法。


源代码剖析大致分成两种,一种是对于API 使用方法的源代码剖析,第二是对于框架或软件或库的源代码剖析。第一种相当于给例子代码。我们所熟悉的
Cookbook 系列的书,都是大量大量的贴源代码然后按照行剖析的。这样的书,放在案头,能够帮助程序员迅速熟悉以前不熟悉的 API. 第二种
就是对框架的了。这种源代码剖析,就和看Linux 内核源代码一样,更多的是探究细节,了解各种实现,成为一个真正的通晓工作机理的黑客。应该说,如
果知识准备充分,后者能够让自己的水平上一个新的台阶。当然,需不需要书来作这个剖析工作,就是仁者见仁的事情了。

我长期在开源社区提交一些patch, 或者为个人需要改变一些软件的用法,或者需要为软件写扩展,这些都需要阅读源代码。阅读源代码有一本经典的书,
叫做 Code Reading: The Open Source Perspective (
http://www.amazon.com/Code-Reading-Perspective-Effective-Development/dp/0201799405)
基本上讲了一些注意事项。 我把我自己的体会写下来,供大家参考。

1。 最好带着目的去看源代码。源代码是一种看了容易忘的东西。 因为思路不是自己的,就和小说一样,只能知道大概,记不住细节的。如果不带着目的去
看,看过也就忘了,倒时候还是要看第二遍。比如我几个月前看 fit (mac 下输入法) 的源代码,我也只能说出我看到的智能组词那部分的大概,而
怎么做首句匹配的,我是一点也想不起来了。如果让我写一个替换他首句匹配的函数,八成我还是要重看一次源代码才行。如果不带着目的去看,就和小说一样,
看了也没什么收获,自以为自己懂了,其实自己照猫画虎也不见得会。就和看人做题一样,带着问题去看别人解题,收获更加大。

2。 看之前,要有几个储备: 好奇心,源代码阅读器,和很多数据结构的知识. 我是裸看 GNU coreutils 开始看源代码的。没有文档,也
没有源代码阅读器,只能根据功能,一次一次的编译来搞 (那时候我想自己移植一个到我的嵌入式上,后来才知道有busybox) 我就发现,如果没有一
个好的源代码阅读器 (交叉引用的追踪,函数定义的追踪) 光靠 grep 和笔记本是效率不高的。当然,有了书以后,肯定是事半功倍的了。 数据结构
也是需要的。不是有人说么,其实编程到最后就是实现数据结构。STL, Python 都是此类。 包括boost 很大程度上也是。

3。 做笔记。 我一直没有发现很好的源代码阅读笔记软件。所以我一般都是自己写一个txt, 写上源代码的行,和我的一句话理解,算是索引。然后在相
应的行,打上很重的注释。这样的话,以后不至于迷失。往往是第一次看源代码的时候觉得这个地方不重要,也很好理解,就跳过了。过几天过来看,这个地方很
重要,可是又忘了这个地方啥意思了,这时候急得要死。还有即使当时理解了,还是有个把变量或者函数搞不清楚,几个月后来看,因为搞不清楚的地方,原来搞
清楚的地方也忘了。所以得像啃骨头一样,弄懂一点就要推进一点,赶快写下来(做好也能出本书) 这样,读起来就快了。

总的来说,带着目的去读,再找本好书,读代码很快,也事半功倍。 我强烈推荐这本书给对 Python 实现感兴趣的,对虚拟机感兴趣的,以及给对未知
世界充满好奇的 Python 高手。Python 新手或者对C不是太熟悉的同学看这本书,可能非常困难,故而不推荐。(我很早就跟踪作者的那个专
栏,因此虽然没有读过那本书,基本上对书中内容,十之八九)


Y.X.

On 7月7日, 上午1时41分, dogstar <baojing.j...@gmail.com> wrote:
> 我以前还觉得奇怪,简介一选择那么多白色字符,原来是防止拷贝呀.这招狠 ...书不错 :)
>
> 2008/7/7 heroboy <yangwei...@gmail.com>:
>
>
>
> > 很期待的一本书- 隐藏被引用文字 -
>
> - 显示引用的文字 -

pongba

unread,
Jul 7, 2008, 10:22:03 AM7/7/08
to pon...@googlegroups.com


2008/7/7 Eric <xu.ma...@gmail.com>:

这是很好的书评啊,博文的编辑肯定会乐意转载的:)

dreamhead

unread,
Jul 7, 2008, 11:18:03 AM7/7/08
to pon...@googlegroups.com
个人很期待的一本书!我在写《管窥Ruby》的时候,为了更好的理解语言实现,曾经参考过作者写的一些blog。

2008/7/7 pongba <pon...@gmail.com>:


> 按:一本挺靠谱的书,一个挺靠谱的人:D
> 踏踏实实做事情的人总是令人心生敬意。从作者的前言就可以看出来这是本值得一读的书。我不推荐对所有的细节穷根究底,有一些细节只是..细节而已。但有一些细节却是本质的,这时就体现出知其所以然的重要性了。只要有鉴别力的看待,分清本质细节和非本质细节,这本书的看点应该不会少。作者前言中提到花了两年多的时间来做这件事情,两年的时间,如果专心于某件事情的话,实际上是一段很长很长的时间,所以我相信书中肯定是有料的。
>
> 以下转载前言(猥琐的China-pub网站居然把"前言"页面的文字间随机填充了白色数字字符,使得别人无法拷贝,靠!它又不是靠文章浏览量赚钱的,无语了,实在不够大气..
> )
>
> 搜了一下,作者的博客在此,上面有大量连载的《Python源码剖析》。
>
> 前言

> 第一次接触Python,是通过《程序员》杂志上"恶魔吹着笛子来"的系列文章----《自由与繁荣的国度》。但是真正开始使用Python,还是在进入实验


> 室,开始研究自然语言处理和信息检索之后。自然语言处理其实大部分的时间都在与文本打交道,需要进行大量的对文本分析、统计的工作。开始的时候,我使用的
> 是C++,因为大学的时候第一门编程语言课就是C,其后转向C++是很自然的迁移。那时候觉得C++很有一种高贵的感觉,因为C++足够复杂,有足够多的
> trick,尤其是像模板和泛型编程这样的新鲜玩意儿。掌握这么复杂的东西,也就意味着你的脑袋跟这东西一样复杂,这是很能让人虚荣的一件事。
>
> C++的复杂性是个仁者见仁,2智者见智的话题,2但其实回到文本处理这个话题上来说,2C++的STL在很大程度上已经足够好用了.a文本处理不是服务器,2所以不需要考虑自己管理内存,2不需要考虑这个模式那个模式,2STL提供了足够多的工具,2简单组装一下就可以用了.
>
> 但俗话说得好,3"不怕不识货,3就怕货比货",3当我开始尝试用Python来进行日常的工作之后,3突然发现C++太复杂了.对于Python,3我的感觉只有四个字:摧枯拉朽.a我只需要简单地写一个lc=c[c],3再也不用写诸如list<cmapcstring>c>clc=clist<cmapcstring>c>()这样折磨人眼的东西了,3这使得代码量急剧减少.a对于采用Python这样的英明决策,3我想,3最满意的就是我的手指头了.(剩余部分)
>
> 目录
> 第0章 PYTHON源码剖析--编译PYTHON 1
> 0.1 PYTHON总体架构 1
> 0.2 PYTHON源代码的组织 2
> 0.3 WINDOWS环境下编译PYTHON 4
> 0.4 UNIX/LINUX环境下编译PYTHON 7
> 0.5 修改PYTHON源代码 7
> 0.6 通往PYTHON之路 9
> 0.7 一些注意事项 10
> 第1部分 PYTHON内建对象 13
> 第1章 PYTHON对象初探 15
> 1.1 PYTHON内的对象 16

> 1.1.1 对象机制的基石----PyObject 17

> 第6章 最简单的PYTHON模拟----SMALL PYTHON 101


> 6.1 SMALL PYTHON 101
> 6.2 对象机制 102
> 6.3 解释过程 106
> 6.4 交互式环境 108
> 第2部分 PYTHON虚拟机 111
> 第7章 PYTHON的编译结果--CODE对象与PYC文件 113
> 7.1 PYTHON程序的执行过程 113
> 7.2 PYTHON编译器的编译结果--PYCODEOBJECT对象 115
> 7.2.1 PyCodeObject对象与pyc文件 115
> 7.2.2 Python源码中的PyCodeObject 116
> 7.2.3 pyc文件 117
> 7.2.4 在Python中访问PyCodeObject对象 120
> 7.3 PYC文件的生成 120
> 7.3.1 创建pyc文件的具体过程 120
> 7.3.2 向pyc文件写入字符串 124
> 7.3.3 一个PyCodeObject,多个PyCodeObject 128
> 7.4 PYTHON的字节码 129
> 7.5 解析PYC文件 130
> 第8章 PYTHON虚拟机框架 133
> 8.1 PYTHON虚拟机中的执行环境 133
> 8.1.1 Python源码中的PyFrameObject 136
> 8.1.2 PyFrameObject中的动态内存空间 138
> 8.1.3 在Python中访问PyFrameObject对象 139
> 8.2 名字、作用域和名字空间 140

> 8.2.1 Python程序的基础结构----module 140


> 8.2.2 约束与名字空间 141
> 8.2.3 作用域与名字空间 142
> 8.3 PYTHON虚拟机的运行框架 149
> 8.4 PYTHON运行时环境初探 152
> 第9章 PYTHON虚拟机中的一般表达式 157
> 9.1 简单内建对象的创建 157
> 9.2 复杂内建对象的创建 163
> 9.3 其他一般表达式 166
> 9.3.1 符号搜索 166
> 9.3.2 数值运算 169
> 9.3.3 信息输出 171
> 第10章 PYTHON虚拟机中的控制流 173
> 10.1 PYTHON虚拟机中的IF控制流 173
> 10.1.1 研究对象--if_control.py 173
> 10.1.2 比较操作 175
> 10.1.3 指令跳跃 179
> 10.2 PYTHON虚拟机中的FOR循环控制流 183

> 10.2.1 研究对象----for_control.py 184


> 10.2.2 循环控制结构的初始化 184
> 10.2.3 迭代控制 188
> 10.2.4 终止迭代 191
> 10.3 PYTHON虚拟机中的WHILE循环控制结构 192

> 10.3.1 研究对象----while_control.py 192

> 15.7 高级线程库----THREADING 423

--
Everything is simple!

lbaby

unread,
Jul 7, 2008, 9:16:21 PM7/7/08
to TopLanguage
拿实际经验说话,呵呵

On 7月7日, 下午9时25分, Eric <xu.math...@gmail.com> wrote:
> 这本书非常好。借这个机会,我正好想说一下我个人对于《源代码剖析》这类书的一个大略的看法。
>
> 源代码剖析大致分成两种,一种是对于API 使用方法的源代码剖析,第二是对于框架或软件或库的源代码剖析。第一种相当于给例子代码。我们所熟悉的
> Cookbook 系列的书,都是大量大量的贴源代码然后按照行剖析的。这样的书,放在案头,能够帮助程序员迅速熟悉以前不熟悉的 API. 第二种
> 就是对框架的了。这种源代码剖析,就和看Linux 内核源代码一样,更多的是探究细节,了解各种实现,成为一个真正的通晓工作机理的黑客。应该说,如
> 果知识准备充分,后者能够让自己的水平上一个新的台阶。当然,需不需要书来作这个剖析工作,就是仁者见仁的事情了。
>
> 我长期在开源社区提交一些patch, 或者为个人需要改变一些软件的用法,或者需要为软件写扩展,这些都需要阅读源代码。阅读源代码有一本经典的书,
> 叫做 Code Reading: The Open Source Perspective (http://www.amazon.com/Code-Reading-Perspective-Effective-Development/...)

Leo

unread,
Jul 8, 2008, 8:56:22 PM7/8/08
to TopLanguage
大家有什么推荐的代码浏览器么,除了vim和sourceinsight之外。

Jun Yang

unread,
Jul 8, 2008, 9:11:04 PM7/8/08
to pon...@googlegroups.com
我在Linux下用过SourceNavigator ,感觉还行

2008/7/9 Leo <firem...@gmail.com>:
大家有什么推荐的代码浏览器么,除了vim和sourceinsight之外。




--
yangj...@gmail.com
http://hi.baidu.com/yjpro

lbaby

unread,
Jul 8, 2008, 10:23:13 PM7/8/08
to TopLanguage
可以使用doxygen 生成代码的html索引,然后用你喜欢的浏览器看,还可以生成类关系和调用关系图
只是对大工程的话,建索引时间可能比较长而已

On 7月9日, 上午8时56分, Leo <fireman...@gmail.com> wrote:
> 大家有什么推荐的代码浏览器么,除了vim和sourceinsight之外。
Reply all
Reply to author
Forward
0 new messages