谈谈产品开发中什么时候用Python,什么时候用Perl

谈谈产品开发中什么时候用Python,什么时候用Perl

Perl我在10年前用来写小脚本处理处理系统管理和维护,
5年前引进到产品开发中,产品中大概到现在有了3万行左右,
3年前听说python,一用发现相当不错,赶紧引入项目,到目前大概有4万行左右代码在实际产品中,
由于perl和python太接近了,一直想统一到其中一门上来,经过3年无效的努力,终于明白了其各有的优势,各有各的应用场合,不可能实现这个梦想了。

当前Perl最大的劣势:
1. 多线程支持极差! 3、5个线程工作还没啥问题,但几百个一来,win32上程序崩溃;linux上系统负载也极其高,还不如多进程。这是我在需要频繁并发处理的
地方使用python的主要原因。这个是硬伤。
2. 过于灵活,新手上手和能阅读老代码梯度太高。这一点是可弥补的,可以通过团队内部统一一份编码规范进行弥补。

当前Perl的最大优势:
CPAN一统江湖,可用模块极多!!!!Python根本不具备可比性。一个小例子前几天产品需要支持cisco管理,同事用python那个telnet模块处理极其复杂,搞了3天,能工作了,但还是由于cisco多种型号差异问题多多,后换用perl,到cpan找cisco::telnet模块,半天搞定,大规模测试了没有任何问题。
文本处理极其强大,正规表达式文本处理语法用起来比python的方便很多。(这不是python的硬伤,python的正规表达式虽不够方便但尚可接受)

当前对比Perl,Python的最大劣势:
可用模块有限,网上没有汇集地。统计好象当前各种模块300来个,对比cpan上的3、4千个,小巫,如果python有个类似cpan的地方将可成大器。

Python的最大优势:
语法死板,什么人写的代码都一样,新手学习曲线低,方便团队协作开发。
多线程支持非常好

其他: Perl 5.8.8和python 2.5对比,python速度是perl速度的70%左右,但相信很很快得到改进。
python中变量不象perl区分$ % @来区别变量的类型,perl变量区分类型后用起来会犯更少的错误。


结论:
Python是新秀,适合团队协作开发,用起来老少皆宜,也适合并发程序编写,但可用第3方模块少。
Perl是长老,有深厚的积累,可用第3方模块应有尽有,但精力不够充沛多线程支持差,在如下情况可考虑使用:
  1.团队成员都是精英
  2.产品功能中发现cpan有大量可重用模块 或 主要功能和文本处理相关
  3.工期紧
  4.不需要多线程

Perl在团队中使用时必须使用统一的编码规范。
对lz的帖子存有两点疑问:
1,python 对多线程支持好? 应该是stackless python 对多线程支持好吧,其实是tasklet。
2,python速度是perl速度的70%左右,但相信很很快得到改进。  不看后半句还真不知道谁的速度快,再说,速度不能一概而论。



QUOTE:
原帖由 forlorngenius 于 2008-7-12 17:04 发表
对lz的帖子存有两点疑问:
1,python 对多线程支持好? 应该是stackless python 对多线程支持好吧,其实是tasklet。
2,python速度是perl速度的70%左右,但相信很很快得到改进。  不看后半句还真不知道谁的速 ...

1. python对比perl多线程支持非常好了,这里只谈两个间对比,就多线程而言我认为c最好,c也是我用的最多的,但不在这里讨论了。
2.  速度不是一概而论,也不是绝对,所以我放在“其他”章节中讲的。

如果只是学学perl和python,没有长期用过他们真正做事情是很难评价两者的,
我讲讲我自己实际的感受,希望能为客观评价两者提供一点有意义的素材。
python的库基本上都在pypi上,建议你去看一下。页面的统计:

The Python Package Index is a repository of software for the Python programming language. There are currently 4368 packages here.

至于正则式到底有哪些差异?

python是强类型语言,一样区分类型。

分析得比较深入。
python是纯面向对象的编程技术。
还没接触过Perl,正在学Python...

Python很有自己的特色

其实如果两个语言能进行比较的话,说明相似的地方太多了,那么存在的价值就减少了.
所有的语言都有相似的地方,都有一定的可比性,但并不表示就没有存在的价值。可比性并不是语言是否存在的决定条件。
如果单从模块上来比较,perl或许能多一点,现在py在sf上模块也有若干了。相信常用的那些模块俩语言都有了,没啥比较的。

速度上更没啥比较的了,实在不行你用C重写了。不过这个情况遇到的不多。

从程序的代码和直观上去看,perl比py复杂很多了,很多稀奇古怪的符号,虽然意思很明显,相比较py而言,太过复杂。就跟perl宣传的一样:解决问题的方法不止一种。以至于很多技巧性的东西过一段时间自己都不明白了。而py看上去都是很浅显易懂的样子。

在文件操作和正则上perl比py方便一些,代码相对也少很多。这个py还是显得有点繁琐。

多线程这个我自己接触不多,就没发言权了。。。

还是个人自己觉得哪个更顺手就用哪个,互补。能解决问题就好,这个是关键。

呵呵,个人见解,大家继续讨论