BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

对Ruby vs. Java误区的深度剖析

| 作者 Scott Delap 关注 0 他的粉丝 ,译者 Jason lai 关注 0 他的粉丝 发布于 2007年6月22日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Relevance咨询公司的Stuart Halloway最近编写了一个关于“Ruby vs. Java之怪谈”的系列博客文章。这个系列文章的灵感,源自他最近从一个从零起步、没有先前约束的Ruby项目转回一个成熟完备的Java项目后的心得体会。在这个历时多日的项目过程中,Halloway对以下几个“误区”进行了探索:

误区之一:Ruby适合小型项目,而Java更适用于大型的、复杂的项目。

概括起来,Halloway主张,对于小型项目来说,诸如未知因素一类的问题可能会使进度表大幅度改动,而如果找到一个成熟完善的代码库则可以使得开发人员几乎不用编写多少代码。在Java方面,这些因素是很大的一个优势,因为它背后有一个成熟强大的社区和一群非常有经验的开发人员所支持。对于大型项目,Halloway则称,诸如语言的生产效率之类的因素会比代码库更为紧要,这也把天平上优势的砝码放在了Ruby一端。他指出,目前事实已经发生逆转,并解释说:

当前Ruby异常适合的一种小型项目是:由数据库所支撑的Web应用,因为Ruby on Rails抵消掉了所有Ruby在小型项目方面的不利因素。

误区之二:Ruby的某某特性使得代码难以维护

针对这个认识误区,Halloway的结论是:如果使用得当,Ruby的语言特性会使用其编写的代码更加易于维护。对于“易于维护的代码”的概念,他给出以下定义:

  1. 理解应用程序或者模块的总体设计思路
  2. 找到你所需要的代码
  3. 阅读代码
  4. 对代码进行变更
  5. 检查变更是否正常运行

下面是两种语言的优势对比:

    理解应用程序或者模块的总体设计思路:无一胜出

    [...]我的经验表明,在这个方面没有哪个语言能帮上很多忙,但良好的抽象概念会有所帮助。Java和Ruby包含很多相同的抽象概念:实现继承、类、多态和封装等等。

    查看你所需要的代码:Java胜出
    由于IDE的有效支持,Java在这个方面胜出。

    阅读代码:Ruby胜出
    结论:Ruby代码更容易保持DRY原则,因此更容易阅读。

    对代码进行变更:Ruby胜出
    结论:在动态语言中进行代码变更更为容易。

    检查变更是否正常运行:不相伯仲
    Ruby和Java都提供了对单元测试、验收测试和持续集成等方面的良好支持。

误区之三:Ruby太难了

有些人,比如Cedric Beust主张说,对于普通开发人员Ruby的难度太大。Halloway反驳到,总的来说,编程就不是一件容易的事情。尽管有些丛书以“21天学会编程”的旗号为噱头,但这是不可能的。因此,使用Java和Ruby编程都不是一件容易的事情。他主张说:

[...]你不能通过限制语言的特性这种方式来降低难度[...]

误区之四:要抄袭Rails的创意很容易

Halloway提出,这个误区需要慎重看待,因为它说的确实有一部分是真的。Rails的许多创意是可以被抄袭到其它任何语言上去的。但是,对于这个观点的反驳也存在:

[...]另外一些创意则取决于特定的Ruby语言特性。Rails使用了open class,使得我们可以写出更好的、可读性更强的对象模型。举例而言,你可以写出x.blank?这样的代码,而不是这样:StringUtilities.isBlank(x)。单独来说,这样的区别并不会产生很大的意义,但是随着它们积少成多了以后,代码的可读性就会得到显著的提升。[...]

误区之五:这是一场没有赢家的游戏

最后是系列文章的总结陈词:作为一门语言,Ruby胜出;但作为一个平台,Java胜出——

那么,我们所有人难道不能和睦相处么?我多希望在我所生活的世界中,对语言的偏好并不会给一名程序员贴上什么标签。我们可以用Ruby、Scheme、Scala或者Erlang来编写代码,而且任何地方的JVM都是我们所可以生存的和谐社会。

为了让这样的和谐氛围得以延续,Halloway对应当采取的行动给出了以下建议:为JRuby项目贡献代码,并在今后的Java应用中使用Rake而不是Ant来管理。

查看英文原文:Digging Deeper Into The Myths of Ruby vs. Java

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不错. by good gpy

误区之五:这是一场零和游戏

Re: 不错. by Lai Jason

谢谢楼上朋友的指出。

我确实想过这个说法,不过又感觉,让一般人看起来似乎又不是那么直观,所以选择了一个比较折衷又常见的中文说法。

或者说我对专业词汇太不敏感了?:)

说道Ruby的难度。 by Leon Kennedy

实在不能不感慨,当初以简单标榜的java如今的状况。一方面Java的越来越强背叛了简单。而Ruby将来是不是也会这样呢?

---------
袋鼠蛋开源动态web服务器,拥有完全自主知识产权
www.kangaroo-egg.com

love ruby by Luan He

ruby的确是个好东西!

巨人的肩膀 by DerDer Gao

随着软件技术的不断发展,新的开发语言,新的开发平台和工具等都是站在前面的诸多语言,工具和平台的肩膀上不断完善和发展的,因此它们必有很多改进和新思维,新特点。这也符合时代和技术等各方面的发展需求。
作为软件行业的一员,坚信我们的开发语言,平台和工具等会越来越解放我们的劳动力,让我们把精力集中各种不同的业务流程和逻辑上。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT