インタプリタ

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードを逐次解釈しながら実行するソフトウェアである。プログラムの実行に主としてインタプリタが用いられるプログラミング言語をインタプリタ言語と呼ぶ。同じく解釈を行なうコンパイラと対比される。

コンパイラ方式と比較して、

  • 会話的な応答性に優れる。(プログラムを作成/変更してから実行するまでの手間がない)。
  • 単純な実装では実行に時間がかかる。しかし動的に最適化を施すことができるので一概にコンパイラより遅いとは言えない。
  • 実行には言語に対応するインタプリタ(ランタイム)環境が必要

という特徴をもつ。

インタプリタが内部的に中間コードへのコンパイル動作を行なうかどうかは問題ではない。一旦独立した実行用コード(多くはファイル)を生成するのがコンパイラ、そのようなものを分離しないのがインタプリタである。

主としてソースコードを逐次解釈しつつ実行することを意図して作られたコンピュータ言語は、その仕様がインタプリタ向きに作られていることが多い。たとえば、ソースコードのある部分を実行するのに、他の部分と比較しながら解釈するといったことをしないで、なるべく最初から順番に解釈するだけで実行できるような仕様になっている、などである。

主にインタプリタで実行されるプログラミング言語をスクリプト言語と呼ぶこともある。スクリプト言語の定義は非常にあいまいで、インタプリタで実行されることと必ずしも対応しない。スクリプト(言語)と呼んだ場合、そのプログラムは多くの場合インタプリタで実行される。

主にインタプリタで実行される言語でも、コンパイラによって処理してから実行することが可能な場合もある。コンパイラによって処理することが一般的な言語についても、インタプリタが実装されている場合もある。

目次

バイトコードインタプリタ

もともとインタプリタとして実行可能なものを、インタプリタ内でバイトコードにコンパイルして実行するものがある。次のようなものはバイトコードインタプリタなどと呼ばれる。

  • バーチャルマシンはバイトコードを実行するインタプリタとしてとらえることもできるので、JavaやPythonの処理系はインタプリタともコンパイラとも呼べる。
  • Perlの処理系はユーザーからはインタプリタで利用しているように見せるが、内部ではコンパイルを行ってメモリ上に実行コードを作ってから実行している。内部的な動作はコンパイラに分類されるが、ツールとしての役割はインタプリタであるとも解釈できる。

デバッグ、教育用インタプリタ

通常C言語はコンパイラで処理されるが、デバッグ目的および教育目的のインタプリタ型のC言語もある。MS-DOS時代に、いくつかの製品が提供されていた。C-Terpなどがその様な製品の例である。C/C++のインタプリタはほかにCINTChがある。

インタプリタで実行されることが一般的なプログラミング言語

関連項目

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net