我一直在摆弄 ruby on rails。但我的问题真的很简单。ruby 使用的语言是否用于桌面应用程序?我的意思是没有Rails?例如,它可以与 GUI 包和图形库相结合来创建游戏吗?我读过 ruby 是基于 C 的。所以它会很快,对吧?
4 回答
ruby 使用的语言是否用于桌面应用程序?
是的。
我的意思是没有Rails?
是的。
例如,它可以与 GUI 包和图形库相结合来创建游戏吗?
是的,可以。
我读过 ruby 是基于 C 的。所以它会很快,对吧?
不,它不会像 C 一样“快”,因为这不是 Ruby 的重点。Ruby 在任何意义上都不是“基于”C 的。运行 Ruby 代码的解释器可能是用 C 编写的(有很多解释器,但并非全部都是),但这与语言本身无关。C 和 Ruby 并没有真正的可比性,并且占据着完全不同的细分市场。
我对速度至关重要的程序没有经验;但是,根据我的经验,Ruby 对于具有 GUI 的用户应用程序来说已经足够快了,并且与其他类似的动态语言几乎没有区别(Ruby 1.9 有时甚至更快)。
我不命名“相似语言”是有原因的:我认为语言基准根本没有用。虽然 Ruby 对于通用编程来说足够快这一事实可能会让您感到高兴,但我认为更重要的是,如果您已经了解并喜欢 Ruby,那么您将更有效率地使用它。
在某些限制情况下,Ruby 甚至会比 C 更快:您在 C 中对作为 Ruby 核心 lang 和 std lib 中的方法提供的函数的实现可能比 Ruby VM 中的慢。这只是说,速度通常不是问题,除非您实际上很清楚应该关注速度的特定原因。
一些不错的 GUI 库是FXRuby和Shoes ,这是在Hackety Hack项目中用于教孩子编程的一个非常简单的库。在使用 Ruby 和 Python 编程时,我通常使用Tk,因为它包含在标准库中,无需安装其他任何东西。
对于游戏,您可以尝试Gosu和Chingu;Gosu 可能是开发最活跃的 Ruby 游戏库,Chingu 是基于 Gosu 提供的基础的一个很好的类集合。他们没有其他游戏库(例如 Pygame)的良好社区,但您可以轻松地开始使用它们制作小游戏。
Ruby是一种语言,其通用实现(例如ruby-1.9.3-pl94)是用 C 编码的解释器。 Filemain.c
包含 C 中的函数,该main
函数在 file 中设置用 C 实现的 Ruby VM vm.c
。
您可以有多个 Ruby 实现。听说有人想在Parrot VM上重新实现 Ruby (本身是用 C 实现的);但这项努力或许仍在进行中。JRuby是 JVM 之上的 Ruby。
事实上,解释器与编译器并没有太大的区别。许多解释器包含一个带有该 VM 的翻译器(您可以将其视为编译器)的虚拟机。一些 VM 实现有一个即时动态的机器代码翻译器。JIT 部分动态生成机器代码。
您可以使用例如Ruby-Gnome编写图形应用程序,它是 Gnome 和 Gtk 的粘合剂。您还可以使用Ruby Qt,它是 KDE 和 Qt 的粘合剂