深刻揭示Python 与C/C++互动

发布时间:2019-08-25 09:32:39编辑:auto阅读(1332)

    按:陈儒先生的《Python源码剖析--深度探索动态语言核心技术》已经上架销售,欢迎大家评论、样章试读和购买。

    点击下图免费试读:

    Python源码剖析

    海猫MSN上问我:能否帮着写一篇《Python源码剖析》的书评?他给我发这条信息时,我正在聚精会神地敲一段超无聊的代码,我看到这话吓了一跳,脑子一激灵,手一颤抖,一个伟大的死循环就此诞生。

    我知道,这都是上次写书评被人骂了之后留下的后遗症。教训深刻呀,它让我再次清醒地认识到,胡说八道是没好下场的,作孽总会遭报应,只不过有现世现报的,有来世再报的,也有子子孙孙无穷报的,总之不是不报而是时候未到的。

    所以这次我学乖了,在决定写下以下的文字之前,我找海猫要了近一半的书稿内容,打算好好啃上十天半个月之后再码个三五万字的、足以让鲁迅先生汗颜的 书评出来,灭灭那帮鄙视我的IT人的威风,并以此向他们证明一点,即老韩我在技术上菜是菜了一点,写出来的文字也是俗了一点,骂人骂得是没品位了一点,但 百无一是之中总有一样是可取的,那就是:起码我挑错别字还是眼光毒辣的。

    但事实证明我错了,拿到书稿之后,翻完第四篇我就开始后悔,不仅后悔,甚至悔得连自杀的念头都有。因为......理由嘛,就像现代社会女人口中的"爱"字一样,很难说出口。待我梳弄完百结千愁的郭敬明式的忧伤,浅吟低唱着向你道来--因为实在看不懂。 
     
    这是个历史问题,其渊源可以追溯到Long Long Ago的好几年前,那时年少,风华正好,年轻的我有着年轻的心以及两弯水汪汪的大眼睛,那时我在自学一门语言叫做C语言,用的教材是谭浩强老师的《C语言 程序设计》,数月后,自以为学有所得,甚是高兴,高兴之余便开始夸下海口说我要搞编程,抱着这种想法,挤进了IT圈。然而挤进门去之后却没高兴太久,因为 慢慢的我发现,一般情况下的大部分时间里,不是我在搞程序,而是程序在搞我。究其原因,是因为谭老师显然是一个理论家而非实践家,在看他那伟大的《C语言 程序设计》的时候,他书中的大部分例子对我而言只是起到了酒精的作用:看时感觉很High很懂,而事实上转天即忘。你知道,当一门伟大的语言堕落到只用于 解答纯粹的数学问题而对解决实际问题百无一用的时候,学习者也容易堕入到自以为是的怪圈,即:自以为什么都懂了,而事实上什么都没懂。不幸的是,在IT圈 也如同在娱乐圈一样,凡事也是要讲潜规则的:做为一个底层程序员,不是你能说会道资本家就会给你工资,做不出东西来只有一条路可选那就是卷铺盖走人--长 得帅被老板娘看上的除外。

    于是乎,满以为找到黄金宝藏的我时运不齐、命途多舛,刚刚挤进门就被赶了出来。被赶出来之后我就再也没有碰C这个东西。并转行做起了设计和责编(混饭吃),再后来的故事就有点俗套了:因生计故,最后被逼良为那什么成了一名PHP程序员并一路混到了今天。
    当然,这段话和我要写的书评完全没有关系,按小说的逻辑来说可以算是个楔子,即交代完主人公的前世今生,下面才是正文。

    从上面的介绍您应该可以看到,我其实是个菜鸟。那么,聪明的您、资深的您也许就要问了,这博文怎么回事?找一个这么没文化的菜鸟来写书评,海猫同学脑子进水了吧?--说得有道理,我估计也是,海猫嘛,在海上泡这么久的猫,脑子不进水那是神,或者机器猫。

    而事实是,高手是不写书评的,高手都写序去了,比如为这本书写序的三位专家,那可是国内Python界如雷贯耳的名字(我还就用夸张的词,不怕你说我拍马屁,何况,他们本来不是马,你们鄙视不到我。): 
     
    一、李迎辉(limodou,史称木头):Python-cn社区资深会员,貌似创始人之一?UliPad的作者。

    二、黄冬:新浪邮件中心Leader,貌似在写一个开源的DNS服务器。

    三、冯大辉:著名DBA,《Learning Python》(Python语言入门)第一版的译者之一,国内Python先行者之一,dbanotes.net站长。  

    大家可以看到,大师们是不屑于写书评的。但这活总有人干呀对吧,所以,这就有我这等小角色的用武之地了。因为书评者,读者眼中事也。

    言归正转,首先说,这是一本好书--无论你认同与否。或许你要说:扯吧你就,你帮别人写书评,你当然不会说这是一本不好的书呀。随便你怎么理解,但我要说,这真的是一本好书,理由是:它除了是一本好书还是一本好书。(有这么胡搅蛮缠的吗?)

    我有我的理由: 

    一、真正用Python或者PHP做过网站的都知道,脚本语言最大的不足就是效率问题,同样的一个处理,用C写的模块来处理,可能会比用脚本语言写 出来的快上10倍甚至更多,而这也正是PHP Perl存在的理由以及诸多C写的python模块存在的理由。举一个最直接的例子,在我用python来解析JSON的时候,经测试,cjson的处理 速度是py-json处理速度的9倍。而在我使用python-memcach模块的时候,也同样有这样的问题,C写的模块,其匹配key的效率基本上是 py-memcache的4-5倍,尤其是对较长的字符key的匹配。这就说明,如果要写出高效率的脚本程序来,那么用C来写模块是必由之路,所谓算法优 化之类的讨论完全是属于扯谈,程序员中没多少是很牛的数学家,如果你不能曲径通幽,那我劝你还是老老实实地把握好语言的优势,也可算是蹊径之一。而 《Python源代码分析》正好为你提供了研究python核心代码的知识,让你成为Python高效率程序开发员成为可能。
     
    二、研究一门脚本语言,深入的去研究其运行机制是很重要的,因为这可以为你以后写出更高效率的代码打下基础,毫无疑问,一个懂得脚本程序运行机制的 开发人员,写的程序无论是执行效率还是程序规范,都会比一个只会字符串操作的开发人员写出来的强的。这就如,一个懂得重力加速度以及人体脆弱部位的人与一 个啥都不懂的人,在跳楼自杀的效率上总是前者高于后者一样(这什么破比喻呀)。  

    三、纵观全书,作者对Python的对象机制、数据类型机制、编译机制、内存管理机制,分析得还是比较透彻的,这在一定程度上有助于从C阵营转过来的Python新手更快的理解Python。

    四、这本书的作者陈儒老师文学功底很深,像个文人,纵观全书,诸多词汇信手拈来,行云流水。抛开其中一些晦涩的术语不谈,光文字就很精彩。比如下面 这很有意思的一段:"列位看官,花开两朵,各表一枝。我们先把这个问题放一放,看一看在Python开始运行时,第一个PyListObject对象被创 建时的情形。嗯,这有点像上帝创世纪,挺有趣的。"--是不是有点古龙或者金庸的味道?

    当然,不能总是夸奖,也有不足,不足之处在于有些地方作者太过于注重语言表达而不是平铺直叙,我觉得这可能是作者忽略了技术书的使命的结果,或者也 许是作者对自己文字水平太过自信的结果,无论如何,我们不得不承认的是,作者的优点也恰恰是其缺点。尽管书中太量的实例在一定程度上弥补了这种不足,但瑕 不掩疵,终为诟病。
    而需要说明的是,这书说实话并不适合Python初学者,尤其是没有C或者C++基础的初学者。  

    以上为个人看了几篇样章之后的观感,不足成其为书评。只算是一家之言吧。如前面所言,本人技术水平不怎么样,不敢做更深层次的技术上的评判,但愿没有误导您。倘若误导成为了事实,欢迎你骂我,但请别带上我爸妈以及我的亲人--因为他们比我更不懂技术,这不是他们的错。

    作者:搜狐老韩

    更多推荐书评:




关键字

上一篇: python之路day5

下一篇: Python中的元编程