PyPy プロジェクトからRpython (Restricted Python)を汎用プログラミング言語として開発することに興味はありますか? おそらく、PyPy プロジェクトからのフォークである可能性があります。そのようなプロジェクトは存在しますか?プログラムはコンパイルされているため、Rpython で記述されたモジュールを提供するだけで、CPython や PyPy などの他の Python 実装と競合する可能性があります。
5 に答える
すべての人の代弁はできませんが、個人的には RPython を汎用言語として使用することに非常に興味があります。他の人の質問に答えるには:
なんで?Cython は使い方を理解するのが面倒だからです。多くのトリッキーな型宣言を正しく入れないと、スピードアップは得られません。RPython を使用すると、高速に実行されるか、まったく実行されません。
PyPy を使用するとかなり高速化されますが、現時点では RPython ほどではありません。
RPython は、超高速でやや Python 的なコードを取得するための良い方法かもしれません。開始するのに役立つ例を次に示します。残念ながら、これを行う大規模なプロジェクトは知りません。
はい、PyPy の翻訳ツール チェーンを使用して、RPython を使用してスタンドアロンの実行可能ファイルとライブラリを作成するプロジェクトが既にあります。RPythonicと呼ばれます。
汎用の RPython は、CPython や PyPy の競合相手にはなりません。Cython などの競合相手にはなりません。
なんで?RPythonはPythonではないからです!! RPython は、Python といくつかの構文を共有する単なる言語です。Python インタープリターは RPython コードを実行できますが、Python コードを取得して RPython としてコンパイルすることはできません。
RPython を静的に型付けしてコンパイルできるようにする (実際、静的な型推論を行う) ために追加された Python の制限は、言語を完全に変更するほど厳しいものです。RPython プログラムを作成する場合は、事前にそうすることに決め、RPython で作成する必要があります。Python でプログラムを作成し、それを RPython としてコンパイルすることはできません。また、現実的な Python プログラムを少し調整して RPython にすることもできません。通常の Python コードは、通常の RPython コードとは異なります。RPython の記述は、Java や C# の記述に似ています。
そのため、一般的なプログラムを Python で作成したいが、より高速に実行したい場合、RPython で提供できるものはほとんどありません。それが、PyPy の Python インタープリターが埋めようとしているニッチです。
プログラムを Python よりも高速に実行する必要があるために低レベルのコンパイル済み言語で一般的なプログラムを作成する場合は、Java や C# など、そのための非常に成熟した言語とライブラリが存在します。
RPython でコーディングする理由は、RPython によって特に改善される何かを行うためです。手で書かなくても、ガベージ コレクターや JIT コンパイラを追加できるインタープリターを書くようなものです。ここでRPython が輝きます。そうです、より洗練された使いやすい RPython インタープリター作成環境に非常に興味があります。しかし、RPython の専門分野の恩恵を特に受けないプログラムを作成するための汎用プログラミング言語として、すでにその役割をより適切に果たしている既存の言語と競合できるようになるには、途方もない量の作業が必要になります。たとえば、現在では標準ライブラリさえほとんどありません (Python の広範な標準ライブラリのほとんどが RPython で使用できないため)。
なぜRPythonで直接書きたいのですか?
PythonコードとPyPyの実行は非常に簡単なようです。
なぜCコードを書きたいのですか?
Pythonを記述し、PyPyをCで実装する方がはるかに簡単なようです
なぜアセンブラコードを書きたいのですか?
Pythonを記述し、PyPyをCで実装し、Cをアセンブラーで実装する方がはるかに簡単なようです。
本当にカメだと思います。
最も便利な言語の使用をやめて、あまり便利でない言語に切り替えたいのはなぜですか?
素敵な言葉をあきらめることの価値は何ですか?
見た目からして、制限はかなり厳しく、全体的にプログラムすることはずっと少ないと思います。これは PyPy を実装するために必要ですが、一般に、Python とやり取りできる高速にコンパイルされたコードが必要な場合は、Cython (CPython 拡張機能を対象としており、ほとんどすべての Python をシームレスにサポートする) を使用するか、より一般的ないずれかでコードを記述します。これができる言語。そして、高速でコンパイルされたコードが必要なだけなら...まあ、RPythonはCなどよりも快適かもしれませんが、それでも、ここでは大きな利点は見られません(少なくとも、使用可能で安定したコードを作成する努力を正当化するものはありません)言語)。