【问题标题】:Ruby as a standalone language [closed]Ruby 作为一种独立的语言 [关闭]
【发布时间】:2012-12-28 18:20:32
【问题描述】:

我一直在乱用 ruby​​ on rails。但我的问题真的很简单。 ruby 使用的语言是否用于桌面应用程序?我的意思是没有Rails?例如,它可以与 GUI 包和图形库相结合来创建游戏吗?我读过 ruby​​ 是基于 C 的。所以它会很快吧?

【问题讨论】:

标签: ruby desktop-application


【解决方案1】:

ruby 是用于桌面应用程序的语言吗?

是的。

我的意思是没有 Rails?

是的。

它可以与 GUI 包和图形库结合来创建游戏吗?

可以。

我听说 ruby​​ 是基于 C 的。所以它会很快吧?

不,它不会像 C 一样“快”,因为这不是 Ruby 的重点。 Ruby 在任何意义上都不是“基于”C 的。运行 Ruby 代码的解释器可能是用 C 编写的(有很多解释器,但并非全部都是),但这与语言本身无关。 C 和 Ruby 并没有真正可比性,并且占据了完全不同的细分市场。

【讨论】:

  • 我希望我能为此投票两次
  • Ruby 在处理数字等时通常不是“C 速度快”。但是,当用户速度相对较慢时(大部分时间计算机等待 us ;-) ,它很可能“足够快”。
  • 实际上,用 Ruby 编写的 Rubinius Hash 类比用 C 编写的 YARV Hash 类快。所以,这至少是一个例子,其中 Ruby 是 比C快
  • @JörgWMittag 你必须证明至少有一个例子证明了我们的观点。
【解决方案2】:

我对速度至关重要的程序没有经验;然而,根据我的经验,Ruby 对于具有 GUI 的用户应用程序来说已经足够快了,并且与其他类似的动态语言几乎没有区别(Ruby 1.9 有时甚至更快)。

我没有命名“相似语言”是有原因的:我认为语言基准测试根本没有用。虽然 Ruby 对于通用编程来说足够快这一事实可能会让您感到高兴,但我认为更重要的是,如果您已经了解并喜欢 Ruby,那么使用它会更有效率。

在某些限制情况下 Ruby 甚至会比 C 更快:您在 C 中对作为 Ruby 核心 lang 和 std lib 中的方法提供的函数的实现可能比 Ruby VM 中的慢。这只是说,速度通常不是问题,除非您实际上很清楚应该关注速度的特定原因。

一些不错的 GUI 库是 FXRubyShoes,这是 Hackety Hack 项目中用于教孩子编程的非常简单的库。 在使用 Ruby 和 Python 进行编程时,我通常使用Tk,因为它包含在标准库中,无需安装其他任何东西。

对于游戏,您可以尝试GosuChingu; Gosu 可能是开发最活跃的 Ruby 游戏库,Chingu 是基于 Gosu 提供的基础的一个很好的类集合。他们没有其他游戏库(例如 Pygame)的好社区,但您可以轻松地开始使用它们制作小游戏。

【讨论】:

    【解决方案3】:

    查看鞋子 GUI,它有不同的实现,每个都有一个颜色名称,最流行的红色和绿色鞋子,它们通常用于制作你在 Flash 或常规 javascript 中看到的那种游戏。它们对于那种游戏来说已经足够快了。有些实现甚至可以使用 JRuby。

    【讨论】:

    • 你也可以查看visualruby:visualruby.net
    • @user1182000,看起来不错,在visualruby.net/site/Download.html找到下载
    • ..但它只是 Gui 接口 (Glade),没有 Visual Ruby IDE 的痕迹,知道这是否适用于 Windows 吗?
    【解决方案4】:

    Ruby 是一种语言,其通用实现(例如ruby-1.9.3-pl94)是用 C 编码的解释器。文件 main.c 包含 C 中的 main 函数,该函数在文件 @987654332 中设置用 C 实现的 Ruby VM @。

    您可以有多个 Ruby 实现。听说有人想在Parrot VM之上重新实现Ruby(本身用C实现);但这项努力或许仍在进行中。 JRuby 是 JVM 之上的 Ruby。

    实际上解释器与编译器并没有明显的区别。许多解释器都包含一个virtual machine 和该VM 的翻译器(您可以将其视为编译器)。一些 VM 实现有一个Just In Time 动态翻译机器代码。 JIT 部分动态生成机器码。

    您可以使用例如代码编写一个图形应用程序。 Ruby-Gnome,Gnome 和 Gtk 的粘合剂。您也可以使用Ruby Qt,它是 KDE 和 Qt 的粘合剂

    【讨论】:

    • -1 有很多原因。首先,不存在解释型语言(即使有,Ruby 也不会是一种,因为几乎每个 Ruby 实现都有一个编译器)。其次,没有“它的实现”这样的东西,有很多实现。第三,绝大多数 Ruby 实现不是用 C 编写的。
    • “也许有些人在 JVM 之上尝试了 Ruby。”不错的 FUD。 Do or do not. There is no try.
    • 已用您的链接更正
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    相关资源
    最近更新 更多