`

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。 博客文章

    为什么你一定要学习Python或Ruby语言.pdf

    尽管Perl曾是动态语言的首选,但现在已被Python和Ruby取代。Perl的面向对象机制复杂,学习曲线陡峭,而Python和Ruby则提供了更直观、更简洁的语法。对于需要大量正则表达式处理的特殊场景,Perl仍有其优势,但对于...

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

    - 多语言支持:同时支持Lua、Python、Perl、Ruby和NSIS的语法高亮、代码提示和格式化。 - 调试功能:内置或集成调试器,允许开发者对各语言进行断点调试。 - 项目管理:支持多项目,方便切换和组织不同语言的代码。 ...

    生产规模的数据中心分析器CC Go Rust Python Java NodeJS PHP Ruby Perl.zip

    这个压缩包文件"生产规模的数据中心分析器CC Go Rust Python Java NodeJS PHP Ruby Perl.zip"包含了多种编程语言实现的数据中心分析器组件,这表明该工具可能支持跨平台和多语言集成。以下是对这些编程语言在数据...

    python和ruby,我选谁?

    - **可移植性**:相较于Perl等其他脚本语言,Python和Ruby拥有更好的跨平台兼容性。 - **图形界面编辑器**:虽然Python的编辑器选择更多样化,Ruby也有专门的图形界面编辑器。 - **库支持**:它们都有大量的库可供...

    每个程序员都应该学习使用Python或Ruby

    Perl语言虽然在Python和Ruby之前就已经是重要的动态语言,但现在Perl已经开始衰落,取而代之的是Python和Ruby。Perl虽然面向对象性设计显得不够完整,并且其语法在易读性方面被认为有诸多不足,这使得它对于学生来说...

    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 的语法比使用 ...

    完全用Python工作---Harness the power of Python

    Python的优势在于其通用性,它可以替代C、C++、Java、Ruby等语言的部分功能,并在许多方面表现出更高的效率和便利性。例如,C语言需要处理复杂的内存管理和指针操作,而Python通过自动内存管理简化了这一过程;C++的...

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

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

    python练习题目.rar

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

    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工具的安全性,这暗示了我们将探讨这些语言在Unix/Linux环境中可能面临的安全问题及相应的防护措施。 首先,我们来了解一下Ruby的安全特性。Ruby...

    基于Python的Web技术

    LAMP 是一种流行的 Web 开发平台,由 Linux、Apache、MySQL 和 PHP、Perl、Python 或 Ruby 等脚本语言组成。LAMP 具有开放灵活、开发迅速、部署方便、高可配置、安全可靠、成本低廉等优点,是目前最流行的 Web 开发...

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

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

    The Perl Programming Language

    除了Perl之外,Python和Ruby也是流行的脚本语言。它们各有特点: - **Python**:以其简洁明了的语法而闻名,非常适合快速开发。 - **Ruby**:以其灵活的语法和强大的元编程能力著称,常用于Web开发。 #### 七、更多...

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

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

Global site tag (gtag.js) - Google Analytics