2009-12-23 30 views
3

我在計算機科學沒有受過正規教育,但我已經在Java中,紅寶石,jQuery的被編程很長一段時間。的MacRuby:Objective-C運行是一樣的Ruby運行

我正在檢查macruby項目。我繼續運行類似於「在MacRuby objective-c運行時與ruby運行時相同」的語句。

我明白MRI是什麼。我明白ruby 1.9帶來了什麼。但是我不明白一種語言的VM如何支持另一種語言。

我知道我在問一個問題的答案依賴於年的正規教育。仍然任何指針和任何討論將有所幫助。

另外我喜歡我在macruby中看到的。

回答

0

剛上

記但是我不明白的VM的一種語言如何支持另一種語言。

一部分。

一個VM代表機和編程語言之間的中間層。例如。 Java虛擬機(JVM)執行所謂的java字節碼。 javac編譯器獲取源代碼並將其編譯爲中間語言 - 即字節碼。當您運行應用程序時,您實際上在虛擬機中運行字節碼:

JVM運行時執行.class或.jar文件,通過解釋它來模擬JVM指令集,或者使用即時編譯器(JIT),如Sun的HotSpot。現在大多數JVM使用JIT編譯而不是解釋來實現更高的速度。提前開發的編譯器也可以將類文件預編譯爲特定平臺的本地代碼。

因此能夠在針對其編譯到一定VM已被寫入任何語言(例如Clojure的,Scala中,犀牛,...)來編碼。同樣的princle適用於圍繞Microsoft .NET的通用中間語言(CIL)的體系結構。

至於MacRuby的內部,有在其網站上short overview

1

好,

最簡單的解釋是,MacRuby的是Ruby 1.9的VM。在較早的版本中,它是YARV(ruby 1.9的官方VM)的修改版本,它不是使用自定義類型來處理諸如ruby字符串,哈希等等的東西,而是使用類似於NString等蘋果基礎類中的等價類。隨着0.5版本的出現,一個全新的虛擬機已經基於LLVM框架開發出來,同樣是基於蘋果基礎類的ruby 1.9兼容版本。

因此你能想到的MacRuby簡單地作爲Ruby 1.9 VM。然而,由於使用了上述的基礎類,所以有可能本地連接許多蘋果自己的API,提供僅供運行MacRuby的人使用的附加功能(例如HotCocoa)。