2009-01-21 51 views
5

我很好奇.NET如何影響Python和Ruby應用程序。Python和Ruby應用程序如何受.NET影響?

用IronPython/IronRuby編寫的應用程序是否對.NET環境特別有用,以至於它們本質上會變成平臺特定的?

如果他們不使用任何.NET功能,那麼IronPython/IronRuby相對於它們的非.NET相應功能有什麼優勢?

回答

5

我無法對IronRuby做任何說明,但大多數python實現(如IronPython,Jython和PyPy)都儘可能地儘可能地實現CPython實現。儘管IronPython在這方面很快成爲最好的之一,Planet Python上有很多關於它的流量。

鼓勵開發人員編寫與他們在CPython中編寫代碼不同的代碼的主要原因是缺少像NumPy這樣的C擴展模塊(這在Jython和PyPy中也是一個問題)。

一個有趣的項目讓你留意IronClad,它可以讓你從IronPython內部調用C擴展模塊。這最終意味着你可以在CPython下開發代碼,使用你喜歡的任何模塊,它將在IronPython上不加修改地運行。

http://www.resolversystems.com/documentation/index.php/Ironclad

因此,要回答你的問題:

應該是很容易編寫上CPython的工作,以及IronPython的應用程序,但我可能會旨在圍繞走另一條路:CPython的程序,在IronPython上工作也是如此。這樣,如果它不起作用,那麼它更可能是已知解決方法的已知錯誤。

IronPython et al 現有的的優勢在於它們提供了該語言的替代實現,這有時可用於發現CPython中的錯誤。它們還提供了可供選擇的方法部署您的Python應用程序,如果由於某種原因,你的情況(像Silverlight)發現自己在那裏分發CPython的實現與應用程序是不恰當的。

1

IronPython/IronRuby構建在.net虛擬機上,因此它們就像您說的基本上是平臺特定的。

顯然它們與Python和Ruby兼容,只要您不在程序中使用任何.net框架。

+0

根據IronPython的FAQ(http://www.codeplex.com/IronPython/Wiki/View.aspx?title=FAQ&referringTitle=Home),您可以訪問CPython的庫,這讓我想知道到底是什麼樣的可用於IronPython應用程序的庫。 – 2009-01-21 20:56:20

0

你回答第一個問題的時候,如果你不使用.Net中的任何東西,只執行語言提供的原始庫,你可以用另一個解釋你的* .py或* .rb文件實施和它應該工作。

好處是,如果你的.Net網店你通常負責在客戶端機器上安裝正確的框架等等......如果你想要python或ruby代碼,你現在需要支持另一個「框架」需求分發安裝,處理版本問題等...所以有兩個優點,使用另一種語言的.Net框架電源+保持分發/維護儘可能簡單。

0

它會很酷運行Rails/Django的IIS下,而不是阿帕奇/雜種型解決方案

+0

爲什麼這樣做會很酷? – projecktzero 2009-01-22 19:48:05

1

如果你創建一個庫或框架,人們可以在.NET上與他們的.NET代碼中使用它。這對他們來說非常酷,對你來說!

在開發應用程序時,如果您放棄使用.NET的設施,那麼您將失去「跨平臺性」,這並不總是一個問題。

如果您將這些用途包含在內部API中,稍後可以用純Python,包裝C(用於CPython)或Java(用於Jython)替換.NET實現。

1

根據Mono頁面,IronPython與Mono的.Net運行時實現兼容,因此可執行文件應該可以在Windows和Linux上運行。

2

用IronPython/IronRuby編寫的應用程序是否對.NET環境特別有用,以至於它們本質上會變成平臺特定的?

IronRuby目前附帶的大多數核心ruby標準庫,並支持紅寶石寶石。

這意味着它將支持幾乎所有的原生Ruby應用程序,不依賴於C擴展。
反面是,將有可能寫在IronRuby的本地Ruby應用不依賴於CLR,而那些將移植到MRI檢查。

不管有沒有人選擇創建或使用使用CLR他們的應用程序擴展名是一樣的問題,就是人們是否創建或使用C擴展的MRI - 一個並不比其他的更便攜。

有一個附帶問題「因爲在C#中創建IronRuby擴展比在C中創建CRuby擴展容易得多,人們是否會創建擴展,以便他們應該堅持原生ruby代碼?,但這完全是主觀的。

總體上,雖然,我認爲任何讓創建擴展更容易是一個巨大的勝利。


如果他們不使用任何的.NET功能,那麼什麼是IronPython的/ IronRuby的優勢比那些非.NET的同行?

  1. 性能:IronRuby的是速度已經在大多數情況下比MRI 1.8,並且已經不遠了MRI 1.9,事情只會在未來的改善。我認爲python在這方面是相似的。

  2. 部署:正如人們已經提到,運行本地Ruby跨平臺的軌道內IIS應用程序是一個很有吸引力的一些基於Windows的開發人員,因爲它可以讓他們更好地與現有的服務器/管理基礎架構集成的/ etc

  3. 穩定性:儘管MRI 1.9比1.8好得多,但我不認爲任何人都不會認爲CLR比C ruby​​有更好的垃圾收集器和基本運行時間。

相關問題