2010-11-27 54 views
6

我在Parrot有一段時間了。我知道這是一個虛擬機,用來運行各種動態語言,並允許一定程度的互操作性(例如,從Python腳本調用Perl函數)。所以,我的問題分爲兩部分:鸚鵡 - 我可以使用它嗎?如何?

  1. 鸚鵡準備好了嗎?我可以看到正在發佈的版本,但現在還不清楚它現在是否運行良好,或者仍然是正在進行的工作。
  2. 是否有任何有關如何使用的文檔 Parrot?我在前面的問題中查看了鏈接,但是我可以找到的所有文檔都會討論各種Parrot特定代碼(PIR,PASM等)的級別,或者如何添加對更多語言的支持。這很好,但是我如何在Parrot的現有語言中運行代碼?我該如何使用其他語言編寫的代碼?

最後,我不想啓動flamewar,但我知道Parrot與Perl 6綁定在一起。我更喜歡Python。我知道Python是一種支持的語言,但實際上,它被視爲一種多語言虛擬機,或者它是一種Perl 6解釋器,包含其他語言作爲好奇心?

回答

9

我主要是Python開發人員,所以我很偏頗。但可能和你一樣。

Parrot旨在成爲一個多語言的VM。它的Perl根有時顯示(「0」是錯誤的,引導語言NQP是perl的一個子集),但在運行時級別,它完全是語言不可知的。

也就是說,語言之間的互操作不會完全無縫。例如,字符串類型很可能會被所有語言用作基礎,但是Ruby對象可能需要包裝器(而不是代理)來執行pythonic。對象互操作沒有任何故事,至少目前還沒有。

Python 3編譯器「Pynie」有很長的路要走。這裏是回購http://bitbucket.org/allison/pynie。也許你想幫忙?現在它很年輕,甚至沒有物體。

並回答您的實際問題:

  1. 排序的。這不是快速的,並且它的目標語言不完整,但它不會崩潰或損壞你的記憶。
  2. 通常情況下,您可以使用您最喜歡的高級語言(Python)編寫代碼並將.py代碼編譯爲parrot(如果需要,可以將其編譯爲本機代碼)。其他開發人員可以編寫自己的Perl(6)代碼和編譯人云亦云,如果編譯器已經寫在考慮互操作,你就可以從蟒蛇調用一個Perl函數
+2

因此,至少從Python的角度來看,這聽起來像是真的在'有趣的想法,在幾年後的階段檢查?恐怕我真的沒有癢,因爲我開發它的動機是從頭開始的,但我很想看看它的結果。 – 2010-11-29 22:14:06

3
  1. 它仍在進行中,但對於語言實現者和圖書館開發者來說,它已經足夠成熟了。警告:一些子系統正在重新加工(垃圾收集,嵌入),所以前方道路上可能會出現一些顛簸。

  2. 每種語言都需要一個編譯器來生成Parrot理解的代碼。這些編譯器分開發布。 (請參閱http://trac.parrot.org/parrot/wiki/Languages) 大多數針對Parrot的語言都處於早期不完整狀態,所以互操作性現在不是一個大問題。 Parrot不是Perl 6的解釋器,但Rakudo Perl 6恰好是針對Parrot的最爲發達的編譯器之一。

相關問題