技术开发 频道

专访Guido van Rossum:迎接Python 3000

【IT168技术访谈】Guido van Rossum是Python编程语言的创始人,现在就职于Google公司,但在他的大部分时间里他都还在为Python语言的发展而努力。自1989年Guido在ABC与语言的基础上创建了Python语言,目前这门语言不仅得到其他开发社区的认可,比如JPython和IronPython的广泛应用,在教育和科学技术领域也起到举足轻重的作用,据Guido介绍,Python甚至可以和价格昂贵的Matlab等商业软件相媲美。在5月31日举行的Google开发者日期间,InfoQ中文站的编辑霍泰稳对Guido van Rossum就Python的相关话题进行了交流。

InfoQ中文站:你为什么决定加入Google?目前在Google的主要工作是什么?

Guido:首先,我决定加入Google,是因为我有很多朋友都是Google的员工,他们告诉我说Python是Google的三大主要编程语言之一,在Google工作的感觉很棒,于是我就加入进来了。现在我在Google的工作主要有两部分。一部分工作是Python3000的开发项目,因为我们现在要出3.0版本;另一部分工作是为Google内部的工程师提供开发工具,比如我开发了一个代码检测(CodeReview)工具,用于工程师之间相互检测编码,收到了很好的效果。

InfoQ中文站:Python未来的发展方向是什么?Python3.0中最值得关注的特点是什么?

Guido:现在我们所做的是尽快开发出新的版本Python 3000。Python 3000的推出应该是在明年夏天北京奥运会的时候。编程语言的发展通常有两种方式,一种是传统的方式,它使得语言越来越复杂。另一种是创新式,Python 3000将坚持走新的编程语言路线。Python 3000中,我们将更加简化编程语言,去除所有的图形功能,取而代之以更加简洁和优雅的新特征。Python 3000中较为明显的一个特征就是增加了对Unicode的支持,比如你可以在定义变量、创建函数或定义类名上直接使用中文来进行编写。但是,对于一些核心的关键字,还是会保留使用英文。

InfoQ中文站:现在Python似乎受到了来自Ruby的挑战,后者更加面向对象,你如何比较这两种出色的动态语言?Ruby在元数据编程方面似乎更加方便,Python是否可能在这方面有所改进?

Guido:你刚才提到,相比Python,Ruby是更多地面向对象的编程语言,对此我不敢苟同。其实,Python也是面向对象的。在Google公司,曾经有人提出要用Ruby来编程,而且也得到Google管理层的支持。于是,他们用Ruby来做项目,最后却失败了。失败的原因不在于Ruby语言本身是否比Python更好或者更差,而在于Google内部用不着花费那么多的金钱和精力去支持多种语言。从编程的角度来说,我想Python 3000会有所改进,如引进泛型函数(generic functions)、抽象类(abstract class)等。我相信Python目前在很多方面都比Ruby更成熟,比如说它的运行速度更快、用户数量更多,而且支持第三方的编码软件数量也更大。

InfoQ中文站:刚才你也说到Python的性能比Ruby好很多,但是Python到现在为止还未出现向Ruby-on-Rails这样的Killer Application。你如何看待Ruby-on-Rails?Python社区何时可以出现这样的杀手锏应用?

Guido:对于杀手锏应用,我个人并不十分迷信。如果你太看重杀手锏应用的话,实际上你可能会把焦点放错地方,或者你可能太专注于某一个方面。刚才你谈到Ruby on Rails这个框架,实际上是因为Ruby它只有这样一个Web应用的框架。而Python则有好几个应用框架,比如Django(这是一个非常不错的框架)、TurboGears(有人说它完全可以和Rails媲美)、Zope等。这些Web框架与Ruby on Rails相比,发展时间更长,也更成熟。另外,我还想特别提到的一点是,Python也已经进入到科学研究的领域。实际上,在美国、还有欧洲的很多政府和学术界的实验室已经开始使用Python来替代一些商业化的工具,同时还专门建立了一个数字库(numeric library)来更好地支持Python。而且,Python也广泛地为教育界所采纳。美国的很多初中、高中以及大学(包括麻省理工、剑桥大学等)一二年级的学生,通常将Python作为其在编程语言方面的入门级课程。

InfoQ中文站:现在比较流行的是在虚拟机平台上支持动态语言,像微软有DLR(Dynamic Language Runtime),Java也有类似的Jython,你如何评价.NET平台下的动态语言支持和Jython之间的竞争?我们是否能够看到动态语言之间的兼容性,比如放在一个平台上如JSR 292?

Guido:我认为微软能够接纳Python是一件很好的事情。对于JVM上的Jython,我也是非常支持的。 我很高兴看到,通过改进平台对动态语言的支持等项目,动态语言终于获得了它们应得的认可。.NET和Java世界都在飞快地增长,两者之间的竞争是显而易见的。我不知道下一步将会出现什么情况。但是我想,在很长一段时间内,两者对于全世界的开发者来说都是很重要的。我很高兴,Python能够成为这两个平台上解决方案的一个重要部分。随着人们对Python支持的增加,使用Python的人也会越来越多。

对于动态语言之间的兼容性,我想当然是有这种可能的。.NET平台和JVM都支持元语言(meta language),.NET从一开始就是为支持元语言而创建的,JVM也可以用于元语言并增强支持。JSR 292并不一定要使得动态语言的运行速度更快。我想,你在这些平台上能看到的最大用处,不是这么多的动态语言之间的相互兼容,而更多的是动态语言与用静态语言(如JVM上的Java,以及.NET上的C#)来写的库之间的兼容,我想这将是一种更为常见的编程方法。所以,你可以看到动态语言之间的一些联系,平台通过一些对象类型、或者基本的数据如String或者Class等使之具备兼容的可能性。由于每一种语言在接口上能够与另一个平台实现很好的兼容,所以要成功地在动态语言之间实现兼容也是有可能的,但是不能指望它成为这些平台上的杀手锏应用。

InfoQ中文站:我知道在Python 2.5当中增加了一个新的条件负值语法规则,而且Python文档里说是Guido最后决定采用这种形式,我非常好奇您自己为什么选择这样的形式?

Guido:其实我本人一开始不是非常愿意的,因为我的宗旨是把Python做成非常小巧的,人脑能够记住和能够把握的语言,而不是经常查阅用户手册。因为有时候一个功能一个月才能用到一次。其实在很多年之前就有人向我建议,说建议加入这样的语法。后来越来越多的人告诉我说他们经常用到这个语法。其实没有这个语法也是豪无问题的。但最后我妥协了,将这个语法加进来了。

InfoQ中文站:事实上,Python在中国的使用者还是比较少,而且限于高水平的开发人员自娱自乐,请问你有没有什么好的建议来推动Python在中国的发展?

Guido:关于这一点,我想可以有很多方式来做。比如,CSDN网站上有人在翻译我的英文Blog。出版社也可以考虑出一本中文的Python教程或图书,或把一些现有的Python书籍翻译成中文。另外,也可以组织一些Workshop或者会议,例如在美国、欧洲、阿根廷、韩国等地都会每年举办一次Python的大会,有各种用户组合开发者社区的活动。我认识一些人,他们在北京成立了一个Linux用户组,我想这对我们Python在中国启动用户组是一个很好的开端。

0
相关文章