Python, Ruby和Perl (2)

我曾经发过这个比较,今天发的是第2版。为了和原来的比较,您可以查看 Python, Ruby和Perl

 

      这一年多以来,我使用Python的频率很高,可以说,现在我能熟练的使用Python。我用Python完成过以下功能:

(1) Telnet Server 和 Web 管理界面

(2) Clearcase 脚本 -- 查找最新版本是不是都打上了标签,某行代码是谁,哪一个版本第一次引入的,根据关键字自动设置view

(3) 测试 -- 模块测试,测试核对数据工具

(4) 代码生成工具

 

草草估计,应该也有5000行以上的代码。(Python 5000行代码不是Java或者C++)

 

我经常使用的一些Python Library:

socket

subprocess

re

string.Template

logging

unittest

sys

getopt

threading

glob

xml.etree.ElementTree

 

经常用到的Python“高级”技术是:

List Comprehension,这个我非常喜欢

类属性

反射

自己设计的异常

 

用到的设计模式:

Singleton (多线程和单线程都有)

State

Factory

 

      因为无论是在工作的Solaris/Linux/Windows,还是自娱自乐的Mac上,这一年半以来脚本语言我几乎只用Python。坦白说,我对它的感情好了很多。我现在不讨厌写len(str)或者len(list),因为我已经习惯了。虽然缩进我仍然认为不太好,但实际工作中,我通常不会出现这个问题。这也许得益于我的Vim用的不错。下面我小小的总结一下Python的优点:

(1) 几乎任何平台都能跑,只要有支持C的编译器。我在Solaris, Linux, Mac和Windows上使用Python,版本都是2.6.x。我有计划升级到2.7.x,不是因为性能,是因为增加了一个类似于LinkedHashMap这样的container。

(2) 现在公司几乎都允许你使用Python(很多公司Ruby是不能使用的)。

(3) Python在Unix上的使用习惯和C/C++几乎一样,这个比Java好很多。你要在Java里面捕捉信号,或者要得到进程号,都比较复杂。后者甚至需要用到Native Interface,我曾经为Log4j写过一个插件。

(4) Python的库非常非常丰富。

(5) Python的性能不和Lua,但是比Ruby好很多。和Perl比较我不知道,但据说正则表达式的性能略差。但在实际工作中,Python的性能不是我的障碍。

(6) Python的文档现在觉得也不错,最重要的是Python的Tutorial写的真好。我建议新手看Tutorial,不用看其他任何书籍就可以开始工作了。

(7) Python的List Comprehension非常好用,怎么用怎么爽。这个Ruby比不了。

 

      再来谈谈Ruby吧。其实我不知道有多少朋友是用Ruby,但是不用Rails的。以前我就是,自己用Ruby写工具。我写过百度mp3自动下载top100的工具,写过bug分析的工具。至今为之,我都觉得Ruby的语法很纯粹,用Ruby写程序很享受。我最近又拣起了Ruby,因为开始学习Rails了。怎么说呢,Ruby的语法太灵活,它有几个最大的特点:

(1) Block

(2) Meta programming & SDL -- 这个Ruby太强大了

(3) Rails

现在Rails没有前几年火了,但是Rails却成熟了很多 (Ruby也成熟了很多)。无奈,企业对Ruby的认知不如Python,Perl好。

 

      最后说说Perl,今年我用Perl写了一段deliver的代码。写了一个Perl的Logger库,比较简单的。坦白说,Perl应该被淘汰了。它很难用,很容易忘记,需要记忆太多的潜规则。我知道很多欧美的“资深”企业还有很多Legacy的Perl代码和Perl(er),但是这们脚本语言老了,它不应该再在新的项目中使用。我不偏激,因为我用过。我们team最熟练的perl程序员都需要打印两张A4的纸,存放那些$?的符号是什么意思。Perl程序相对不好维护。我想不出使用Perl的理由,因为能用Perl的地方,几乎都可以使用Python代替。(他们告诉我,Perl(er)比Pythoner多,这个让我奇怪)。

 

你可能感兴趣的:(python)