6

少し前からパロットに目がいっていました。これは、さまざまな動的言語を実行し、ある程度の相互運用性 (Python スクリプトから Perl 関数を呼び出すなど) を可能にするように設計された仮想マシンであることを理解しています。だから、私の質問は2つの部分に分かれています:

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

最後に、私はフレームワークを開始したくありませんが、Parrot が Perl 6 に縛られていることは知っています。私は Python の方が好きです。Python がサポートされている言語であることは理解していますが、現実的には、多言語 VM として認識されているのでしょうか、それとも他の言語が好奇心として含まれている Perl 6 インタープリターでしょうか?

4

2 に答える 2

9

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

Parrotは、多言語VMを対象としています。そのPerlルートは時々表示されます(「0」はfalse、ブートストラップ言語NQPはperlのサブセットです)が、実行時レベルでは言語にまったく依存しません。

とはいえ、言語間の相互運用は完全にシームレスではありません。たとえば、String型はすべての言語でベースとして使用される可能性が高いですが、Rubyオブジェクトは、pythonicとして機能するためにラッパー(プロキシではない)を必要とする可能性があります。少なくとも今のところ、オブジェクトの相互運用についての話はありません。

Python3コンパイラ「Pynie」にはかなりの道のりがあります。これがリポジトリhttp://bitbucket.org/allison/pynieです。多分あなたは手伝いたいですか?今のところ、それはかなり若く、まだオブジェクトさえありません。

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

  1. ある種。高速ではなく、それを対象とする言語は完全ではありませんが、クラッシュしたり、メモリを破壊したりすることはありません。
  2. 通常、お気に入りの高級言語(Python)でコードを記述し、.pyコードをオウムにコンパイルします(必要に応じて、そこからネイティブコードにコンパイルできます)。別の開発者は、Perl(6)コードを記述して、それをオウムにコンパイルできます。コンパイラーが相互運用機能を念頭に置いて記述されている場合は、PythonからPerl関数を呼び出すことができます。
于 2010-11-28T22:52:58.553 に答える
3
  1. まだ開発中ですが、言語の実装者やライブ​​ラリ開発者にとっては十分に成熟しています。警告: 一部のサブシステムは作り直されています (ガベージ コレクション、埋め込み)。

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

于 2010-11-29T19:59:15.477 に答える