Pythonにこれらがないのはなぜですか?
パフォーマンスを気にするPythonの実装がないと思う理由がわかりません。PyPy、IronPython、およびJythonはすべて、パフォーマンスを重視する、非常に強力で生産可能なPython実装です。Pystonは、パフォーマンスのために特別に作成された開発中の実装です。Unladen SwallowとPsycoもPythonのパフォーマンスを改善するプロジェクトでした。
ただし、CPythonユーザーが他のすべての実装の合計ユーザーベースを大きく上回っているという事実、Unladen Swallowがコミュニティによって拒否された、これらのプロジェクトのほとんどが開発者を引き付けるために死んでいるか苦労しているという事実は、Pythonがどのようにコミュニティはパフォーマンスを重視しています。
この答えは、Pythonコミュニティの典型的な考え方の良い例です。パフォーマンスの問題を修正する代わりに、彼らは単にPythonではなくコードを書くことを好むでしょう。
私はPyPyとIronPythonを見てきましたが、どちらも速度の向上を主張しています。PyPyインタプリタ言語であるPythonで書かれたPython実装が、Cのリファレンス実装よりも高速になる方法がわかりません。
まず、コンパイラーがどの言語で書かれているかは関係ありません。結局、コンパイラーは一度だけ実行されるので、たとえ遅いとしても、それは関係ありません。コンパイラーのパフォーマンスは無関係です。コンパイラの出力のパフォーマンスです。
第二に、コンパイラの出力がどれだけ速いかが重要であり、コンパイラはPython、つまりコンパイルする言語で書かれているため、実際にコンパイルすることで高速化できます。
第三に、「解釈された言語」のようなものはありません。言語は、数学的な規則と制限のセットです。仕様です。一枚の紙。言語はコンパイルも解釈もされません。言語はただです。コンパイルと解釈は、言語の実装の特徴であり、より正確には、言語ではなくコンパイラーまたはインタープリターの特徴です。すべての言語はコンパイラーによって実装できます。すべての言語はインタプリタによって実装できます。インタープリターからコンパイラーを、コンパイラーからインタープリターを機械的に生成できます。
しかし、PyPyは実際には Pythonで書かれていないため、これらすべては実際には重要ではありません。RPythonで書かれています。RPythonは、RPythonプログラミング言語とRPythonフレームワークの2つの部分で構成されています。
RPythonプログラミング言語はPythonではありません。別のプログラミング言語です。RPythonは静的に型付けされたプログラミング言語であり、Javaとほぼ同じレベルにあり、Cとほぼ同じパフォーマンスを備えています。RPythonはPythonの構文および意味のサブセットです。つまり、すべてのRPythonプログラムは有効なPythonプログラムであり、 Python実装によって実行されます(通常は数桁遅くなりますが、Pythonのすべてのツールにアクセスでき、すぐに解釈が開始されるので、これはデバッグに役立ちますが、言語実装のコンパイルには通常約5-10分かかります)、しかしその逆は真実ではありません。
RPythonフレームワークは、RPythonプログラミング言語で高性能の動的言語実装を記述するためのフレームワークです。ガベージコレクタ、オブジェクトスペース、メタオブジェクトプロトコル、定義済みオブジェクト、タイプ、操作などが含まれます。しかし、最も重要な点は、インタープリターからJITコンパイラーを自動的に生成できることです。RPythonフレームワークに言語を実装する場合、インタープリターを記述するだけで、RPythonフレームワークがJITを処理します。
PyPyだけでなく、RPythonプラットフォームには多くの言語実装があります。
IronPython、同じ考えですが、.NET Frameworkがどのように速度を上げるかわかりません。
Microsoftのさまざまな.NETバリアントやMonoなど、ISO CLIのほとんどの実装には、洗練されたガベージコレクター、オプティマイザー、およびコンパイラーが含まれています。JythonおよびJavaの実装にも同じことが当てはまります。
IronPythonはコンパイラーであり、PythonソースコードをDLRツリー(DLRは動的言語ランタイム)にコンパイルします。DLRツリーはCILバイトコードにさらにコンパイルされ、通常は再びネイティブマシンコードにさらにコンパイルされます。