MacRuby:objective-c运行时与ruby运行时相同

时间:2009-12-23 11:28:03

标签: ruby computer-science macruby

我没有正式的计算机科学教育,但我已经用Java,Ruby,jQuery编程了很长时间。

我正在检查macruby项目。我一直在运行类似于“在MacRuby objective-c runtime中与ruby运行时相同”的语句。

我明白MRI是什么。我理解ruby 1.9带来了什么。但是,我无法理解一种语言的VM如何支持另一种语言。

我知道我在问一个问题的答案,这取决于多年的正规教育。仍有任何指示和任何讨论都会有所帮助。

我也喜欢我在macruby中看到的内容。

2 个答案:

答案 0 :(得分:1)

那么,

最简单的解释是MacRuby是一个ruby 1.9 VM。在早期版本中,它是YARV(ruby 1.9的官方VM)的修改版本,而不是使用自定义类型,例如ruby字符串,哈希等,使用在NString等苹果基础类中找到的等价物。随着0.5版本的出现,基于LLVM框架开发了一个全新的VM,同样兼容了ruby 1.9,这是基于苹果基础类的。

因此,您可以将Macruby简单地视为ruby 1.9 VM。但是,由于使用了上述基础类,因此可以与大多数苹果自己的API进行本地接口,只提供运行MacRuby的人可以使用的附加功能(例如HotCocoa)。

答案 1 :(得分:0)

关于

的说明
  

但是我无法理解一种语言的VM如何支持另一种语言。

一部分。

VM代表机器和编程语言之间的中间层。例如。 Java虚拟机(JVM)执行所谓的java字节码。 javac编译器获取源代码并将其编译为中间语言 - 该字节码。运行应用程序时,实际上在虚拟机中运行字节码:

  

JVM运行时执行.class或.jar文件,通过解释它来模拟JVM指令集,或使用Sun的HotSpot等即时编译器(JIT)。 JIT编译,而不是解释,在今天的大多数JVM中使用,以实现更快的速度。还存在使开发人员能够将类文件预编译为特定平台的本机代码的前期编译器。

因此,可以使用任何语言(例如Clojure,Scala,Rhino,...)编写代码,以便编写某个VM的编译器。相同的princle适用于围绕Microsoft .NET的通用中间语言(CIL)的架构。

对于macruby内部,其网站上有short overview