ChinesePython Wiki   我为什么也选择了 python UserPreferences
 
 ChinesePython Wiki   中蟒大杂院   最近修改   标题目录   文字目录   站内导航   求助 

我为什么也选择了python -- glace (2002年5月)

接触 Python 是两年前的事了。那时因为要写个程式来分析数值资料,开始的时候打算用自己最熟的 PHP,试了几下,很不顺手。后来转用了 Perl,开始的时候都挺顺利的。直至有一天整理程式,想把写好的几个东西整理成一个工具箱给自己用,试了半天就放弃了:根本是精神虐待。反省后觉得自己学 Perl 只会走捷径,打算上网找些基本的学习文件从头努力,但竟然找到了 Python 的网页。就这样开始了学 Python,而且是欲罢不能。现在我要写什么,基本上都是先考虑用 Python,一来实在好用,二来用 Python 写的程式总会有重用的机会,所以手头的工具越来越多,用起来就更得心应手了。

如果你以前只会用 Shell Script 或是 DOS Batch File 而想学些其他的东西,Python 会是你的首选,如果你己经会 Perl 或是 Tcl 或是别的什么,那 Python 会令你改变对 scripting language 的想法。

为什么要学 Python?

答:好玩。就是这样简单。无论是学 Python 还是用 Python,都是一件赏心乐事。当你写 shell scripts 写得鬼哭神号时,当你改 perl scripts 改得头昏脑涨时,有没有想过写 script 其实是很好玩的一件事。你可能从来不相信当你写一套严肃而功能强大的程式,你可以用一个如此好玩的程式语言来开发。更难令你相信的是,就算在程式开发的后期,甚至是几个月以后当你再次想修改它的时候,你依然都会觉得是一件好玩的事。

Python 能做什么?

答:倒不如问,Python 不能做什么? Python 已经差不多把一个 scripting language 作为整合工具 (gluing tool) 的强大功能完全发挥了出来,任何程式,只要有个给 Python 用的接口,Python 就可以把它据为己用,和其他的程式一块使用。而且

和其他语言的比较

一般的说法的这样的:

但事实上我个人的感受最深的是它比较好玩的说法。虽然像是不认真,但一种可以让人寓编程于娱乐的程式语言,正是程式语言的设计终极嘛。

Python 的作者是数学家,而 Perl 的作者则是个天才程式员。因此这两种语言的风格回异:Python 语法铺排的很整洁,相同功能的程式由不同人写出来的样子都很像,这些一致的、前后呼应的程式对于系统的拓展和整合十分重要。因此阅读 Python 的程式感觉上很畅顺。Perl 的语法则很浓缩,而且经常会有些意想不到的巧思,可惜这些每每体现在字里行间的妙着对整个程式的可读性带来负面影响。因而一个短小的 Perl 程式往往令人爱不释手,但当它越来越长时总会变成程式员的永痛。

至于PHP,因它的发展历史一直是围绕着 web page,所以做网页设计是十分方便的,但是写一般的工作则平平无奇。比如说控制执行绪,处理进程间的讯息传送以致做图形用户介面等都久奉,这是因为从 WEB 的角度,这些并不重要:图形介面,HTML 就己经是了,而程式的执行和互相合作则是 Web Server 要考虑的事。

我推荐 Python 是因为我觉得它比较适合用作一般性程式编写和系统整合,尤其是在科学和教育领域中。我并不是说大家没本事学好 Perl,只是很多时候我们并不需要用到 Perl 的精妙之处,更多的时候用一个清楚直接的描述要比用一个智力题级的招数更有好处。除了语法的设计较为整洁外,Python 还有很好的对电脑图形的支援,也有十分快的数学阵列模组。

而它最方便的地方是很容易的把其他的程式整合在一起,譬如说你有个几年前写的 C 程式,只要修改很小的一部份就可以编译成 Python 可用的模组。事实上已经有自动帮你做这些修改的程式了,人们也己为许多各种好用的函式库做出了 Python binding,如 OpenGL、GTK、QT、GD、甚至于解方程组的、找频谱的都有。

而在使用了一段时间后,我开始体会下面的说法:

虽然它们各自都有类似的功能,但在使用时会发现 Python 的写法总是较为一致,这是因为 Python 从一开始便考虑了它整个的架构。相反,像 Perl 或 PHP 则有很多功能都是后来慢慢加上去的,所以到后期 Perl 的发展越来越难,以致 Perl 6 几乎要从头设计。而 PHP 则现在才开始头痛于构思新的函数名称 (所有的 PHP 函数都是全域定义的,所以每加一个函数都有可能和已经定义了的名字重复)。为了解决问题,它们各自都开始注意加强 class, object 的支援。但很明显的是,在程式成熟后再加这些基本功能会令整个语言的框架变得头重脚轻,无论是写起来还是用起来都有些不稳的感觉。

然而 Python 在一开始的时候就把这些考虑了进去:Python 根本就是以物件导向作为设计的基础。因此在加了许许多多的功能和模组后,它的风采仍旧,清新依然。

好话说了不少,光说不练可是不行。参考程式示范区的实际例子,看看 Python 到底是怎样一回事。


PythonPowered
编辑文字 of 本页 (上次修改 2004-01-29 07:18:10)
查找页面 by browsing, title search , text search or an index
或尝试以下动作: LikePages, LocalSiteMap, SpellCheck