【问题标题】:Why Are There Different Ruby Implementations?为什么有不同的 Ruby 实现?
【发布时间】:2011-04-20 17:02:33
【问题描述】:

我是一个主要使用Java的新手程序员。最近我对 Ruby 产生了兴趣,当我去下载一个 IDE 时,我惊讶地发现该语言没有单一的实现或解释器。我一直在尝试研究这个问题,但我真的不明白一种语言是如何创建的,足以知道要寻找什么。

一种语言怎么可能有多个解释器?这是否意味着它们之间存在重要差异,这对程序员意味着什么?如果这是一个被误导的问题,请原谅!

【问题讨论】:

  • 大多数语言有多种实现,including Java
  • 不仅仅是语言。几乎任何类型的软件:Web 浏览器、GNU emacs 与 xemacs 与 xyzzy、共享相同 shell 语言的不同终端......
  • @meagar 感谢您的回答,我怀疑是这种情况,但不确定!

标签: ruby implementation interpreter


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    大多数语言都有多种实现。事实证明,单个项目并不总是可以解决一些权衡问题。

    • 平台集成
      您与一个平台的集成越紧密,您与其他平台的集成就越远。所以有一个基本的选择:专业化或通用化

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

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

    【讨论】:

    • 感谢您的回答。我想我对平台集成很困惑。那么是否有不同的实现,因为有人必须将一种语言实际连接到特定于平台的低级命令?我想我认为那是在编译器的领域,而不是语言本身的一部分。
    • 是的,每种语言都有一个相关的系统界面。如果它是完全通用的,就像 Java 一样,它往往会受到限制并且在所有客户端上都失败,但它可以(就像 Java 一样)在服务器上取得很大成功。如果它是完整的并且向一个方向倾斜(就像 Ruby 对 Unix 一样),那么它也可以在客户端上取得成功,尽管在这种情况下,Ruby 对富客户端的鼎盛时期来得太晚了。我可以写一整本关于语言与 GUI 集成的书。 SO评论的主题太大了。
    【解决方案3】:

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

    但除此之外,您可以在现有框架上使用不同的实现方式,如 JRuby 和 Java VM 和 IronRuby,以迎合行业中现有的平台或应用程序。

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 2019-06-09
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      相关资源
      最近更新 更多