2010-10-27 18 views
0

我只是混淆了一個概念。我一直聽說Ruby是一種編程語言。現在,許多公司/個人已經開發了JRuby,它是用於Java的Ruby實現和用於Python的Ruby實現的Jython。 任何人都可以請解釋一下,一種編程語言如何在另一種編程語言中實現? 如果我有任何意義?不同集合中的紅寶石的實現

是否有可能開發的Ruby implementaiton任何其他系統如Prolog?

任何人都可以解釋一下嗎?

在此先感謝。

回答

2

一種編程語言只是程序員,你之間的轉換,並條機,不同程度的抽象。例如,Ruby本身是用C語言編寫的(因爲大多數語言都是在自我構建之前,即語言足夠強大以構建自己的語言),C代碼被編譯爲可以理解Ruby代碼的機器代碼。它所做的只是將一種範式轉化爲另一種範式;紅寶石 - > C - >彙編 - >處理器指令並重新備份,同樣也適用於不同程度的動態變化(某些代碼是硬編碼的,即不會改變或無法處理結構變化,而其他代碼則被設計專門處理動態結構,如JVM)。但它最終都是機器碼。 Ruby是機器代碼。 JRuby是在機器代碼的JVM上運行的字節代碼。 Ruby中的字符串是JRuby中的字符串,是C中的char []數組,是機器代碼中結構化的內存位置線。您可以擁有一套機器代碼(抽象地稱爲「Ruby」)來理解其他機器代碼(抽象地稱爲「Ruby代碼」)。

越高抽象,範式將依託技術平臺,它是就少了,下越依賴於它。移植軟件依賴於堆棧的各個部分也可以在各種平臺上使用。我確信有沒有Ruby的平臺,但是如果他們有C語言(或者更具體地說,ANSI C,任何平臺真正想要創建編譯器的第一種語言之一),那麼它就是可能爲它編譯一個(或任何其他語言)(有一些調整)。這一切都歸結爲將您的抽象轉換爲計算機本身可以理解並採取行動的指令。

爪哇,例如,使用一箇中間層系統(JVM),其是Java代碼(同樣適用於所有平臺)和所述平臺(對於所有不同大多)之間的轉換器。爲JVM編寫Ruby解析器只是將JVM重新用作中間層而不是使用ANSI C,因此可能更簡單一些;如果它運行在JVM上,它可以在JVM可以運行的任何地方運行,並且JRuby可以讓讓JVM的人擔心更多特定平臺的東西(我相信JVM本身是用C語言編寫的)。

還有另外一種方法來看待這個問題,例如JS.Class,它採用一種語言的一些範例,並使其在另一種語言中可用,因爲它們很好/酷/時尚。

+0

感謝您的信息。看到實現真的很有趣。尋找更多的答案。 – JPro 2010-10-27 22:27:25