`

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

阅读更多

 过去这一年的时间里,我买了不少书,查了很多资料,可以算是认真的学习了几种主流的脚本语言,因为我一直想搞一个好用的自动化工具,来方便我们的系统维护。虽然这个愿望还没有达成,但是在这个过程中,还是学到了很多东西。今天下午,跟同事们聊天时,说到了脚本语言,这是比较难得的,也正好借这个契机,把我的一些看法说一说,有不妥和错误的地方,请大家多指正。为什么选择脚本语言

为什么选择脚本语言,可能每个人面对的实际情况都不一样。语言本身没有好坏之分,只有合适或者不合适。因此,我所谓的选择主要是根据应用需要来选择,并非根据语言的好坏或者使用者的习惯。就我自己的情况来说,很长一段时间里,如果需要程序来辅助完成工作时,我都会选择Java。

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

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

说了半天废话,还是要回到我选择脚本语言的话题上。我的初衷很简单,我要找一个非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取得成功,都说明,大家在面对不同规模的应用时,已经非常理智了。我相信能够真正服务于我们的技术,才能有好的前景,脚本语言的明天是无限光明的!

分享到:
评论

相关推荐

    软件主流脚本语言合集

    本合集搜集了主流Script脚本语言,包括ASP、 ECMAScript、 JavaScript、 JScript、 QtScript、 C++Script、 CSS2、 PHP、 VBScript、 Microsoft Windows 脚本技术,和一份文档:计算机脚本语言程序举例.doc

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

    主要介绍了编程界主流脚本编程语言的比较和选择,本文分析了Unix/Linux Shell、Python/Jython、Ruby/JRuby、Perl、Groovy等脚本语言的优缺点,帮助您快速了解各大语言,需要的朋友可以参考下

    CSM脚本语言1.3

    CSM脚本语言是国人自主研发的,是世界上第一款也是迄今为止(2006年10月)唯一的一款嵌入型的,高性能的,工业强度级的,基于对象的,完全强类型的,基于寄存器虚拟机实现的静态编译型脚本语言.它是主流编译型宿主语言(C/C++...

    易脚本语言引擎1.0

    “易脚本(EJB)”是一种全中文的脚本语言、结构灵活、语法简单,最初是作为报表设计程序使用,因其扩充性好,开发调用容易,也可方便的嵌入到其它程序中,让软件产品更灵活,让普通用户享受中文编程,让编程更有...

    交换机路由器安全基线检测脚本

    内含各主流交换机的安全基线检测脚本或命令,包括Cisco、Fortigate、H3C、华为、Juniper、ZTE、力腾、锐捷等交换机及路由器配置规范

    LoadRunner脚本语言之C语言

    Loadrunner几乎支持所有主流语言,比如C语言,JAVA,VB等。Web(HTTP/HTML)协议默认使用的是C语言。文中简述Loadrunner中C语言,欢迎同行下载交流。

    抢菜脚本程序项目源码(兼容 iOS、Android、Mac)主流买菜平台都可使用.zip

    抢菜脚本程序项目源码,上 海 疫 情 封 控 期间,城市流行起“抢菜”的生活方式,于是就有了这个抢菜脚本,兼容 iOS、Android,支持多台设备同时“抢菜”。起初只为自用,得知仍有很多朋友买不到菜,线上“抢菜”...

    cpps:CPPS是一种轻量级的嵌入式脚本语言,其语法类似于C ++。 它具有当前主流语言的许多功能,包括协程,面向对象,lambda,闭包,泛型变量,自定义模块支持,GC垃圾回收和跨平台。 CPPS通过内置语法解析将程序解释为要在虚拟机中运行的字节码

    CPPS 是一个功能强大,运行速度快,容易上手的解释型脚本语言,非常容易学习和使用,并且可以很容易的嵌入到C++项目中。 CPPS 被设计的初衷是让那些和作者一样不喜欢LUA,PY,等等脚本语法的开发者使用,它可以对接...

    主流WEB服务器软件比较

    选择WEB服务器时,服务器对动态脚本语言、API的支持和数据库连接的性能都是非常重要而且值得考虑的内容。如果你对服务器性能要求不是很严格的话,选择AOLserver的Tcl或者RoXen的Pike和RXML也不失为一个好的办法。对...

    INCA_ProF脚本教程总结.pdf

    INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本对ECU闪存编程等各种自定义操作。

    shell学习脚本指南-1(中文完整版)

    编写Shell脚本所需要的不只是对Shell语言的认识,还必须熟知单个的UNIX程序:你必须知道每个程序为什么会放在那儿,以及如何使用该程序或如何将其与其他程序结合。本书将告诉你这些有关 UNIX主流工具的知识。除此...

    使用vrml语言创作的桌子,仅供学习参考

    使用 vrml语言,创作的桌子 VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景...是目前Internet上基于 WWW的三维互动网站制作的主流语言。

    notepad++多功能脚本编辑器

    此次上传的是中文版,献给那些喜欢用中文版的网友。 该软件小巧精悍,独具特色的代码高亮功能,以及对多种主流脚本语言的支持。绿色免安装,实属随身必备之“防身利器”。

    PHP实现的一个SQL语言解析和补全

    PHP(PHP: Hypertext Preprocessor)是一种广泛应用于Web开发的服务器端脚本语言。它具有简单易学、灵活性强、跨平台等特点,被广泛应用于构建动态网页和Web应用程序。 以下是一些关于PHP的重要特点和用途: 1. **...

    Python语言程序设计习题答案.zip

    学习本章,要了解Python作为一种计算机程序设计脚本语言,结合了解释性、编译性和互动性的特点;了解在Linux和Windows中安装Python的方法;了解IDLE、PyCharm和Jupyter三种常用Python程序编辑环境。工欲善其事,必先...

    用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby.

    将教你如何使用游戏界中的三款主流脚本语言进行游戏编程。 从深层次阐述Python、Lua和Ruby这三种解释性脚本语言和用它们编写的游戏。

    主流浏览器Driver爬虫

    Driver是一个用于自动化控制和操作Google Chrome等主流浏览器的工具。负责在后台运行并接受外部命令来操作浏览器。Driver允许开发人员使用编程语言(如Python、Java、JavaScript等)编写自动化测试脚本,来模拟用户...

    安卓毕业设计加源码-QtScrcpy:Qt脚本

    同时支持GNU/Linux,Windows和MacOS三大主流桌面平台 自定义按键映射(仅windows平台开启) 可以根据需要,自己编写脚本将PC键盘按键映射为手机的触摸点击,编写规则在。 默认自带了针对和平精英手游进行键鼠映射的...

    HandsOn_Fullstack_Clojure:使用云外壳帮助学习项目规模的Clojure(脚本)

    动手全栈Clojure 封闭反馈循环以学习项目规模的Clojure(脚本)动机Clojure(script)是现代的Lisp方言,通常是一种不错的编程语言。 它一直在倡导的一种哲学是拥有的,而则是珍贵的瑰宝(尤其是clojurescript中的热...

    gox_win.zip

    Gox语言是脱胎于Go语言(Golang)的开源脚本语言,解释执行,但相比Go语言更贴近高级语言,语法硬性限制也少一些;是一门偏向快速应用的语言,也可以说是一个集成工具; - Gox语言主要优势有三点: - 第一,Gox...

Global site tag (gtag.js) - Google Analytics