インタプリタとコンパイラ

機械語

インタプリタとは、プログラミング言語で書かれたプログラムを、実行の都度機械が理解できるように変換する実行方式の一つです。その都度その都度、プログラミング言語を変換、実行するので、バグが発生した段階ですぐ対応することができます。

対してコンパイラは、プログラミング言語で書かれたソースコードを、一度にすべて機械語に変換するという方式。コンパイラを使った機械語の変換は、「コンパイル」なんて呼ばれることがあります。

プログラミング言語はあくまで、人間がわかりやすいように解釈した「人間の言葉」です。この言葉を、コンピュータが理解しやすいように変換しなければなりません。インタプリタとコンパイラは、それぞれ機械語への変換を行うための「過程」を意味します。

※本ページにはPRが含まれます。

インタプリタのメリット

ソースコードをその都度変換して実行する、インタプリタ方式言語のメリットから見ていきましょう。

初心者が手をツケやすい言語

最近のプログラミング言語は、このインタプリタ方式の言語が主流です。PerlやPHPなど、プログラミング言語に馴染みの無い方でも、比較的習得が容易い言語が揃っています。

バグを見つけやすい

実行と同時に変換するのが特徴のインタプリタ言語。つまり、バグが起きた時点で、原因究明がとても容易です。ソースコードを一行単位で、修正、デバッグが可能になるからです。

長文のソースコードなら、この「細かい修正が可能」なのは、大きなメリットですよね。

インタプリタのデメリット

インタプリタのデメリットは、何といっても「プログラムの実行が遅い」ということです。その最大の原因は、一つ目の命令ごとに実行するという、その回りくどさです。

また、ソースコードを配布する際に、導入するマシンに適当なインタプリタが求められるということ。さらに、配布されたソースコードを、人間が簡単に読むことができるという問題でしょうか。

コンパイラのメリット

対して、C言語など、ソースコードを「一括変換」するコンパイラ言語のメリットも見ていきましょう。

コンパイラのメリットは、やはりインタプリタ方式の言語と逆に「実行が早い」ということがあげられます。プログラム、ソフトウェアの処理速度は早い方が優秀だと言われています。変換自体には時間がかかるものの、一度変換してしまえば、プログラムの実行自体には時間がかかりません。

コンパイラのデメリット

コンパイラのメリットは、デバッグに時間がかかるといおうもの。すべて一括で、ソースコードをバグ取りしなくてはならないので、どこでバグが発生したのか、その原因究明に時間がかかります。

インタプリタ言語の例

インタプリタ型の言語で有名なのは、PHP、またはPerlでしょう。

PHPは、主にWeb分野のプログラミングに最適な形で設計されており、最近ますます需要が高まっている言語です。

Perlは、過去のプログラミング言語のアップデート版。C言語やシェルスクリプトなど、今までのプログラミング言語のいいとこ取りをした言語です。

PerlもWebの分野で活躍しており、Webアプリケーション開発で広く用いられています。

コンパイラ言語の例

かの有名なプログラミング言語、C言語、またC++は代表的なコンパイラ言語です。

他にもCOBOL、FORTRANもコンパイラ言語。歴史の長い言語、そして構造が難しい言語であるというのが、コンパイラ言語の特徴ですね。

Javaはインタプリタ言語でありコンパイラ言語でもある

Java言語は、「インタプリタ」と「コンパイラ」の特徴を併せ持つプログラミング言語です。

Javaで書かれたソースコードは、まず「バイトコード」に変換されます。そしてそのバイトコードは、仮想マシン上で変換され、コンピュータへの指令を下します。

これにより、Java言語は、どのプラットフォーム上でも実行可能になりました。

インタプリタ言語の悪いところも、コンパイラ方式の、「他プラットフォームで再びコンパイルしなくてはならない」という問題も解決したプログラミング言語です。こういった要因もあり、Javaは世界中の開発者に愛されたプログラミング言語です。

まとめ

インタプリタ方式とコンパイラ方式、それぞれの違いがわかっていただけたでしょうか。

最近はマシン側の性能も上がったことなどで、「インタプリタ方式」が比較的一般化しています。しかし、プログラムに携わる身としては、インタプリタもコンパイラも、どちらへの理解も深いに越したことはありません。