2015-05-18 25 views
-4

我正在从.NET转向Ruby,并且我开始对这门语言有一个相当好的把握。然而,我仍然想了解更多有关许多事情。Ruby Book有关如何在引擎盖下工作的建议?

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

是否有与Ruby等价的书?解释翻译者在封面下看起来像什么的东西?

回答

-1

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

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

有红宝石的若干实施方式,但是,没有这些实现的是一个解释器,它们都具有至少一个,一些多个编译器:

  • Rubinius,两阶段混合模式执行由用Ruby编写的Ruby到字节码编译器,用Ruby编写的内核和核心库以及用C++编写的带有字节码解释器和基于LLVM的JIT编译器的VM。
  • Topaz,这是一个两阶段混合模式实现,它由PyPy框架构建,包含一个Ruby到字节码编译器和一个VM,其中包含用RPython编写的字节码解释器和JIT编译器,以及部分由Rubinius派生的内核和核心库。
  • MagLev,构建在GemStone/S Smalltalk平台之上的两阶段混合模式实现,由Ruby到字节码编译器和或多或少未修改的GemStone/S Smalltalk VM组成。
  • IronRuby,这是一个在C#中编写的基于Microsoft动态语言运行时和通用语言基础结构构建的两阶段混合模式实现。
  • JRuby+Truffle,基于JRuby和Truffle AST解释器框架的Ruby的新实现。
  • JRuby,这是一个在Java平台上构建的两阶段混合模式实现,使用Java编写。
  • MRuby,这是一个小型的,轻量级的,可嵌入的ISO Ruby规范子集的实现。 (这是Ruby的创建者自己开发的实现)。
  • YARV,一个由Ruby到字节码编译器和字节码解释器组成的两阶段实现,以及一个核心库,全部用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 +松露,但也关于MagLev和JRuby。