Opal 看起来像不错的图书馆,但我不确定它是否有真正的用途。你如何使用它?还是只是好奇?
1 回答
Ruby 是一种编程语言。编程语言是一组抽象的数学规则和限制。它是一个想法,一个规范,一张纸。
你可以用编程语言编写程序,但如果你只有编程语言本身,那么你对这些程序所能做的就是阅读它们,研究它们,证明它们的属性等等。但你不能运行它们(除了在你的脑海中或使用笔和纸)。
然而,这并没有使编程语言变得毫无用处。有很多编程语言从未实现过,它们只是为了编写程序并证明这些程序的属性或研究编程语言本身的属性而创建的。
然而,Ruby 旨在作为一种实用的编程语言。用 Ruby 编写的程序是用来执行的,而不是用笔和纸。
这意味着我们需要另一个难题,我们需要所谓的编程语言实现。
编程语言实现本身就是用某种编程语言编写的程序(它可以是相同的或不同的),它“理解”用编程语言编写的程序并用它们做两件事之一:
它“运行”它们,这意味着它根据编程语言的规范执行程序的副作用和操作。这种实现称为解释器。
它将它们“翻译”成不同的编程语言,即将源编程语言编写的程序翻译成目标编程语言语义等价的程序,这样使用输出编程语言的解释器解释生成的输出程序会产生相同的结果结果并执行与使用输入编程语言的解释器解释源输入程序相同的副作用。
Ruby 实际上有相当多的编程语言实现:
- YARV
- 红宝石
- 松露红宝石
- JRuby
- 鲁比纽斯
- 朝鲜蓟(仍在开发中)
- Ruby+OMR(不确定这是否还在开发中)
- IronRuby(不再积极开发)
Opal 只是 Ruby 的另一种编程语言实现。在这方面,它与其他任何一个都没有什么不同。他们都有自己的优势、劣势、用例和利基。
Opal 与列表中的其他相比有些独特,因为它是一个纯编译器。XRuby 和 Ruby.NET 的工作方式相同,但已不再开发。上面列表中的所有其他代码在某些时候以某种形式至少对某些代码使用解释器。例如,虽然 YARV从不解释 Ruby,但它总是将 Ruby 编译为 YARV 字节码,它通常会在将 YARV 字节码交给 JIT 编译器之前至少解释几次。
因此,使用 Opal 的原因与使用任何其他 Ruby 实现的原因相同:您有一个 Ruby 程序并且想要运行它。为了运行它,您需要一个 Ruby 实现。