このコードを他のインタープリターで実行したときにどのような挙動を示すか、興味深い実験になるかもしれません。
最も人気のあるプログラミング言語の1つであるPythonは、そのコードで定義されたコマンドを実行するインタプリタを必要とします。マシンコードに直接コンパイルできる他の言語とは異なり、Pythonのコードはそれを読み、関連する処理を実行するCPUに変換するインタプリタを必要とします。この記事ではいくつかのインタープリタについて説明します。
インタープリタの紹介
Python インタプリタといえば、/usr/bin/python というバイナリを思い浮かべるでしょう。.py ファイルを実行することができます。しかし、解釈はプロセスの一部に過ぎません。Pythonコードが実際にCPUによって実行されるまでに4つのステップがあります:
- 字句解析 - 人間が書いたソースコードを一連の論理エンティティに変換することは、.
- 構文解析 - パーサーは、生成された語彙トークンの構文規則と意味規則をチェックします。
- コンパイル - コンパイラはASTからPythonバイトコードを生成します。バイトコードは非常に基本的な、プラットフォームに依存しない命令で構成されています。
- インタプリタ - インタプリタはバイトコードを処理し、特定のアクションを実行します。
お分かりのように、実質的な操作を行う前に、これらのステップを歩む必要があります。このことは、さまざまな通訳を掘り下げることの重要性についても説明しています。
CPython
Pyston
Pyston は CPython インタプリタからスピンオフしたもので、パフォーマンスの最適化が実装されています。このプロジェクトは、大規模で実世界のアプリケーションを扱う際に、標準的な CPython インタプリタに代わるものとして位置づけられており、最大で 30% 高速化できる可能性を秘めています。互換性のあるバイナリパッケージがないため、Pystonはダウンロード時に再コンパイルが必要です。
PyPy
PyPy 静的型付けサブセットであるRPythonで書かれた インスタント 、Python用の インスタント コンパイラです。CPythonインタプリタとは異なり、PyPyはCPUが直接実行できるマシンコードを生成するためにソースコードをコンパイルします。PyPyはPython開発者にとって、新しい機能をより簡単にテストできる実験室です。
PyPyはCPythonよりも高速に実行されます。JITコンパイラの性質上、長時間実行するアプリケーションはキャッシュの恩恵を受けやすく、PyPyはCPythonの有効な代替と考えることができます。PyPyの拡張機能はPythonで書かれているため、JITコンパイラで最適化することができます。PyPyは、アプリケーションが互換性のないモジュールに依存しない限り、CPythonの理想的な置き換えです。プロジェクトのウェブサイトに、PyPyとCPythonの違いについて詳しく説明したページがあります:PyPy vs CPython Differences
RustPython
その名の通り、RustPython Rustで書かれたPythonインタプリタです。Rustは現在ではまだ比較的若いプログラミング言語ですが、その優れた機能から開発者の間で徐々に人気が高まっており、CやC++の後継となる可能性さえあると見られています。デフォルトでは、RustPythonはCPythonのインタプリタのように動作しますが、オプションでJITコンパイラを有効にすることができます。また、Rustツールチェーンは WebAssembly 直接コンパイルされるため、インタプリタをブラウザで完全に実行できることも注目に値します。オンラインデモは ここで ご覧いただけます。
スタックレスパイソン
Stackless Python 、プログラミング言語Pythonの拡張バージョンです。このプロジェクトは基本的にCPythonインタプリタの派生版で、言語にマイクロスレッド、チャネル、スケジューラを追加します。マイクロスレッディングは、コードを並列実行可能な""単位にまとめるのに役立ちます。これは greenlet モジュールを使ったグリーンスレッドモデルに似ています。チャネルは、"小さなタスク "間の双方向通信として使うことができます。 スタックレスPythonの有名なユーザは、多人数同時参加型オンラインロールプレイングゲームの Eve Onlineです。
マイクロパイソン
ターゲットプラットフォームがマイクロコントローラであれば、 最初の選択肢です。MicroPythonは最小限の実装で、16kBのメモリと256kBのストレージしか必要としません。組み込み環境を主な対象としているため、MicroPythonの標準ライブラリにはCPythonの豊富なSTLの一部しか含まれていません。MicroPythonはLinux、Windows、そして幅広いマイクロコントローラをサポートしています。
パフォーマンス
要約
Pythonは迅速なプロトタイプの構築やタスクの自動化に優れた言語ですが、同時に学びやすく初心者にも優しい言語です。普段 CPython を保守しているのであれば、他のインタープリターでコードがどのように見えるか試してみるのも面白いかもしれません。Fedoraユーザーであれば、パッケージマネージャが必要なバイナリをすでに提供しているので、他のいくつかのインタプリタを簡単に試すことができます。より詳しい情報は にあります。
///--22





