質問

Parrotは、もともとPerl 6用に設計された仮想マシンです。

Parrot VMは、 Java Virtual Machine(JVM) / Hotspot VM および共通言語ランタイム(CLR)不足?

役に立ちましたか?

解決

次の回答は2009年に作成されました。 2015年のraiphによる更新もご覧ください。

@Reedを展開し、いくつかのハイライトを指摘するために、Parrotのオペコードはほとんどの仮想マシンよりもはるかに高いレベルにあります。たとえば、ほとんどのマシンは整数と浮動小数点を格納しますが、基本的なレジスタは整数、数値、文字列、Parrot Magic Cookie(PMC)です。文字列を組み込むことは、JVMからのステップアップです。

さらに興味深いのはPMCです。これはJVMのオブジェクトタイプに似ていますが、はるかに機能的です。 PMCは、必要なその他のすべての複雑なタイプのコンテナです配列、テーブル、ツリー、イテレータ、I / Oなどの実際の言語。PMCとそのためのさまざまな組み込みopsにより、言語作成者の作業が軽減されます。 Parrotは、面倒ではありますが、言語を実装するために必要な部分を避けません。

私の情報は古くなっているかもしれませんが、オペコードはプラグイン可能であると信じています。あなたの言語に必要なオペコードのみを含むParrot VMを出荷できます。また、言語が配列を通常のParrot配列とは少し異なる動作をするようにしたい場合は、サブクラスにすることができます。

最後に、Parrotはアセンブラー( PASM )だけでなく、また、少し高いレベルの言語である Parrot Intermediate Representation(PIR)。 PIRにはループ、サブルーチン、ローカライズされた変数、いくつかの基本的な数学および比較操作があり、プログラミング言語に期待されるすべての基本が、金属からあまり離れることはありません。

全体として、Parrotは、言語を設計し、実装を可能な限り他の人に任せたい言語設計者(彼らによって作成され、彼らのために書かれています)に非常に友好的です。

他のヒント

この詳細については、 Parrot VM Introで読むことができます。 ページ。

ParrotがJVMまたはCLRより優れている主な利点は、最初に動的言語をサポートするように設計されており、動的型付け言語のサポートとパフォーマンスが向上する可能性があることです。 JVMとCLRはどちらも静的に型付けされた言語をサポートすることを目的としており、設計上の多くの決定がそれを示しています。

ParrotをほとんどのVM(JVMとは確かに異なる)と異なるものにするもう1つの点は、それがスタックマシンではなくレジスタマシンであることです。しかし、人々はそれが長所と短所と呼ばれるかどうか、長い間議論していると思います。

JVMとCLRの知識は十分ではありませんが、ヒント:

  • 動的言語(クロージャ、多相スカラー、継続、コルーチン)サポート(速度)
  • 動的メソッドのディスパッチ、
  • ファーストクラス関数、
  • ファーストクラスの継続、
  • パラメーター(オプション、名前付き、..)、
  • 登録ベース
  • アセンブリレベルで提供されるHLL相互運用性
  • プラットフォームの範囲

更新:JVMは最近のRakudo Perl 6バックエンドの1つであるため、これはおそらく無関係です。 Rakudo Perl 6をご覧ください。 JVM (Perl 6 Advent calendar 2013、3日目)。

  

Parrotは、もともとPerl 6用に設計された仮想マシンです。

現在、元々Perl 6用に設計されたVMが 2つあります。 MoarVM へのコミットは2012年に開始されました。

  

Parrot VMは、Java Virtual Machine(JVM)/ Hotspot VMやCommon Language Runtime(CLR)などの競合する仮想マシンにない技術的な機能を提供しますか?

このページの別の回答では、現在(2015年4月)のParrotリード開発者であるReini Urbanが簡単な説明を提供しています。 ParrotとJVMおよびCLR VMとの比較。

Reiniによると、オウムの主な利点MoarVMは「効果的にロックレススレッド」です。

JVMとCLRの主な利点と技術的な違いは、型(クラスはPMCと呼ばれます)とops(メソッド)が効率的なユーザーから動的に読み込まれることです。 C実装を提供し、言語を作成および拡張するパーサーフレームワークが組み込まれています。

この質問は時代遅れです。 Rakudo Perl 6は、Parrotをバックエンドとしてターゲットとしなくなりました。 MoarVMは推奨されるバックエンドで、JVMバックエンドは進行中の作業です(通常は動作しますが、実装されていないか、現在壊れている多くのPerl 6機能)。 Javascriptを3番目のバックエンドとして追加するための開発作業(ユーザーには準備できていません)が行われています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top