39

(比較的)よく知られているPerlの公理、「PerlだけがPerlを解析できる」というものがあります。私は疑問に思っています、それはPerl 6にも当てはまりますか?

議論を拡大する...最近のPyPyのアップデートを踏まえて、この質問について考えました。Perlのユニークな解析可能性は、同様の努力からそれを排除しますか?Perlコード(PPI)の制限された静的ビューに多くの価値がありますか?Perl 6はJITコンパイラーを持つことができますか?*

*これらの概念が関連しているかどうかはわかりません。彼らは?

4

5 に答える 5

37

perl6はなく、多くのPerl6コンパイラがあります。Perl 6には文法がありますが、Perl 6で書かれているので、それを理解できる限り、知っておく必要のあるすべてのことを教えてくれます。

サンパウロPerlワークショップで昼食時に彼の向かいに座っているので、私はちょうどラリーにこの質問をしました。彼は、現在は「Perl6のみがPerl6を解析できる」と述べており、両方のPerlに大文字が付いています。これは、元のステートメントとは異なる意味を持ちます。

Perl 6の目標は1つの標準と多くの実装であるため、これを行うために特定のプログラムは必要ありません。「perl6」はありませんが、ラリーは例にいくつかの異なる実装を使用していましたが、今日の講演ではRakudoのエイリアスを使用していました。

于 2011-05-07T18:36:05.113 に答える
10

最後に見たところ、Perl6はPerl5の/文字を継承しています。これは、用語が期待される場合は「正規表現の始まり」を意味し、演算子が期待される場合は「除算」を意味します。それとプロトタイプ、そしてPerl 6は、静的トークン化に関して少なくともPerl5と同じ陣営にあります。Perl 6プログラムをトークン化する唯一の方法は、Perl6コンパイラーで実行中のPerl6インタープリターを使用することです。もう一度、ずっと下にカメ。

于 2011-08-31T01:26:45.433 に答える
9

「perlのみがPerlを解析できる」という公理。「perl」はインタプリタバイナリであり、「Perl」は言語であり、ファイルの解析中に解析ルールが変更される可能性があるという事実に大きく由来しています。Perl 5では、これはプロトタイプのサブルーチン宣言、さまざまなプラグマ、およびソースフィルターから取得されます。

私の意見では、これはPerl 6でのみ問題になるでしょう。Perl5では、パーサールールが変更される可能性のある場所の数は限られていますが、Perl6ではそれらは幅広く多様です。Perl 5が持つすべてのものに加えて、Perl 6では独自の演算子を定義できます。この定義はPerlコードで行われるため、それを理解するにはPerlインタープリターが必要です。

私の知る限り、これをサポートする実装はまだありませんが、Perl 6仕様には、テキストまたはASTを操作することによってPerl6コードを再構築できる実際の言語レベルのマクロも含まれています。これらは両方とも、魔法を実行するためにPerlインタープリターの存在を必要とします。

結論として、Perl6はPerl5よりも公理を強くするだろうと私は感じています(そして構文蛍光ペンの作者にとってはさらに悪夢になるでしょう:))もちろんこれは表現力を高めるためのすべてです言語の力なので、譲歩しても大丈夫です。

上記の当然の結果として、Perl 5とは異なり、Perl 6には正式な仕様があるため、公理を「Perl6仕様を実装するインタープリターのみがPerl6を解析できる」に変更する必要があるかもしれませんが、それは少し厄介です。

アップデートごと:

定義上、そのようなコンパイラーにもPerl 6インタープリターが含まれている必要があるため、上記がPerl6用のJITコンパイラーのアイデアを排除するとは思いません。静的コンパイルに関する限り、それは可能かもしれませんが、evalを含む構造は機能しないため、言語の実行時の能力を大幅に制限します。

PPIはPerl5ランドで役立ちます。これは、perlインタープリターがASTへの豊富で使いやすいインターフェースを多く提供していないためです。Perl 6では、イントロスペクションのレベルがはるかに高いため、インタープリター自体が必要なすべてのツールを提供する場合があります。

于 2011-05-06T20:22:12.990 に答える
6

Perl 6は仕様であり、それに続くプログラムはすべて、他のほとんどの言語に当てはまるようにPerl6です。作業中のPerl6の実装は多数あります。

于 2011-05-06T23:16:19.187 に答える
4
Perl6にJITコンパイラを含めることはできますか?

perl「 Perl5のみを解析できる」という理由でPerl5をJITできないことを意味しますが、そうではありません。Perl5プログラムは、実行するたびに異なる方法でコンパイルできますが、それによってJITtedが妨げられることはありません。

したがって、最も緩く定義された言語の1つであるPerl5をJITできるのであれば、Perl6もJITできないのはなぜですか。

于 2011-05-06T23:37:48.923 に答える