Python与其他脚本语言相比如何?
我正在学习Python(这是我学的第一门编程语言,所以请不要太严厉地评价)我想知道Python和其他脚本语言,比如Perl和Ruby相比,表现如何。Python在哪些方面比其他脚本语言更好,又在哪些方面表现得不如它们呢?
3 个回答
这里有一个很好的介绍,讲述了为什么Python(这门语言)是开始编程的一个很不错的选择:http://www.python.org/about/
Python自带了一个非常全面的标准库(也就是“自带电池”),这让你可以解决很多编程问题。
一旦你学会了Python,我建议你也去学其他语言,比如Ruby,因为不同的编程语言提供了不同的思维方式,这样可以拓宽你对计算模型的理解。
我正在学习Python(这是我学的第一门编程语言,所以请不要太严厉),我想知道它和其他脚本语言,比如Perl和Ruby相比怎么样。Python在哪些方面比其他脚本语言更好,在哪些方面又不如它们呢?
在我看来。
我尝试过Python 2.x一段时间,然后又回到了Perl和C++。
Python的优点在于,它的可移植性更好,还有现代的图形用户界面库。在某些地方,标准库也非常不错(我特别喜欢随机数功能)。在算术表达式的执行速度上,Python比Perl快。
Python的缺点是,文档不够完善。没有警告,类型检查也很弱,加上语言的动态特性,使用起来很麻烦。学习起来简单,但使用起来困难,主要是因为优化器不成熟,导致在开发初期就需要考虑性能问题(这让我有时想起Pascal)。面向对象的编程现在也很混乱:旧式和新式类之间的不同之处没有很好地说明;库里也没有提到它们定义了什么类型的类。
文档不完善这一点应该特别提到。有很多标准函数,但它们的用途并没有明确说明,也没有给出好的例子。而在Perl中,很多标准函数的说明会在perldoc perlguts
里找到。总之,用Google查找资料要快得多。
缺乏警告和类型检查(与Perl的use warnings
/use strict
和子程序原型相比)最终让我选择回到其他语言。部分原因是我写代码的速度比我读代码的速度快,所以我希望编译器/解释器能告诉我哪里写错了。
另外,抱歉,我还是想提一下Python:用缩进来表示代码结构有点奇怪。我并不介意这个,对于短函数来说,这样很好。但经过一周后,我发现我读Python代码的速度比读C++或Perl慢,主要是因为我总是要额外检查语句是否真的结束。如果代码不在一个屏幕内,就得不停地按PgDown/PgUp来查看。之前我从未如此感激{}
的存在。
总的来说,Python现在有点混乱。虽然我会继续关注它,但还不够成熟,无法满足我的日常需求。如果我现在要决定学习Python,我会选择等Python 3.x成熟后再学。现在用Python 2.x学到的很多东西在Python 3.x中可能没用。而且目前Python 3.x也不太好用,因为很多库还没有移植过来。
附言:我遇到的最糟糕的部分是函数指针。我在需要它们之前就发现了它们,我写了start_time = time.time
和time_elapsed = time.time() - start_time
。半小时后,当脚本结束时,我没有看到结果,而是得到了一个漂亮的解释器异常,告诉我不能减去函数对象。那半小时是因为我按照教程学的标准for
循环。后来我查找的优化(range
与xrange
,手动展开循环)让脚本在不到一分钟内就运行完了。
首先,给你一个建议——要关注来自不同观点的积极评价。也就是说,你应该更信任与Python相关的来源对Perl的正面评价(或者与Perl相关的来源对Python的正面评价),而不是相反的情况。
原因有两个:
1) 喜欢Python的人通常不会轻易说Perl的好话,除非他们真的想客观评价(这正是你希望的)。反之亦然——这其实是人类的偏见和动机问题,而不是Perl或Python本身的问题。
2) 写这种比较文章的人,往往对他们不喜欢的语言了解得很少,甚至完全错误。作为证据,可以看看这篇文章:http://python.about.com/od/gettingstarted/ss/whatispython_5.htm——它对Perl的描述,温和地说,简直就是胡说八道。我相信Perl的粉丝也会有同样愚蠢的对Python的贬低,只是我对Python了解不够,想不出具体的例子。
其次,请注意,至少对于Perl——我强烈怀疑Ruby和Python也是如此——“脚本语言”这个称呼现在已经不太适用了。
是的,它们(尤其是Perl)的起源与shell脚本有些关系,确实有一小部分功能可以用来写shell脚本,这样的小任务也确实很简单且高效。
然而,到了现在,Perl的历史已经很长,它的功能远远不止于此,已经被用来开发从脚本到网络框架、服务器、大型企业软件,再到生物信息学软件的各种应用。
第三,请看看这个链接——里面有很多相关链接: