主流脚本语言的比较和选择

主流脚本语言的比较和选择

                                                                                                                             —— Hywhyjava

过去这一年的时间里,我买了很多书,查了不少资料,能够算是认真的学习了几种主流的脚本 语言,由于我一直想搞一个好用的自动化工具,来方便咱们的系统维护。虽然这个愿望尚未达成,可是在这个过程当中,仍是学到了不少东西。今天下午,跟同事们 聊天时,说到了脚本语言,这是比较可贵的,也正好借这个契机,把个人一些见解说一说,有不妥和错误的地方,请你们多指正。python

为何选择脚本语言

为何选择脚本语言,可能每一个人面对的实际状况都不同。语言自己没有好坏之分,只有合适或者不合适。所以,我所谓的选择主要是根据应用须要来选择,并不是根据语言的好坏或者使用者的习惯。就我本身的状况来讲,很长一段时间里,若是须要程序来辅助完成工做时,我都会选择Java。程序员

先简单说说Java,Java是企业应用当之无愧的统治者。可是,近几年随着你们对开发语言认识的转变,Java已经让愈来愈多的人感到不满,取而代之的是脚本语言的迅速崛起。一个例子是,Java 7在最初的功能规划时,呼声最高的是“闭包”,而“闭包”偏偏是脚本语言最具特点的功能之一。在使用诸如Java,C之 类的语言时,咱们不得不面对各类复杂的数据类型、设计模式和大量看起来没用但又不能缺乏的代码。而对脚本语言来讲,这些问题都是天生就不存在的。如今,开 发讲究敏捷,注重效率,对于一个企业来讲,开发工做首先要考虑的就是成本,敏捷开发正是下降成本最有效的手段之一,而脚本语言,又是实现敏捷开发的一条可 行之路。web

有人说Java已经out了,但我并不这么以为,我我的认为Java仍然是最好的跨平台方案。如今咱们已经不能单纯把Java看作一门语言,它已经成为一个事实上的平台。构建在Java平台之上的优秀的Java替代产品,也已经获得你们的普遍支持和承认,如groovy、scala等等。我相信,Java仍然有它的生命力,而它的生命力可能也要得益于脚本语言。shell

说了半天废话,仍是要回到我选择脚本语言的话题上。个人初衷很简单,我要找一个非Java平台的,C语言的替代品。为何?第一,Java不是万能的,好比它作不了ICMP Ping;第二,C语言学习曲线过长,C程序的部署难度较高;第三,上述的脚本语言的全部优点。数据库

本着以上几个原则,我学了几个流行的脚本语言,他们是:Perl、Python、Ruby,固然后来我也学习Java平台上的脚本语言,如Jython(Python的Java实现)、JRuby(Ruby的java实现)、Groovy。下面我想就这几个脚本语言,来作一个简单的比较,但愿你们在选择脚本语言时,能有更多的参考。编程

脚本语言的比较

脚本语言的比较,可能比较凌乱,但我想侧重如下几个方面:学习曲线,语言自己的特点、跨平台的能力、国际化的能力,以及它在应用领域的份额。设计模式

Unix/Linux Shell

首选仍是要提一提Unix/Linux Shell(包括awk、sed),它也是脚本语言,而且多是咱们平常使用最多的。我我的感受,shell更适合作流程化的系统管理工做,而对于逻辑较为复杂的应用级产品,shell的开发和维护难度都至关高。带有我的情感的说,shell的学习难度大于大多数主流脚本语言,这和它的语法特色,调试、运行环境等等都有关系。所以,平常流程化的系统管理工做,shell仍然是一个不错的工具,除此以外,相信你们还有更好的选择。服务器

Python/Jython

Python最大的魅力之一,就是简单易学,一个新手能够短时间内(有人说是十分钟,我认为几天是彻底可能的)就写出高质量而且实用的程序,它甚至被称为非计算机专业人士学习编程的最好选择。Python的功能强大,标准库的丰富程度,估计连Java也可望不可即。Python适合作系统管理,但这并非说它不能作大型应用程序。Python应用的成功案例,已经数不胜数,尤为是在科学计算领域更是独树一帜。Python是一门优秀的面向对象语言,但更多的Python程序员,喜欢Python面向过程的部分。我我的感受,Python的OO不如Ruby,由于不够完全,但这也正是Python支持者更爱它的地方。闭包

惋惜的是,Python在企业应用领域没能有更大的突破,近几年更有被后起之秀Rails(Ruby的WEB框架)抛在身后的意思。但这并不说明Python在企业应用方面不成熟(豆瓣网是离咱们最近的Python案例),若是有兴趣,你们能够了解Python社区最具人气的WEB框架Django,也能够去看看简单到让人难以置信的WEB框架webpy。Python在短短几年内就成为六大主流开发语言之一,绝对不是盖的!

Jython是Python的Java实现,它是IBM WebSphere服务器官方指定的管理语言。我选择jython是看重了jdbc访问数据库的便捷。但惋惜的是,jython对中文支持很是很差,多是python自己的复杂度较高,jython团队的活跃度也比较低,总之Jython要走的路还很漫长,

至少我认为当前版本,还不具有投入生产开发的能力。

Ruby/JRuby

Ruby是脚本语言的后起之秀,它的成功要得益于杀手级框架Rails,Rails社区早就喊出了干掉Java的口号,虽然这种口号没有什么实际意义,但Rails的确已经成为眼下最为煊赫一时的企业应用框架。我我的花了几个月的时间学习Rails,虽然没有实际的开发经验,但Rails敏捷开发上的突出表现,的确是当仁不让的,这也是它能迅速窜红的主要缘由吧。

抛开Rails框架,仍是来讲Ruby。Ruby的语言特点是纯面向对象,语法以魔幻著称(它吸取了Perl、Python等脚本语言的大量优秀元素)。所以它的学习曲线要高于Python,可是学成之后可能会写出很是优雅的代码。美中不足是Ruby还年轻,它的标准库还不够丰富,成熟的第三方库也相对较少,但这些状况会随着时间的推动逐渐改变。

Ruby彻底能够胜任系统管理的须要,固然,若是开发WEB程序,Rails更是不二的选择。

JRuby是Ruby的Java实现,也是最先被Sun官方接收的Java平台脚本语言(后来还有Jython)。JRuby与Ruby的兼容性很是高,团队也很是活跃。若是想在Java平台上使用脚本语言,除了Java原生的Groovy,我推荐JRuby,这也是个人选择。

Perl

提到Perl可能不少人会想到CGI,我我的可能更多的会联想到文本处理,事实上,Perl设计之初的主要用途的确是在文本中提取信息。Perl像Python同样,是目前最久经考验,且成熟度最高的脚本语言之一,它有着大量的用户群和忠实的粉丝,所以我说Perl的坏话就比较心虚一点:)

坦白的说,我不太喜欢Perl,可能像大多数不喜欢Perl的人同样,Perl语法让人不太习惯,有人说Perl的语法丑陋,可能有些夸张,但这能说明一些问题。Perl社区至少也应该认可一点:Perl是一门比较难上手的语言。这并非说,你短时间内掌握不了Perl,而是你短时间内写不出真正像样的东西。另外,Perl不是面向对象语言,固然,不少人并不看重这一点,但这并非什么优势。

Perl适合作系统管理,我以为它跟shell很像。在其余应用领域,尤为是internet方面,

Perl都有不俗的表现。Perl很是优秀,仍是那句话,语言没有好坏,只有合适不合适。

Groovy

若是你正在为“热爱Java平台”和“厌恶Java语法”的事情纠结,Groovy可能就是最好的选择。Groovy能够说是Java平台的原生脚本语言,与Java完美结合,它自己不提供标准库,彻底使用Java的API库。在Rails成功以后,Groovy社区也出现了Grails框架,用来抗衡Rails。Groovy自己也吸取了Ruby大量的经典语法,热爱Java的人,能够选择Groovy。

脚本语言的缺点和将来

目前你们公认的,脚本语言的主要缺陷仍是性能问题,固然这可能取决于不少因素,问题是有多少状况下,性能问题才是致命的。从EJB的崩溃,Spring的兴起到Java遭受质疑,Rails取得成功,都说明,你们在面对不一样规模的应用时,已经很是理智了。我相信可以真正服务于咱们的技术,才能有好的前景,脚本语言的明天是无限光明的!

相关文章
相关标签/搜索