免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9792 | 回复: 11
打印 上一主题 下一主题

谈谈产品开发中什么时候用Python,什么时候用Perl [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-12 14:55 |只看该作者 |倒序浏览
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在团队中使用时必须使用统一的编码规范。

论坛徽章:
0
2 [报告]
发表于 2008-07-12 17:04 |只看该作者
对lz的帖子存有两点疑问:
1,python 对多线程支持好? 应该是stackless python 对多线程支持好吧,其实是tasklet。
2,python速度是perl速度的70%左右,但相信很很快得到改进。  不看后半句还真不知道谁的速度快,再说,速度不能一概而论。

论坛徽章:
0
3 [报告]
发表于 2008-07-12 19:14 |只看该作者
原帖由 forlorngenius 于 2008-7-12 17:04 发表
对lz的帖子存有两点疑问:
1,python 对多线程支持好? 应该是stackless python 对多线程支持好吧,其实是tasklet。
2,python速度是perl速度的70%左右,但相信很很快得到改进。  不看后半句还真不知道谁的速 ...


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

如果只是学学perl和python,没有长期用过他们真正做事情是很难评价两者的,
我讲讲我自己实际的感受,希望能为客观评价两者提供一点有意义的素材。

论坛徽章:
0
4 [报告]
发表于 2008-07-12 20:01 |只看该作者
python的库基本上都在pypi上,建议你去看一下。页面的统计:

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

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

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

[ 本帖最后由 limodou 于 2008-7-12 20:04 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-07-12 22:41 |只看该作者
Perl比Py类库丰富,其实已经是很过期的评价了。现在的Py,类库一点都不比Perl的逊色,甚至更胜一筹。只不过Py新增的类库,都不是给系统管理员用的,所以感觉上还是没有Perl方便。

论坛徽章:
0
6 [报告]
发表于 2008-07-13 16:43 |只看该作者
分析得比较深入。

论坛徽章:
0
7 [报告]
发表于 2008-07-13 19:52 |只看该作者
python是纯面向对象的编程技术。

论坛徽章:
0
8 [报告]
发表于 2008-07-14 00:04 |只看该作者
还没接触过Perl,正在学Python...

Python很有自己的特色

其实如果两个语言能进行比较的话,说明相似的地方太多了,那么存在的价值就减少了.

论坛徽章:
0
9 [报告]
发表于 2008-07-14 09:17 |只看该作者
所有的语言都有相似的地方,都有一定的可比性,但并不表示就没有存在的价值。可比性并不是语言是否存在的决定条件。

论坛徽章:
0
10 [报告]
发表于 2008-07-14 09:28 |只看该作者
如果单从模块上来比较,perl或许能多一点,现在py在sf上模块也有若干了。相信常用的那些模块俩语言都有了,没啥比较的。

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

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

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

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

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

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

[ 本帖最后由 xiaoyu9805119 于 2008-7-14 09:34 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP