2011-02-17 24 views

回答

2

從外觀來看,這些限制非常嚴格,總的來說,它的編程要少得多,我想。這對於實現PyPy是必需的,但通常如果你想要能夠與Python進行交互的快速編譯代碼,你可以使用Cython(針對CPython擴展並且幾乎支持所有的Python),或者使用更常見的代碼編寫代碼可以做到這一點的語言。如果你只想快速編譯代碼......那麼,RPython可能比例如C,但是,我仍然沒有看到這方面的重大優勢(至少沒有一個值得努力創造一種可用的,穩定的語言)。

2

爲什麼我要直接在RPython中編寫?

Python代碼似乎很簡單,並運行PyPy。

爲什麼我要編寫C代碼?

它似乎很簡單得多寫Python和已PyPy用C

實施

爲什麼我會想編寫彙編代碼?

它似乎很簡單得多寫Python和有PyPy在C和彙編程序中實現的C語言實現。

我想這真的是一路下跌。

爲什麼我要停止使用最方便的語言並切換到不太方便的語言?

放棄一個很好的語言有什麼價值?

+0

編譯的RPython程序對於某些類型的問題(帶有循環的)可以比Python快幾個數量級。 – highBandWidth 2011-02-17 20:40:05

+2

用我的JIT句柄不會PyPy? – 2011-02-17 20:43:30

17

我不能爲其他人說話,但我個人非常感興趣的是使用RPython作爲通用語言。回答其他人的問題:

爲什麼?因爲Cython很難找出如何使用。如果你沒有把很多棘手的類型聲明放在恰當的位置,你不會得到任何加速。使用RPython,它會運行得很快,或者根本不會運行。

使用PyPy提供了一個很好的加速,但目前不像RPython那麼多。

RPython可能是獲得超快速,有點Pythonic代碼的好方法。 Here's an example幫助您開始。不幸的是,我不知道有任何大型項目會這樣做。

11

是的,有已經使用PyPy的翻譯工具鏈創建使用RPython獨立的可執行文件和庫的項目。它被稱爲RPythonic

4

一般用途的RPython不會成爲CPython和PyPy的競爭對手。它甚至不會成爲像Cython這樣的競爭對手。

爲什麼?因爲RPython不是Python !!RPython只是一種與Python共享一些語法的語言;足夠讓Python解釋器可以執行RPython代碼,但是您不能將Python代碼編譯爲RPython

爲了使RPython靜態類型化和編譯(實際上,爲了具有靜態類型推斷),添加的Python限制非常嚴重,以至於它們完全改變了語言。如果你想編寫一個RPython程序,你必須決定在RPython中編寫它。你不能用Python編寫程序,然後決定將它編譯爲RPython,你甚至無法調整一個真實的Python程序來使它成爲RPython。普通的Python代碼與普通的RPython代碼不同,編寫RPython更類似於編寫Java或C#。

因此,如果你想用Python編寫一般程序,但你希望它們變得更快,RPython幾乎沒有什麼可以提供給你的。這就是PyPy的Python解釋器試圖填補的空白。

如果你想用低級編譯語言編寫普通程序,因爲你需要你的程序比Python運行得更快,那麼現在有非常成熟的語言和庫,比如Java或C#。

在RPython中編寫代碼的原因是要做一些特別是通過RPython變得更好的東西。就像編寫解釋器一樣,您可以添加垃圾收集器和JIT編譯器,而無需手動編寫它們! 這裏 RPython閃耀,是的,我會對更精緻和可用的RPython解釋器寫入環境非常感興趣。但作爲一種編程程序的通用編程語言,如果不能從RPython的特色中受益,那麼只需要花費大量的工作量就可以與已經充分發揮該角色的現有語言競爭。現在幾乎沒有標準庫(因爲幾乎沒有Python的廣泛標準庫可用於RPython)。