2010-11-27 19 views
6

私はちょっとParrotを見てきました。私はそれがさまざまな動的言語を実行し、ある程度の相互運用性(例えば、PythonスクリプトからPerl関数を呼び出す)を可能にするように設計された仮想マシンだと理解しています。ですから、私の質問は2つの部分に分かれています:オウム - 私はそれを使うことができますか?そしてどうやって?

  1. Parrotはいつも使用できますか?私はリリースが行われているのを見ることができますが、それが現在うまくいくのか、まだ進行中の作業なのかは明らかではありません。
  2. の使用方法に関する資料はありますか? Parrot?以前の質問のリンクを見てきましたが、私が見つけることができるすべてのドキュメントでは、Parrot固有のコード(PIR、PASMなど)のさまざまなレベルについて話したり、より多くの言語のサポートを追加する方法について説明します。素晴らしいことですが、Parrotの既存の言語でコードを実行するにはどうすればよいですか?そして、別の言語で書かれたコードをどうやって使うのですか?

最後に、私は浮気を開始したくありませんが、私はパロットがPerl 6に縛られていることを知っています。私はPythonが好きです。私はPythonがサポートされている言語だと理解していますが、現実的には、それは多言語VMとして認識されていますか、それとも他の言語を含むPerl 6インタプリタですか?

答えて

9

私は主にPython開発者ですので、私は偏っています。しかしおそらくあなたと同じ方向です。

Parrotは多言語VMを意図しています。そのPerlのルーツは時々表示されます( "0"はfalse、ブートストラップ言語のNQPはperlのサブセットです)が、ランタイムレベルではそれはかなり言語に依存しません。

つまり、言語間の相互運用は完全にシームレスではありません。たとえば、String型はすべての言語でベースとして使用されますが、Pythonで動作するにはRubyオブジェクトにラッパーが必要です(プロキシは必要ありません)。オブジェクト間の相互作用については、少なくともそれほど遠くない話はありません。

Python 3コンパイラ "Pynie"にはかなりの方法があります。ここにレポhttp://bitbucket.org/allison/pynieがあります。多分あなたは手伝ってみたいと思いますか?今はかなり若く、まだオブジェクトでさえありません。

そして、あなたの実際の質問に答えるために:の

  1. ソートを。それは高速ではなく、それをターゲットとする言語は完全ではありませんが、あなたの記憶を崩壊させたり破損させたりすることはありません。
  2. 通常、好きな高水準言語(Python)でコードを書いて、.pyコードをparrotにコンパイルします(そこから、必要に応じてネイティブコードにコンパイルできます)。別のdevが彼らのPerlの(6)のコードを書いて、オウムにそれをコンパイルし、コンパイラは心の中で相互運用して書かれている場合、あなたは
+2

だから、少なくともPythonの観点からは、それは本当に「面白いアイデア」のように聞こえます。私は本当に私がそれを開発するのを手助けして傷つける動機を持っているかゆみがないのではないかと思いますが、私はそれがどのようになっているかを見て興味があります。 –

3
  1. それをのpythonからPerl関数を呼び出すことができますすることができますまだ進行中ですが、言語実装者やライブ​​ラリ開発者にとっては十分成熟しています。注意:いくつかのサブシステムが再処理されています(ガベージコレクション、埋め込み)ので、先行する道路には多少のぶつかりがあるかもしれません。

  2. 各言語には、Parrotが理解できるコードを生成するコンパイラが必要です。これらのコンパイラは個別にリリースされています。 (http://trac.parrot.org/parrot/wiki/Languagesを参照) Parrotをターゲットとするほとんどの言語は初期の不完全な状態にあるため、相互運用性は大きな問題ではありません。 ParrotはPerl 6のインタプリタではありませんが、Rakudo Perl 6はParrotをターゲットとした最も開発が進んだコンパイラです。

関連する問題