免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mq110
打印 上一主题 下一主题

做为脚本语言来说perl和python那个更有优势? [复制链接]

论坛徽章:
0
191 [报告]
发表于 2010-07-30 17:09 |只看该作者
哪个顺手,哪个用的熟,哪个就优势
至于从哪个开始学……我是从python开始的,perl我当初放弃的理由,不是perl不好,而是我的问题
我那时候,写代码从来不考虑外观是不是看着清楚,缩进空行一概不管,写什么都是,比如这样的代码:
class test
{
public static void main(String args[])
{
System.out.println("hw");
}}
这不是版面排版的错,而是我就这么写,文本打开一看,乱七八糟。当时我还不怎么注意ide什么的,一律edit写,所以都是随手换行
perl也允许程序员这么干,而python不允许,缩进是语法的一部分,所以我在2p之间选择了python,只是为了掰一下我的这个毛病

论坛徽章:
0
192 [报告]
发表于 2010-08-04 17:39 |只看该作者
看到了这个帖子,我才注册CU,

论坛徽章:
7
双子座
日期:2013-09-09 15:55:31CU大牛徽章
日期:2013-09-18 15:22:06CU大牛徽章
日期:2013-09-18 15:22:20CU大牛徽章
日期:2013-09-18 15:22:26CU大牛徽章
日期:2013-09-18 15:22:31CU大牛徽章
日期:2013-09-18 15:22:37CU大牛徽章
日期:2013-09-18 15:22:46
193 [报告]
发表于 2010-08-04 21:59 |只看该作者
perl,python都喜欢,现在用python比较多,不过在Centos和RHEL上,PYTHON版本更目前的主流版本差好多~汗

论坛徽章:
0
194 [报告]
发表于 2010-08-06 22:36 |只看该作者
你觉得可能吗?
1,做到“客观”基本很难。
2,如果我现在就很“客观”地告诉你,你应该去学 Per ...
flw 发表于 2005-06-01 13:30



    9楼 正解

论坛徽章:
0
195 [报告]
发表于 2010-10-27 12:00 |只看该作者
这帖子真有生命力!
正在学习perl的飘过,有机会也会学学python的~

论坛徽章:
0
196 [报告]
发表于 2010-10-29 09:57 |只看该作者
你们有讨论的时间不如多做点事....

论坛徽章:
0
197 [报告]
发表于 2010-10-29 11:05 |只看该作者
我的感觉是小的脚本,即用即写的工具用perl比较方便,可用的外部工具更多更可靠。但是对于大的脚本,perl语言会有一些奇怪的陷阱。

我之前做了一个1000行左右的淘宝宝贝搜索工具,用于检索w3c的路由器/交换机的商家及商品。当时首先考虑的是python语言,发现python的xml库在解析html中的非法字符时采取默认解析失败的方式处理,即一个字符解析失败整个页面不可用,这对于检索目录页出错时是不可接受的;我转用perl的xpath工具解析,没有发现不能解析的非法字符,所有页面解析的非常好,即使是非法字符也完全保留下来了(在execl表中显示的不是很好看,但是手工去除比较简单);性能上讲两者相差不大,一个页面的平均解析时间在0.5秒以上(暴汗,可能我选的工具确实弱了点)。

后来我又写了一个6000行以上的perl管理工具,使用很多的小函数、引用以及数组处理,发现很多意想不到的问题:
1. 如果在函数声明之前使用未定义的函数,如:
    hello(@a);
   ...
   sub hello(\@) {}
   结果hello收到的不是一个数组的引用,而是一个数组,而且不会有任何提示;
   虽然仔细看书的话会有提示,但是我还是花了很长时间才定位到这个问题;
2. $_是一个很大的陷阱,不要太依赖$_; 一个典型的例子就是在嵌套使用map/grep时原数组的内容会发生改变
    perl -e '@a=("1", "2", "3"); @b= map {$_=1} grep {/1|2/}@a; print @a'返回的是113而不是123
    这是因为$_是数组元素的引用而不是数组元素的一个拷贝,在多次传递$_时只要有一个地方修改了$_,都将导致原始的数组参数发生
    改变;即函数式编程风格不可用,我只能老老实实的敲无数个foreach循环;而python的lambda函数就不会有这种问题;
    或许我可以使用匿名函数或其它方式实现python的lambda,但是$_误用的风险却是存在的
3. perl的代码管理比较麻烦;我一向不大喜欢使用perl的类定义,所有的代码分散在不同的module中,但是在代码超过3000行时整个项目的代码已经很难理顺了;使用python的话10000行一下的工程还是很容易管理的;

我的经验就是如果不是以perl/python为职业的话,perl更合适,到目前为止perl的库更多也更稳定,实现一个功能单一的工具代价最小而且会相当的可靠;
否则,使用python更合适:在使用面向对象编程时10000行以下的代码还好管理,用perl写面向对象的模块总是有点别扭,而python相对自然很多(个人愚见);而且python中我还没有遇到类似$_的全局变量,代码执行通常都在我预期之内。

就学习曲线而言,有linux下bash编程经验的人入手perl相对轻松,有C边城经验的入手python代价很小;python更容易学习,但是我自己在学习python时懒得写代码,小的项目用python的面向对象风格相当累赘,远不如perl方便;perl语法复杂,但是就像bash一样可以使用短短几行代码实现大部分的日常工作。

目前我还是以perl/C为主要的工作语言,python作为日常使用的一种备用语言

论坛徽章:
0
198 [报告]
发表于 2010-10-29 12:53 |只看该作者
回复 197# feiliang1983


    python 也可以不用面向对象。 支持多种范式。 并且可以python -c "print([x for x in range(100)])" 直接执行简单脚本

论坛徽章:
0
199 [报告]
发表于 2010-10-29 23:32 |只看该作者
我觉得语言还是有优劣之分的,好像数据结构的设计,算法的实现等...

论坛徽章:
0
200 [报告]
发表于 2010-12-24 14:17 |只看该作者
你觉得可能吗?
1,做到“客观”基本很难。
2,如果我现在就很“客观”地告诉你,你应该去学 Per ...
flw 发表于 2005-06-01 13:30



    您好,我想请教些问题...

    我想知道开发应用程序用哪个开发软件比较好?
    java 我合适吗?曾经有智者推荐要我学 java 的...
    我是考资料完全自学的,请推荐合适的软件开发软件...

    先行谢过...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP