コンパイル型言語

コンパイル型言語（コンパイルがたげんご）とは、その実装の主体がコンパイラ（ソースコードからマシンコードを生成するトランスレータ）であり、インタプリタ（ソースコードを順次一つずつ実行し、ランタイム前の翻訳が行われない）ではないプログラミング言語である。

この用語はやや曖昧である。原則として、どの言語もコンパイラやインタプリタで実装できる。両方のソリューションの組み合わせも一般的である。コンパイラはソースコードを何らかの中間形式（しばしばp-codeまたはバイトコードと呼ばれる）に変換し、それを実行するインタプリタに渡す。

メリットとデメリット 
コンパイル時にネイティブコードにコンパイルされるプログラムは、実行時に翻訳されるプログラムよりも高速になる傾向がある。これは、翻訳プロセスのオーバーヘッドがあるからである。しかし、JIT（実行時コンパイラ）のような新しい技術、および翻訳プロセスの全般的な改善により、この差は小さくなり始めている。バイトコードを使用した混合ソリューションは、中程度の効率になる傾向がある。

低水準プログラミング言語は、一般的にコンパイルされる。特に、クロスプラットフォームのサポートより効率を重視する場合である。このような言語の場合、プログラムコードとマシンコードによって実行されるハードウェア操作の間には1対1の対応があり、プログラマが中央処理装置（CPU）とメモリの使用を細かく詳細に制御しやすくなる。

少し努力すれば、従来のインタプリタ型言語でもコンパイラを作成することが常に可能である。例えば、Common lispは、Javaバイトコード（Java仮想マシンによって解釈される）、Cコード（次にネイティブマシンコードにコンパイルされる）、または直接ネイティブコードにコンパイルできる。複数のコンパイルターゲットをサポートするプログラミング言語は、実行速度またはクロスプラットフォームの互換性のいずれかを選択するために、開発者により多くの制御を提供する。

コンパイル型言語の一覧 
一般的にコンパイルされると考えられている言語は次のとおりである。

ツール 
 ANTLR 
 CodeWorker 
 Lex 
 Flex 
 GNU bison 
 Yacc

脚注

関連項目 
 コンパイラ 
 
 インタプリタ（コンピューティング）

外部リンク 
 

プログラミング言語の分類