インタープリタ方式とコンパイル方式

プログラミング言語はコンピュータが直接理解できる言葉ではありません。そこで,何らかの方法で機械の言葉に変換しなければ実行できませんが,変換するタイミングによって,プログラミング言語を,インタープリタ方式とコンパイル方式の2つの型に分類できます。

インタープリタ方式

プログラミング言語の命令を一つずつ,機械語に解釈しながら実行する方式で,解釈実行方式ともよばれます。通訳を介在しながら外国語を話す様を思い浮かべるとよいでしょう。BASIC や Perl などが代表的なインタープリタ方式の言語です。教育目的やそれほど実行速度を気にしないようなアプリケーションを作成するときに利用されます。

作成したソースプログラムをただちに実行できるという点がこの方式のメリットです。一方,解釈しながら実行されるために,コンパイル型に比べると実行速度が遅いというのが欠点です。特にプログラム中の何度も実行されるような部分では,何度も解釈されるので,その無駄は無視できません。

コンパイル方式

ソースプログラムをいったん機械語に翻訳し,その機械語になったプログラムを実行する方式です。翻訳することをコンパイル(compile),翻訳するプログラムをコンパイラ(compiler)と言います。外国語の本をいったん日本語に翻訳し,翻訳された本を読むようなイメージをするとよいでしょう。C/C++,FORTRAN,COBOL などが代表的なコンパイル型言語です。

この方式のメリットは実行速度が速い点にあります。デメリットとしては,いったんコンパイルするという手間がかかることや,コンパイルした機械語のプログラムは他の環境(OSやCPUが異なると)実行できないことなどが挙げられます。

Java の実行方式

Java は基本的にはコンパイル方式の言語ですが,Java仮想マシンの機械語に翻訳され,仮想マシン上で実行されます。コンパイル方式とインタープリタ方式の中間的な方式といってよいでしょう。この方式は,一見まわりくどいように感じますが,Java仮想マシンの機械語に翻訳されたプログラムは,仮想マシンさえあれば,どこでも同じように動作するというメリットがあります。実行速度もC/C++などに比べると多少劣りますが,JITコンパイラなどの技術によって,かなり高速に実行できるようになっています。