コンパイラとは

コンパイラ(compiler)とは、人間に理解できるソースコードコンピュータが理解できるバイナリコードへ変換するプログラムのことをいう。

コンパイラでいう、人間に理解できるソースコードとは、英数字や記号などで記述された、いわゆるプログラムのこと。これに対し、コンピュータが理解できるバイナリコードとは、「0」と「1」からなる二進数のこと。コンピュータとは厳密にいえば、CPUもしくはプロセッサと呼ばれるハードウェアのことで、これらが二進数で計算を行う。また、バイナリコードは、機械語マシン語、オブジェクトコードともいう。

コンパイラで行うコンパイルとは、人間語を機械語に変換する作業やプロセスのことを指す。コンパイラはいわば通訳のようなもので、両者の間に入って翻訳を行う。編集という意味も持っている。また、コンパイルはビルドの一工程であり、複数のソースコードを間違えることなく統合する作業のことをビルドという。ビルドによって出来上がったアプリケーションそのものを指すこともある。

コンパイラはインタプリタに対比される用語でもある。インタプリタは、一つ一つの命令を順番に翻訳しながら実行していくプログラムのことをいう。そのため、すぐに動作確認ができる。実際にはコンパイル実行時に繰り返している。ループ(ルーチン)処理では更にこれを繰り返す。作業の手間が増える分、コンパイラ型に比べると処理は遅くなる。

一方、コンパイラ型は、あらかじめソースコードを機械語にコンパイルしてから実行に移る。そのため、処理は速くなる。しかし、人間語を機械語に変換してから実行するため、プログラムがきちんと動作するかどうかを確認するためには、時間がかかる。実際にプログラムを走らせないと分からないからだ。

コンパイラ型言語と呼ばれるものでは、CやC++などがある。これに対比されるインタプリタ型言語では、perl、php、javascript、VBScript、BASIC、Python、Rubyなどがある。Java言語は、コンパイラとインタプリタ両方の側面を持つ。事前にバイトコードへ変換し、更に仮想マシンがこれをバイナリコードに翻訳してからCPUへ命令を与えるという手順を踏む。もともとは、インタプリタ方式であったが、プラットフォーム間での互換性を保つために、このような形になった。

尚、インタプリタは翻訳システムがあればどのプラットフォームでも動作する。これに対し、コンパイラ型は、ソースコードをプラットフォームに合わせる必要があり、プラットフォームが変われば再コンパイルによる移植が必要になる。

コンパイラの意味を簡潔に説明すると

人間語を機械語にコンパイルするプログラムのこと。