インタプリタ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードを逐次解釈しながら実行するソフトウェアである。プログラムの実行に主としてインタプリタが用いられるプログラミング言語をインタプリタ言語と呼ぶ。
インタプリタの中には、実行直前に一度ソースコードを中間的なコード(中間言語)に変換し、それを逐次解釈するものもある。
コンパイラ方式と比較して、
- 会話的な応答性に優れる。(プログラムを作成/変更してから実行するまでの手間がない)。
- 単純な実装では実行に時間がかかる。しかし動的に最適化を施すことができるので一概にコンパイラより遅いとは言えない。
- 実行には言語に対応するインタプリタ(ランタイム)環境が必要
という特徴をもつ。
主としてソースコードを逐次解釈しつつ実行することを意図して作られたコンピュータ言語は、その仕様がインタプリタ向きに作られていることが多い。たとえば、ソースコードのある部分を実行するのに、他の部分と比較しながら解釈するといったことをしないで、なるべく最初から順番に解釈するだけで実行できるような仕様になっている、などである。
主にインタプリタで実行されるプログラミング言語をスクリプト言語と呼ぶこともある。スクリプト言語の定義は非常にあいまいで、インタプリタで実行されることと必ずしも対応しない。スクリプト(言語)と呼んだ場合、そのプログラムは多くの場合インタプリタで実行される。
主にインタプリタで実行される言語でも、コンパイラによって処理してから実行することが可能な場合もある。コンパイラによって処理することが一般的な言語についても、インタプリタが実装されている場合もある。
[編集] バイトコードインタプリタ
もともとインタプリタとして実行可能なものを、インタプリタ内でバイトコードにコンパイルして実行するものがある。次のようなものはバイトコードインタプリタなどと呼ばれる。
- Perlの処理系はユーザーからはインタプリタで利用しているように見せるが、内部ではコンパイルを行ってメモリ上に実行コードを作ってから実行している。内部的な動作はコンパイラに分類されるが、ツールとしての役割はインタプリタであるとも解釈できる。
- Javaプログラムは実行時にバイトコードから機械語へと変換されるので、このような処理系をジャストインタイムコンパイラと呼ぶ。
[編集] デバッグ、教育用インタプリタ
通常C言語はコンパイラで処理されるが、デバッグ目的および教育目的で、インタプリタ型のC言語もあった。MS-DOS時代に、いくつかの製品が提供されていた。C-Terpなどがその様な製品の例である。C/C++のインタプリタはほかにCINT(w:CINT)やCh(w:Ch_interpreter)がある。