コンパイラ
コンパイラとは、特定のプログラミング言語で記述されたソースコードを読み込み、ターゲットとなるコンピュータ、あるいは、バーチャルマシンが直接実行できる命令語に変換するソフトウェアのことである。
ソフトウェア開発に用いられるプログラミング言語には、アセンブラ言語のような低水準のもの(低級言語)から、より人間に近い表現が可能であるFortran、COBOL、C言語、C++、Pascal、Java、C#といった高水準の言語(高級言語)まで多種である。高級言語でプログラムを作成した場合、そのソースコードは、計算機で直接実行することはできない。コンピュータに実行を指示するためには、CPUが解釈できる機械語で記述された実行プログラムを、あらかじめ記憶装置に格納しておいてから計算機の動作を開始させる必要がある。コンパイラは、あらかじめ高級言語のソースコードを読み込み、実行対象となる計算機のCPUが解釈可能な機械語へと変換するために用いられる。
コンパイラを用いてソースコードを機械語に変換する処理そのものは、コンパイルと呼ばれる。
コンパイラが、最終ターゲットであるCPU固有の機械語を出力する場合、そのコンパイラは特にネイティブコンパイラと呼ばれ、その処理はネイティブコンパイルと呼ばれる。対して、Java仮想マシンのような仮想的な論理計算機をターゲットにしてコンパイルを行うようなコンパイラは、中間言語コンパイラと呼ばれる。中間言語コンパイラにより出力された、中間言語のプログラムを実行するのは、ネイティブな計算機ではなく、Java仮想マシンのようなインタープリタということになる。インタープリタが実行時に、中間言語の一部を部分的にネイティブの機械語に変換してから実行する場合は、動的コンパイル、あるいはジャストインタイムコンパイルと呼ばれる。動的コンパイルに対して、通常のコンパイルは、実行に先立ってあらかじめコンパイルしておくという意味で、事前コンパイル(プリコンパイル)と呼ばれる。
プログラミング言語のうち、高級言語を用いて作成されたプログラムは、特定のターゲットCPUに依存しない。コンパイル時にターゲットCPU向けのコンパイラを用いることにより、特定CPU向けの実行コードを得ることができるため、最終的に任意の計算機で実行できることになる。なお、中間言語方式のコンパイラの場合、コンパイル作業自体は1回だけ行えば、同じ中間言語プログラムをさまざまな計算機上で実行することができる。この場合、コンパイラは1種類で済むものの、コンパイル結果の中間言語プログラムを解釈実行するインタープリタ、あるいは仮想計算機が、ターゲットとなる計算機の種類の分だけ用意する必要がある。
ソフトウェアの規模がある程度以上となる場合、ソフトウェアをモジュールに分割して、モジュールごとにコンパイルを行うこともある。この作業は、特に分割コンパイルと呼ばれる。分割コンパイルを行った場合、その出力としてオブジェクトコードと呼ばれるモジュール単位の出力が得られる。実行に際しては、出力されたオブジェクトコードを一つにまとめ上げ、実行形式のファイルを作成する必要がある。このような操作がリンクと呼ばれる。リンクにより、モジュールごとに記述されている変数やコードが相互に参照できるように相対アドレスの解決を行う。
なお、世界で最初に実用化されたコンパイラは、1957年に開発されたFortranコンパイラである。1960年には、複数のアーキテクチャに対応したCOBOLコンパイラが開発された。1962年には、LISP言語で記述されたLISPコンパイラで自分自身をコンパイルするセルフホスティングコンパイラが初めて開発されている。
コンパイラと同じ種類の言葉
Weblioに収録されているすべての辞書からコンパイラを検索する場合は、下記のリンクをクリックしてください。

- コンパイラのページへのリンク