Ruby Book推荐它如何在引擎盖下工作?

时间:2015-05-18 15:10:44

标签: ruby

我正在从.NET迁移到Ruby,并且我开始对语言有了相当不错的把握。然而,我还有很多想要了解的事情。

在C#中,我读过的最好的书之一是通过C#称为CLR。它详细介绍了CLR如何工作,内存如何工作,垃圾收集,反射等等。

Ruby有同等的书吗?什么解释了解释器在封面下的样子?

1 个答案:

答案 0 :(得分:0)

Ruby中没有“解释器”。 Ruby是编程语言,编程语言是抽象的数学对象,是一组逻辑规则和限制。

Ruby的子集有一个ISO specification。曾经有一套用Ruby编写的全面的可执行示例,称为RubySpec,但不幸的是,由于Ruby的语言设计者缺乏支持,它被其维护者抛弃了;然而,一些实现仍然在内部使用它来进行测试,例如, RubiniusJRuby。还有一组测试用于指定YARV实现中语言的行为,这是大多数语言设计者正在攻击的实现。

有几种Ruby实现,但是,这些实现都不是解释器,它们都至少有一个,多个编译器:

  • Rubinius,一个两阶段混合模式实现,包括用Ruby编写的Ruby-to-bytecode-compiler,用Ruby编写的内核和核心库,以及用C ++编写的带字节码解释器的VM和基于LLVM的JIT编译器。
  • Topaz,一个使用PyPy框架构建的两阶段混合模式实现,包括一个Ruby-to-bytecode编译器和一个带有字节码解释器和用RPython编写的JIT编译器的VM,以及一个内核和核心库部分来自Rubinius。
  • MagLev,一个基于GemStone / S Smalltalk平台的两阶段混合模式实现,由一个Ruby-to-bytecode编译器和一个或多或少未经修改的GemStone / S Smalltalk VM组成。
  • IronRuby,一个基于Microsoft动态语言运行时和公共语言基础结构的两阶段混合模式实现,用C#编写。
  • JRuby+Truffle,基于JRuby和Truffle AST解释器框架的Ruby的新实现。
  • JRuby,一个基于Java平台构建的两阶段混合模式实现,用Java编写。
  • MRuby,一个小型,轻量级,可嵌入的ISO Ruby规范子集的实现。 (这是Ruby的创建者正在为自己开发的实现。)
  • YARV,一个包含Ruby-to-bytecode编译器和字节码解释器的两阶段实现,以及一个用C语言编写的核心库。
  • Opal是一个Ruby-to-ECMASCript编译器,遗憾的是它并没有100%准确地实现Ruby语言的语义。

我试图从最简单到最难读的源代码订购它们,顺便提一下(几乎)从大多数到最不感兴趣的源代码。 (我认为JRuby + Truffle是非常棒的,当涉及到如何让Ruby快速开启的有趣想法时,应该与Rubinius和Topaz一起使用。)

我从最简单到最难读的源代码订购它们的原因是因为,实际上没有任何书籍描述各种实现。阅读来源可能是你最好的选择。然而,经典Smalltalk-80: The Language and its Implementation (aka the Blue Book)是Rubinius设计的重要灵感。 JRuby + Truffle作为一个研究项目,已经发表了相当数量的论文。

有一个Ruby Bibliography Page,它与论文有一些联系,主要是关于JRuby + Truffle,还有关于MagLev和JRuby的文章。