一般的に、コンパイルとは、高レベルの言語をCPUが実行できるマシンコードに変換することを意味します。 Cをコンパイルするときは、まさにこれを行います。コンパイルの結果はバイナリ実行可能ファイルであり、システムはこのプログラムを直接実行できます。
対照的に、解釈はこれを意味します。プログラムが実行されるたびに、ソースファイル内のコード行を読み取り、対応する操作を実行して、1行ずつ繰り返します。もちろん、これがいわゆるスクリプト言語の仕組みです。
Pythonでは、ソースコードは、バイトコードと呼ばれる低レベルの形式にコンパイルされます。バイトコードは、CPUの命令セットに似た一連の命令です。ただし、バイトコードはCPUによって直接実行されるのではなく、仮想マシンで実行されます。もちろん、ここでの仮想マシンは、オペレーティングシステム全体の環境を模倣するのではなく、バイトコードを実行するための環境を提供するだけです。
Pythonのもう1つの重要な機能は、インタラクティブなコマンドラインです。 Pythonステートメントの行を入力し、Enterキーを押すと、すぐに実行できます。実際、このプロセスでも、Pythonは最初にバイトコードに変換されてから実行されます。インタラクティブなコマンドライン機能は、多くのコンパイル済み言語では使用できません。また、コンパイラプログラムへの明示的な呼び出しがないため、多くの人がPythonソースファイルを実行するプログラムをPythonインタープリターと呼びます。
解釈およびコンパイルされた言語
コンピューターは高レベルの言語を認識できないため、高レベルの言語プログラムを実行するときは、高レベルの言語をコンピューターが理解できる機械言語に変換するプロセスに従事する「翻訳者」が必要です。このプロセスは2つのカテゴリに分けられます。1つはコンパイルで、もう1つは解釈です。
プログラムが実行される前に、コンパイルされた言語は、コンパイラを介してプログラムに対してコンパイルプロセスを実行し、プログラムを機械言語に変換します。実行時に変換する必要はなく、直接実行するだけです。最も典型的な例はC言語です。
解釈される言語にはこのコンパイルプロセスはありません。代わりに、プログラムの実行時に、インタープリターはプログラムを1行ずつ解釈し、直接実行します。最も一般的な例はRubyです。
上記の例を通じて、解釈された言語とコンパイルされた言語の長所と短所を要約できます。コンパイルされた言語は、プログラムの実行前にプログラムをすでに「翻訳」しているため、実行時に「翻訳」が省略されているためです。 「プロセスなので、効率は比較的高いです。しかし、一般化することはできません。一部の解釈言語は、インタープリターの最適化を通じてプログラムを翻訳するときにプログラム全体を最適化することもできるため、効率はコンパイルされた言語に近くなりますが、コンパイルされた言語を超えることはできません。
さらに、Javaなどの仮想マシンに基づく言語の台頭により、言語を純粋に解釈された言語とコンパイルされた言語に分割することはできません。
例としてJavaを使用すると、Javaは最初にコンパイラによってバイトコードファイルにコンパイルされ、次に実行時にインタプリタによってマシンファイルに解釈されます。つまり、Javaはコンパイルされてから解釈される言語であると言えます。
コンテンツの拡張:
よく聞かれる質問は、Pythonは解釈された言語ですか?コンパイルされますか?この質問に答えるのは思ったほど簡単ではありません。世界を知っている多くの人々のように、彼らは単純なモデルで何かを判断することに慣れています。実際、それは多くの詳細を含んでいます。
一般的に、コンパイルとは、高レベルの言語をCPUが実行できるマシンコードに変換することを意味します。 Cをコンパイルするときは、まさにこれを行います。コンパイルの結果はバイナリ実行可能ファイルであり、システムはこのプログラムを直接実行できます。
対照的に、解釈はこれを意味します。プログラムが実行されるたびに、ソースファイル内のコード行を読み取り、対応する操作を実行して、1行ずつ繰り返します。もちろん、これがいわゆるスクリプト言語の仕組みです。
しかし実際には、上記の定義にはあまりにも多くの制限があります。実際の言語は通常、より便利で強力な機能を実現するために、さまざまな実装方法を採用しています。コンパイルは、より一般的なものとして理解できます。つまり、ある言語から別の言語形式への変換です。一般的に、ソース言語は、Cをマシンコードに変換するなど、ターゲット言語よりも高度です。もちろん、JavaScript8からJavaScript5への変換も一種のコンパイルです。
これまでのところ、pythonが解釈言語であるかどうかに関するこの記事が紹介されています。関連するpythonが解釈言語である場合は、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後もZaLouをサポートしていただければ幸いです。 .Cn!
Recommended Posts