2013-06-13 35 views
0

一個問題是Ruby在運行時所做的。與C語言相比,它是一種解釋型語言,C語言是一種編譯語言。它會是多麼可行? Ruby每年都變得越來越快,但是如何?正在做什麼?我們使用的很多方法(each,map等)是用C編寫的,加速了一切嗎? C的長期目標是讓Ruby和C一樣快嗎?試圖將用Ruby編寫的代碼轉換爲C,然後運行它,最大的問題是什麼?或者,這個問題沒有任何意義嗎?如果是這樣,爲什麼?運行之前可以將Ruby轉換爲C嗎?

回答

5

Ruby爲您提供了比C更多的功能。例如,C編程的一個缺點是程序員必須執行內存管理。這需要時間,自我展示和技巧。在缺陷和安全漏洞方面缺乏任何這些結果。但它產生的運行時間很快,因爲它是針對特定情況而非常規情況而定製的。

使用Ruby,您可以專注於應用程序,而不是機械。它爲你做內存管理,這意味着(通常)更少的錯誤和更安全的代碼。但是沒有免費的午餐 - 你用更多的運行時間來支付。

C是一種靜態語言 - 關於類型和操作的決定必須在編譯時進行。 Ruby是一種動態語言,決定可以推遲到運行時間,這會導致更靈活和更具響應性的語言。比較C和Ruby就像比較蘋果和橘子。

當然,你可以用C做所有的事情,Ruby是用C語言寫的,但是它是一個工作的,你最好是一個該死的好程序員。

+0

我明白了。說Ruby是否爲你做內存管理是正確的,但它通常是這樣做的。它確保它能夠插入所有的孔,包括那些你甚至不會碰到的孔。這與C完全不同,內存管理完全由你來處理,所以你不會浪費時間在你知道你的代碼不會落入的區域和漏洞上,所以內存管理是針對你的代碼量身定做的。 Ruby更普遍,這需要時間,而C流線化,因爲它不必浪費額外時間。是嗎?沒有? – David

+0

@David:絕對。在實踐中,它不是「你知道你的代碼不會落入」的區域,「更多」你認爲你的代碼不會落入的區域。 Ruby涵蓋了所有的基礎,其中C取決於你。另外請記住,這只是我用作示例的一個區別。我沒有提到C代碼中的大部分功能,比如Object Orientation。 – cdarke

相關問題