2015-05-18 59 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。