2011-04-20 113 views
7

我是一个主要使用Java的新手程序员。最近我对Ruby感兴趣,当我去下载一个IDE时,我惊讶地发现没有单一的语言实现或解释器。我一直在努力研究这个问题,但是我并不真正了解如何创建一种语言来知道要查找什么。为什么有不同的Ruby实现?

单一语言如何具有多个解释器?这是否意味着它们之间有重要的区别,这对程序员意味着什么?请原谅,如果这是一个错误的问题,首先!

+8

* most * languages有多种实现,[包括Java](http://en.wikipedia.org/wiki/Blackdown_Java)。 – meagar 2011-04-20 17:04:21

+1

不只是语言。几乎任何类型的软件:网页浏览器,GNU emacs与xemacs与xyzzy,不同的终端共享相同的shell语言,... ... – sawa 2011-04-20 19:04:16

+0

@meagar谢谢你的答案,我怀疑是这样,但wasn'当然! – cotroxell 2011-04-21 14:57:49

回答

7

因为不同的语言实现者决定专注于特定的领域。例如,与Java运行时(JRuby)的兼容性或JIT(rubinius)实验,目标​​Ruby在企业(REE)等等,等等。

这不是Ruby独有的,它是健康的语言,如果一个特定的群体在某个领域看到语言的潜力,它可以帮助促进该社区内的成长。

1

几乎所有的语言都有多种实现,包括Java(例如Oracle Java,Apache Harmony,OpenJDK)。但是如果你想要默认的ruby实现,你可以使用下面的代码:default ruby implementation using YARV

但除此之外,不同的实现有没有让你能够使用上与JRuby与Java VM,并IronRuby现有的框架红宝石,作为以迎合行业现有的平台或应用程序。

4

大多数语言都有多个实现。事实证明,有一些权衡不能总是在单个项目中得到解决。

  • 平台集成
    你一个平台集成越近,进一步你从别人整合。所以有一个基本的选择:专业化或普遍性

  • 稳定性
    如果你愿意接受的不稳定性,那么更宏大的目标可以追求的。所以有一个基本的选择选择:开发或稳定

  • 管理团队
    在任何给定的项目中只有这么多的管理空间。创建新管理空间的唯一方法是创建一个新项目。所以有一个基本的选择:您的项目或我的项目。从某种意义上说,这是“主要原因”,因为不同的管理者会选择不同的优先级。

+0

谢谢你的回答。我认为我对平台集成感到困惑。那么是否有不同的实现,因为有人必须将语言实际连接到特定于该平台的低级命令?我想我认为那是在编译器的领域,而不是语言本身的一部分。 – cotroxell 2011-04-21 15:03:54

+0

是的,每种语言都有一个关联的系统界面。如果它是完全通用的,比如Java,它往往会受到限制,并且在所有客户端上都会失败,但它可以(像Java一样)在服务器上获得很大成功。如果它是完整的并向一个方向倾斜(如Ruby对Unix),那么它也可以在客户端上取得成功,但在这种情况下,Ruby对于富客户端全盛时期来得太迟。我可以写一本关于语言与GUI集成的书。 SO评论的主题太大了。 – DigitalRoss 2011-04-28 03:10:52

相关问题