为什么会有不同的Ruby实现?

8
我是一名主要使用Java的新手程序员。最近我对Ruby产生了兴趣,当我想下载一个IDE时,我惊讶地发现这种语言没有单一的实现或解释器。我一直在尝试研究这个问题,但我并不真正理解如何创建一种语言,也不知道该查找什么。一个语言有多个解释器是怎么可能的?这是否意味着它们之间存在重要差异,这对程序员意味着什么?如果我的问题本身是错误的,请原谅!

8
大多数编程语言都有多个实现,包括Java - user229044
1
不仅仅是编程语言。几乎任何类型的软件:Web浏览器,GNU Emacs vs. XEmacs vs. XYZZY,不同终端共享相同的shell语言等等。 - sawa
@meagar 谢谢你的回答,我本来就有这个猜想,但不确定! - cotroxell
3个回答

8
因为不同的语言实现者决定专注于特定领域。例如,与Java运行时兼容性(JRuby),或尝试使用JIT(rubinius),将Ruby针对企业(REE)等等...
这并不仅限于Ruby,它在一种语言中是健康的,如果一个特定的团体看到该语言在某个特定领域具有潜力,它可以帮助促进该社区的增长。

5
大多数语言都有多个实现。事实证明,有些权衡是无法通过单一项目来解决的。
平台集成:与一个平台越是紧密集成,就越难在其他平台上进行集成。因此,需要做出根本性的选择:专业化还是通用化。
稳定性:如果你愿意接受不稳定性,就可以追求更雄心勃勃的目标。因此,需要做出根本性的选择:发展还是稳定。
管理团队:任何给定项目中只有那么多管理空间。创造新的管理空间的唯一方法是创建一个新的项目。因此,需要做出根本性的选择:你的项目还是我的项目。在某种程度上,这是“主要原因”,因为不同的经理会选择不同的优先事项。

谢谢你的回答。我认为我主要是对平台集成感到困惑。那么,是否有不同的实现,因为有人必须实际将语言连接到特定于平台的低级命令?我想我原以为这是编译器的领域,而不是语言本身的一部分。 - cotroxell
是的,每种编程语言都有一个关联的系统界面。如果该界面完全通用,例如Java,它往往会在所有客户端上限制并失败,但它也可以(就像Java一样)在服务器上获得巨大成功。如果该界面完整且倾向于某个方向(例如Ruby对Unix的倾斜),则它也可以在客户端上取得成功,尽管在这种情况下,Ruby来得太晚,错过了富客户端的黄金时期。我可以写一本完整的关于编程语言与GUI集成的书。这个主题太大了,无法在SO评论中涵盖。 - DigitalRoss

2

大部分编程语言都有多个实现,包括Java(例如Oracle Java、Apache Harmony、OpenJDK)。但如果你想使用默认的Ruby实现,可以使用以下内容:使用YARV的默认Ruby实现

而对于不同的实现,您可以使用现有框架上的Ruby,例如使用Java虚拟机的JRubyIronRuby,以满足行业中现有平台或应用程序的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接