GeeksforGeeks

Pythonについて語るとき、言語だけでなく実装についても言及することがよくありますが、ここではPythonの実装について説明します。 Python は実際には、さまざまな方法で実装できる言語の仕様です。

背景
先に進む前に、バイトコードとマシン コード (ネイティブ コード) の違いを理解しておきたいと思います。 各命令は、CPUのメモリ内のデータのロードや論理演算など、非常にユニークなタスクを実行する。 C言語などの高級言語は、コンパイラ、ローダ、リンカを使用して、ソースコードを実行可能なマシンコードに変換する。 2584>Bytecode
Bytecode もまた、仮想マシンによって実行されるバイナリ表現である(CPUによって直接実行されるのではない)。 仮想マシンは、バイナリ命令を特定のマシン命令に変換する。

マシンコードはバイトコードと比較してはるかに高速ですが、バイトコードはマシンコードと比較して移植性と安全性があります。

Pythonの実装
Cpython
プログラミング言語Pythonのデフォルト実装はCpythonです。 その名前が示すようにCpythonはC言語で書かれている。 Cpythonはpythonのソースコードを中間バイトコードにコンパイルし、Cpythonの仮想マシンによって実行されます。 CPythonはCとPythonの混合で書かれた大規模な標準ライブラリとともに配布されます。 CPythonは、PythonパッケージとC拡張モジュールとの最高レベルの互換性を提供します。 CPythonが参照実装であるため、Python言語のすべてのバージョンはCで実装されています。
CPythonランタイムコアをベースに、いくつかの点で動作や機能を拡張した実装として、Stackless Python、wpython、MicroPythonなどがあります。
Stackless Python – タスクレットとチャンネルを使った並行処理に重点を置いた CPython (Nintendo DS では dspython が使用)

Other Implementations
Python 言語には他にもいくつかの実装がありますが、言語の特定のバージョンと互換性があるとわかっている実装は IronPython, Jython, PyPy だけです。

Jython
Jython は Java プラットフォーム上で実行できる Python プログラミング言語の実装です。 JythonプログラムはPythonモジュールの代わりにJavaクラスを使用します。JythonはJavaバイトコードにコンパイルし、Java仮想マシンによって実行されることができます。 Jythonは、PythonのプログラムからJavaクラスライブラリの機能を利用することができます。 Jython は Cpython と比較して遅く、CPython ライブラリとの互換性に欠けます。

IronPython
Microsoft の .NET フレームワークをターゲットに C# で書かれた Python 実装です。 Jython と同様に、.Net Virtual Machine (すなわち Common Language Runtime) を使用します。 IronPythonは.NETフレームワークとPythonライブラリを使うことができ、他の.NET言語はPythonコードを非常に効率的に使うことができます。 IronPythonはJITを持ち、グローバルインタープリタロックがないため、スレッドやマルチコアを使うPythonプログラムでより良いパフォーマンスを発揮します。

PyPy
“If you want your code to run faster, you probably should just use PyPy.” (コードを速く走らせたいなら、おそらくPyPyを使うべきです) – Guido van Rossum (Pythonの作者)
Pythonは動的プログラミング言語である。 Pythonは動的プログラミング言語ですが、CPythonのデフォルト実装ではPythonのソースコードをバイトコードでコンパイルするため、マシンコード(ネイティブコード)と比べて遅いと言われています。 ここでPyPyの登場です。
PyPyはPythonで書かれたPythonプログラミング言語の実装です。 インタープリタは RPython (Python のサブセット) で書かれています。

PyPy は (ジャストインタイムコンパイル) を使用しています。 簡単に言うと、JIT はインタプリタシステムをより効率的かつ高速にするためにコンパイル方法を使用します。
PyPy にはデフォルトでスタックレスモードがサポートされており、大規模な並行処理のためのマイクロスレッドを提供します。 Python は Cpython よりも約 7.5 倍高速だと言われています。

Python の他の実装には CLPython、Pyston、Psyco、Cython、IPython などがあります。 GeeksforGeeks が好きで貢献したい場合は、contribute.geeksforgeeks.org を使用して記事を書くか、[email protected] に記事を郵送することもできます。 あなたの記事が GeeksforGeeks のメインページに表示され、他の Geeks を助けることができます。

コメントする