2011-04-20 73 views
7

我是一個主要使用Java的新手程序員。最近我對Ruby感興趣,當我去下載一個IDE時,我驚訝地發現沒有單一的語言實現或解釋器。我一直在努力研究這個問題,但是我並不真正瞭解如何創建一種語言來知道要查找什麼。爲什麼有不同的Ruby實現?

單一語言如何具有多個解釋器?這是否意味着它們之間有重要的區別,這對程序員意味着什麼?請原諒,如果這是一個錯誤的問題,首先!

+8

* most * languages有多種實現,[包括Java](http://en.wikipedia.org/wiki/Blackdown_Java)。 – meagar 2011-04-20 17:04:21

+1

不只是語言。幾乎任何類型的軟件:網頁瀏覽器,GNU emacs與xemacs與xyzzy,不同的終端共享相同的shell語言,... ... – sawa 2011-04-20 19:04:16

+0

@meagar謝謝你的答案,我懷疑是這樣,但wasn'當然! – cotroxell 2011-04-21 14:57:49

回答

7

因爲不同的語言實現者決定專注於特定的領域。例如,與Java運行時(JRuby)的兼容性或JIT(rubinius)實驗,目標​​Ruby在企業(REE)等等,等等。

這不是Ruby獨有的,它是健康的語言,如果一個特定的羣體在某個領域看到語言的潛力,它可以幫助促進該社區內的成長。

1

幾乎所有的語言都有多種實現,包括Java(例如Oracle Java,Apache Harmony,OpenJDK)。但是如果你想要默認的ruby實現,你可以使用下面的代碼:default ruby implementation using YARV

但除此之外,不同的實現有沒有讓你能夠使用上與JRuby與Java VM,並IronRuby現有的框架紅寶石,作爲以迎合行業現有的平臺或應用程序。

4

大多數語言都有多個實現。事實證明,有一些權衡不能總是在單個項目中得到解決。

  • 平臺集成
    你一個平臺集成越近,進一步你從別人整合。所以有一個基本的選擇:專業化或普遍性

  • 穩定性
    如果你願意接受的不穩定性,那麼更宏大的目標可以追求的。所以有一個基本的選擇選擇:開發或穩定

  • 管理團隊
    在任何給定的項目中只有這麼多的管理空間。創建新管理空間的唯一方法是創建一個新項目。所以有一個基本的選擇:您的項目或我的項目。從某種意義上說,這是「主要原因」,因爲不同的管理者會選擇不同的優先級。

+0

謝謝你的回答。我認爲我對平臺集成感到困惑。那麼是否有不同的實現,因爲有人必須將語言實際連接到特定於該平臺的低級命令?我想我認爲那是在編譯器的領域,而不是語言本身的一部分。 – cotroxell 2011-04-21 15:03:54

+0

是的,每種語言都有一個關聯的系統界面。如果它是完全通用的,比如Java,它往往會受到限制,並且在所有客戶端上都會失敗,但它可以(像Java一樣)在服務器上獲得很大成功。如果它是完整的並向一個方向傾斜(如Ruby對Unix),那麼它也可以在客戶端上取得成功,但在這種情況下,Ruby對於富客戶端全盛時期來得太遲。我可以寫一本關於語言與GUI集成的書。 SO評論的主題太大了。 – DigitalRoss 2011-04-28 03:10:52

相關問題