2010-10-27 15 views
0

我只是混淆了一个概念。我一直听说Ruby是一种编程语言。现在,许多公司/个人已经开发了JRuby,它是用于Java的Ruby实现和用于Python的Ruby实现的Jython。 任何人都可以请解释一下,一种编程语言如何在另一种编程语言中实现? 如果我有任何意义?不同集合中的红宝石的实现

是否有可能开发的Ruby implementaiton任何其他系统如Prolog?

任何人都可以解释一下吗?

在此先感谢。

回答

2

一种编程语言只是程序员,你之间的转换,并条机,不同程度的抽象。例如,Ruby本身是用C语言编写的(因为大多数语言都是在自我构建之前,即语言足够强大以构建自己的语言),C代码被编译为可以理解Ruby代码的机器代码。它所做的只是将一种范式转化为另一种范式;红宝石 - > C - >汇编 - >处理器指令并重新备份,同样也适用于不同程度的动态变化(某些代码是硬编码的,即不会改变或无法处理结构变化,而其他代码则被设计专门处理动态结构,如JVM)。但它最终都是机器码。 Ruby是机器代码。 JRuby是在机器代码的JVM上运行的字节代码。 Ruby中的字符串是JRuby中的字符串,是C中的char []数组,是机器代码中结构化的内存位置线。您可以拥有一套机器代码(抽象地称为“Ruby”)来理解其他机器代码(抽象地称为“Ruby代码”)。

越高抽象,范式将依托技术平台,它是就少了,下越依赖于它。移植软件依赖于堆栈的各个部分也可以在各种平台上使用。我确信有没有Ruby的平台,但是如果他们有C语言(或者更具体地说,ANSI C,任何平台真正想要创建编译器的第一种语言之一),那么它就是可能为它编译一个(或任何其他语言)(有一些调整)。这一切都归结为将您的抽象转换为计算机本身可以理解并采取行动的指令。

爪哇,例如,使用一个中间层系统(JVM),其是Java代码(同样适用于所有平台)和所述平台(对于所有不同大多)之间的转换器。为JVM编写Ruby解析器只是将JVM重新用作中间层而不是使用ANSI C,因此可能更简单一些;如果它运行在JVM上,它可以在JVM可以运行的任何地方运行,并且JRuby可以让让JVM的人担心更多特定平台的东西(我相信JVM本身是用C语言编写的)。

还有另外一种方法来看待这个问题,例如JS.Class,它采用一种语言的一些范例,并使其在另一种语言中可用,因为它们很好/酷/时尚。

+0

感谢您的信息。看到实现真的很有趣。寻找更多的答案。 – JPro 2010-10-27 22:27:25