透过Python...
在Web技术发展迅猛的今天,世界变得越来越小,一切都在移动!近期接触Python语言,做了点滴剖析,却真切地感到:“世界其实很大很大,奇妙无穷!”。Guido van Rossum和他的团队以ANSI C实现Python语言,确切地说是以“静态语言C实现了动态语言Python”,让我又再次领略了C语言、C++语言的强大,感受着OOP和模式的高尚。
Python作为一门面向对象的动态语言,它的对象机制透着严谨的哲学道理和统计学原理,在“内存”这片雷区写下了新的篇章。在编程的世界里,内存操作给开发人员带来的是长久的伤痛和感叹。在众多的国版计算机书籍中,林锐先生的《高质量程序设计指南》在讲解“指针和内存”上是独树一帜,短小而精悍,其他书籍一带而过或只字不提,究其原因:书的作者自己也不敢深入内存。“指针”,仅两个字而已,但足以令很多人望而生畏,也许它的名字不好,一个“针”字让人坐立不安!记得工作有过这样一个经历:写了一个COM组件,用了指针,主管则喊我谈话,告诉我说指针尽量少用,当时我感觉到:主管在指针上有过惨痛的经历。
讲到内存配置,STL做到了恰到好处,不蕴不火,初显内存操作的神奇,而Python则更进一步:策略性正确地将内存配置发挥得淋漓尽致,在上实现了多态机制,同时提供了强大的内省能力。在很多人倡导C类型转换不安全的今天,Python借着C 类型转换稳步前行,安全指数无庸质疑,这也说明是人编写的代码导致了安全问题而不是语言。除了静态的内置类型对象,Python所有的对象都产生于令很多人望而却步的“堆”上,从这点上看,Python的实现涉及了大量的内存分配操作。从另一点看,虽然使用了大量的内存分配操作,但用Python编写的代码运行良好,如果不是涉及大量的底层数据,程序效率和质量都还可以,有点违背常理。究器原因,Python基于统计学原理使用了内存缓冲策略,从而达到内存操作的合理和高效。
讲到宏,很多人嗤之以鼻,“太烂了!”对于这样的话可以这样看待:一、宏本身是好的;二、写的宏烂;三、滥用宏。Python实现中使用了宏,精妙无比,说它四两拨千斤绝不为过,从数据定义到函数例程,使用了一些含义精准的宏。这些宏在实现Python的过程中有效地控制了复杂度,同时提高了代码的可读性和内聚性,做得很棒很棒,我能给予的只有一次又一次的佩服和感叹。
在类的封装上,对于成员变量,Python没有提供语义上的权限访问控制,代之以“命名重整”机制实现访问约束,这也是Python的一种精神:没有绝对,只有相对。这种访问约束是现实世界很好的映射,不知道这样的哲学其他语言是否考虑了。正因为这样贴切的考虑,Python的语法很自然,编写的代码阅读性好!语法的简洁自然应该是一门语言追求的目标。C++之父Bjarne Stroustrup说:“Speak C++ As The Native Language!”,但“Speak Python As The Native Language”会更容易些!(但C++的强大是无疑的,必要的时候要将Python中的性能瓶颈代码用C/C++重写优化扩展进Python)
欧洲人治学的态度历史讲得很多(德国人的严谨已经见识过了),透过Python,使我看得更透彻,这一点荷兰人的足球是很好的证明!
Ruby是由日本人创建的一门动态语言,网上许多人将其与Python做比较!不知道在它的世界里是怎样的一种风采,是否透着日本人的强势精神。有机会,我想应该去了解它,也许能从另一面更好地认识亚洲两国的IT文化理念。