Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145479
  • 博文数量: 54
  • 博客积分: 2682
  • 博客等级: 少校
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 20:56
文章分类
文章存档

2012年(2)

2011年(10)

2010年(28)

2009年(14)

我的朋友

分类: C/C++

2010-01-11 14:47:08

比较仔细的看完了python源码剖析这本书的第一部分,让我明白了如何用c语言来实现对象机制。当然,到目前为止,还没有提供public, private等权限控制符的实现,呵呵,我猜想实现起来不可能吧。
 
从PyObject到PyIntObject,PyListObject,PyDictObject,我大致理解了python内部的一些稀奇古怪的东西,对“空间换时间”有了一个实际意义上的理解,因为这几个类的实现中用了很多缓冲池,按我的拙见,就是事先在内存中开辟一个区域,以减少零碎调用malloc函数的开销。
 
觉得自己在c的工程方面也学了很多。对于一个健壮性要求很高的工程,考虑的因素往往是可重入,模块化,层次化等问题。这些问题我在crack hadoop源码的时候也体会很多,这次算是更加坚定我的理解了,谁叫高手们都这么弄捏。。
 
最有意思的是我发现了一些连接“工程”和“数学”的地方。一些精巧的数学抽象能起到四两拨千斤的作用,比如hash函数的实现,其实我承认看到现在我还没有仔细钻研PyStringObject的hash实现,还有hash检索中冲突链的处理方法。
 
在第一章最后,作者还非常可爱的实现了一个smallpython。这个smallpython对我理解一个新的语言的结构很有帮助,知道了python是从源码,经过编译模块,建立语法树等等编译原理里要学的技术,然后才调用内核模块的。
 
所以,如果要自己开发一门新的语言。我觉得至少得在如下几个方面做到:
1.大规模系统开发经验。
2.编译原理及优化的掌握
3.为这个语言提供一些必备的数据结构的高效实现。
 
总而言之,我还远没那个水平。。。
 
作者在实现intobject.c里的方法时,没采用函数类型强制转换,导致多了一些多余的代码,呵呵。我在上篇里记载的图里说了函数类型强制转换,挺有意思的。
阅读(691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~