我只是对一个概念感到困惑。我一直听说Ruby是一种编程语言。现在,很多公司和个人都开发了JRuby,它是Java和Jython的Ruby实现,是Python的Ruby实现。有人能给我解释一下,一种编程语言是如何在另一种编程语言中实现的吗?如果我说的有道理的话?
有没有可能为其他系统开发Ruby实现,比如Prolog?
有谁能解释一下吗?
提前谢谢。
发布于 2010-10-28 06:08:43
编程语言只是你、程序员和机器之间的翻译器,达到不同程度的抽象。例如,Ruby本身就是用C语言编写的(就像大多数语言一样,在它们进行自我构建之前,即.C代码被编译成能够理解Ruby代码的机器码。它所做的就是简单地从一个范例转换到另一个范例;Ruby -> C ->汇编程序->处理器指令,并再次备份,也到了不同程度的动态(有些代码是硬编码的,即.不改变或者不能处理结构的改变,而其他的被设计成专门处理动态结构,比如JVM)。但这一切最终都变成了机器代码。Ruby是机器代码。JRuby是在JVM上运行的字节码,它是机器码。Ruby语言中的字符串是JRuby中的字符串,C语言中的char[]数组是机器码中内存位置的结构化行。您可以让一组机器代码(抽象地称为“Ruby”)理解其他机器代码(抽象地称为“Ruby代码”)。
抽象程度越高,范例对它所依赖的技术平台的依赖就越少,它对它的依赖就越低。移植软件依赖于堆栈的各个部分,这些部分也可以在各种平台上使用。我敢肯定有些平台还没有安装Ruby,但是如果他们安装了C语言(或者,更确切地说,是ANSI C,这是任何平台真正尝试为其创建编译器的首批语言之一),那么就有可能为它编译一种(或任何其他语言)(通过一些调整)。归根结底,这一切都是为了将您的抽象转换为计算机本身可以理解和执行的指令。
例如,Java使用中间层系统( JVM),它是Java代码(对于所有平台都相同)和平台(对于所有平台都不同)之间的转换器。为JVM编写Ruby解析器只是重用JVM作为中间层,而不是使用ANSI,因此可能会更简单一些;如果它运行在JVM上,它就可以在JVM可以运行的任何地方运行,并且JRuby可以让JVM的开发者担心更多平台相关的东西(我相信JVM本身是用C语言编写的)。
还有另一种方式来看待这一点,例如,像JS.Class这样的东西,它从一种语言中提取一些范例,并将其用于另一种语言,因为它们很好/很酷/很流行。
https://stackoverflow.com/questions/4038012
复制相似问题