设为首页 收藏本站
查看: 617|回复: 0

[经验分享] Python, Ruby和Perl

[复制链接]

尚未签到

发表于 2017-4-24 11:10:16 | 显示全部楼层 |阅读模式
  在最近的一两个月工作中,自己做了一些工具,还有一些测试的自动化脚本。大量地使用了Python,总的来说,我觉得Python是一门值得学习的脚本语言。
  先说说我使用这三门脚本语言的认识历史和程度。我最早听过的脚本语言是Perl,那时候我买了一本叫做《24小时精通Perl》的书,不过可惜了,因为我没有翻到第三章。第二个接触的语言是Python,那大概是在2002年我读大三的时候,买了一本书,也是看了看,不了了之。我知道Ruby也大概是那个时候,不过要晚于Python,是在一期程序员杂志里面读到的,后来我惊奇的发现原来Red Hat里面带了Ruby的解析器。
  到了我工作之后,我发现公司里用得最多的是Perl。这可以理解,因为Perl的历史最悠久,而我们公司是一家老字号的欧洲企业,所以Perl是内部最常用的脚本语言。我在刚进公司做SCM工作的时候,用Perl写过一些脚本,辅助我日常的工作。但都是一些特别简单的脚本,也不能算懂Perl,只是会用些简单的功能。三个月之后,我开始第一个项目,我发现爱尔兰人还是很前卫,他们使用Python和Jython做测试框架。不过因为这个Framework我们也不需要改什么,只需要手动写一些Case,所以也基本不能算会用Python。不过我不太喜欢Python的缩进规则,有的时候确实很麻烦。
  我真正第一个学会的脚本是Ruby,那个时候Rails刚刚红,我就开始找了本<Programming Ruby>电子书学习,大概是2006年夏天的时候。坦白说,直到今天,我都认为Ruby是脚本设计中语法最优雅的。完全的面向对象,不鼓励Perl的那种简写形式,没有Begin但是有End的设计让我觉的Pascal, Delphi和VB的设计师脸红:) 我喜欢她的纯粹,这是我经常举的例子,取一个数组的长度,在Python里面你一定要写len(arr),可是Ruby中你就可以写成arr.length。别小看这一点点,语法的一致性非常重要,因为她可以让你少犯很多错误。最重要的是,我觉得Ruby的文档设计比Python强很多,坦白说,Python的文档真得不太好用。我用Ruby写过一个上Baidu下载Top100歌曲的工具,还挺好用的。当然,我也学习过时髦的Rails,不过我并没有用Rails做过真正的项目。不过Ruby至今都是我推荐的一个语言。如果你的项目不是企业级的,而且你喜欢那种自由快乐的写程序,请优先考虑Ruby。
  现在,Python是这三种语言中我使用最熟悉的一种。当然我还是不太会metaclass这种高级的主题。Python的语法,我觉得不如Ruby好,美;而且Python的文档系统实在有些糟糕。也许你会说仁者见仁,可是我可以很负责人的说,对这一点抱怨的Python程序员绝对不止我一个。不过Python有他自己的一些特色,有的甚至非常重要。首先,Python的库很丰富,尤其自带的库就很丰富。这一点,比Ruby强太多。日常工作中的,线程啊,网络啊,等等,都自带了。其次,Python很多库的设计就是照搬UNIX的函数,对于我们这种长期在UNIX环境工作的程序员来说,太熟悉了。这里我不得不说一个题外话,UNIX的API设计的真优雅。如果你熟悉UNIX,那么那些函数你会很习惯。譬如底层的Socket啊,这些,调用方法几乎一样。第三点,Python的虚拟机比Ruby快,而且线程支持是真正的线程。这个东西在一些简单工具上没有用,可是如果你需要提升一下性能,那么就会体现出Python的优势。第四个,不是一个技术原因。因为Python的历史比Ruby长,所以很多公司是允许使用Python的,Ruby就不一定了。也许你使用Ruby,要走一个很长的申请流程。如果你经常需要在单位中写一些工具,或者测试脚本,那么Python是你不二的选择。
  等等,你把老大哥Perl放在什么地方了?坦白说,如果不是为了看懂Legacy的代码,我不会学习Perl。为什么呢?因为Perl太灵活了。灵活不好吗?好,也不好。如果用Perl写一个脚本,就几个文件,每个不超过一屏幕,我觉得Perl的简洁就很好。可是,如果是一个上千行的脚本,设计到N个对象的交互,如果我是系统设计师,我一定要放弃Perl。为什么呢?第1点,在企业中,维护一个软件源代码的成本高于创建一个源代码。而Perl由于太灵活(有个同事把自带的变量,例如什么$_, @_打印出来,足足两张A4),对于看代码的人来说很痛苦。第2点,不能本质的支持基于对象的程序设计。我知道Perl可以OO,C也可以,不过那要自己做很多工作。我也明白OO不是银弹,OB也不是银弹,不过现实是,在很多情况下,基于对象的程序好维护,利于维护。当然,Perl有很多有点,速度很快,正则表达式能力最强,而且库最多。关键是,感觉在我们领域,会Perl的人比Python多,更比Ruby多。而且基本企业都允许使用Perl(Google是个例外)。
  好了,总结一下我的体会吧。在工作中,如果是一个全新的东西,我绝对使用Python2.6(我不会使用3.x,因为很多库还不支持3.x)。如果是自己玩,我会选择Ruby或者Python。如果需要维护现有系统,我还是会在Perl系统里面使用Perl。
  「以上仅为我自己的体会,求同存异]

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368575-1-1.html 上篇帖子: Regex in Python (1) 下篇帖子: python 入门,网页数据抓取
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表