`

Python, Ruby和Perl

阅读更多

在最近的一两个月工作中,自己做了一些工具,还有一些测试的自动化脚本。大量地使用了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。

      「以上仅为我自己的体会,求同存异]

分享到:
评论

相关推荐

    SWIG 公开 C/C++ 代码,包括 Ruby、Perl、Tcl、C# 和 Python

    C 和 C++ 被公认为...SWIG 允许您向广泛的脚本语言公开 C/C++ 代码,包括 Ruby、Perl、Tcl 和 Python。本文使用 Ruby 作为公开 C/C++ 功能的首选脚本接口。要理解本文,您必须具备 C/C++ 与 Ruby 方面的相应知识。

    python-ruby-golang:比较python,ruby和golang

    python-ruby-golang click(Python),thor(Ruby)和cli.go(Golang)的比较,用于构建非常简单的命令行工具。 快速开始 有关更多信息,请参见每个子目录中的README.md。 博客文章

    最好用的Lua,Python,Perl,Ruby,NSIS开发编辑器

    最好用的Lua脚本开发编辑器还支持Python,Perl,Ruby,NSIS

    ruby-2.5.1.tar.gz

    Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。 Ruby 可以用来编写通用网关接口(CGI)脚本。 Ruby 可以被嵌入到超文本标记语言(HTML)。 Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。 ...

    PYTHON参考手册 第4版_修订版

    内容简介 本书是Python编程语言的杰出参考手册,书中详尽讲解了Python核心和...他创办的Dabeaz 公司提供软件开发、培训和咨询服务,专注于Python、Ruby、Perl 等动态编程语言的实际应用。他是Python 软件基金会的会员。

    ruby编程学习笔记及demo

    Ruby 的特性与 Smalltalk、Perl 和 Python 类似。Perl、Python 和 Smalltalk 是脚本语言。Smalltalk 是一个真正的面向对象语言。Ruby,与 Smalltalk 一样,是一个完美的面向对象语言。使用 Ruby 的语法比使用 ...

    Ruby面试题和答案(2024年收集更新)

    Ruby 具有 Perl、small talk、Eiffel、Ada 和 Lisp 的混合特性。Ruby 旨在创建一种与命令式语言的功能取得平衡的新语言。 完整答案 2、Ruby的开发者是谁? Ruby 由 Yukihiro “martz” Matsumoto 于 1990 年中期在...

    Python参考手册(第4版·修订版).[美]David M.Beazley(带详细书签)

    本书是Python编程语言的杰出参考手册,书中详尽讲解了Python核心和Python库...他创办的Dabeaz 公司提供软件开发、培训和咨询服务,专注于Python、Ruby、Perl 等动态编程语言的实际应用。他是Python 软件基金会的会员。

    python练习题目.rar

    我的经验是,通过实例来学习和教授 Python要比采取同样的方式去接触比方说 Ruby 或者 Perl 更加容易,因为 Python 的语法里面条条框框以及特殊的处理场景要少得多。 它所专注的并非语言表现的丰富程度,而是你想要用...

    kaitai_struct:Kaitai Struct:使用C ++ C#生成二进制数据解析器的说明性语言Java JavaScript Lua Perl PHP Python Ruby

    kaitai_struct:Kaitai Struct:使用C ++ C#生成二进制数据解析器的说明性语言Java JavaScript Lua Perl PHP Python Ruby

    Python程序员案头必备:《Python参考手册 (第4版)》(高清.书签.英文完整版)

    他创办的Dabeaz 公司提供软件开发、培训和咨询服务,专长于Python、Ruby、Perl等动态编程语言的实际应用。他是Python软件基金会的会员。 章节介绍: 第一部分 Python语言 第1章 Python简介 第2章 词汇和语法约定 ...

    Python参考手册(第4版)

    本书是Python编程语言的杰出参考手册,书中详尽讲解了Python核心和Python库...他创办的Dabeaz 公司提供软件开发、培训和咨询服务,专注于Python、Ruby、Perl 等动态编程语言的实际应用。他是Python 软件基金会的会员。

    rbpyplnix:Ruby,Python,Perl,Unix工具安全性

    rbpyplnix Ruby,Python,Perl,Unix工具安全性

    vdebug:Vim的多语言DBGP调试器客户端(PHP,Python,Perl,Ruby等)

    它是多语言的,并且已经过PHP,Python,Ruby,Perl,Tcl和NodeJS的测试。 它与忠实地使用DBGP协议的任何调试器(例如PHP的Xdebug)连接。 Vdebug随附的Vim帮助文件中提供了使用上述所有语言设置调试的分步说明。 ...

    Vdebug:多语言DBGP调试器客户端(PHP,Python,Perl,Ruby等)

    它是多语言的,并且已经过PHP,Python,Ruby,Perl,Tcl和NodeJS的测试。 它与忠实地使用DBGP协议的任何调试器(例如PHP的Xdebug)连接。 Vdebug随附的Vim帮助文件中提供了使用上述所有语言设置调试的分步说明。 ...

    ruby-libs-2.0.0.648-35.el7_6.i686.rpm

    Ruby 是一种类似于 Python 和 Perl 的服务器端脚本语言。 Ruby 可以用来编写通用网关接口(CGI)脚本。 Ruby 可以被嵌入到超文本标记语言(HTML)。 Ruby 语法简单,这使得新的开发人员能够快速轻松地学习 Ruby。 ...

    ruby中文资源大全

    在工作中,他希望有一种比 Perl 强大,比 Python 更面向对象的语言。从1993年2月,他开始设计一个全新的自己的语言,1994年12月发布了第一个 alpha版本,并且将这种新语言定名为Ruby(红宝石)。 本教程内含多部中文...

    langs-performance:C ++,Python,Perl,PHP,Java,NodeJS,Go,Ruby,Rust,Swift和D性能基准

    语言性能C ++,Python,Perl,PHP,Java,NodeJS,Go,Ruby,Rust,Swift和D性能基准测试博客文章: 2016年: : 2016年: : 2010-2012年: : 这里的基准测试并没有尽力而为,因为它们从一个方面展示了语言的性能,...

    Python对Excel操作教程.doc

    与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动 管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而 它也非常适合完成各种高级任务。Python虚拟机本身...

    15天精通Python-Python总结-Python基础-pyhthon小代码.docx

    15天精通Python-Python总结-Python基础-pyhthon小代码 Python总结 引言 语言分类 机器语言—汇编语言—高级语言(C语言—java/python)--php/perl/ruby C语言—面向过程 Java/python—面向对象 Python 是面向过程、...

Global site tag (gtag.js) - Google Analytics