ちゅうかんこーど/中間コード

中間コード(intermediate code)とは、ある言語を他の言語に変換する時に生成されるコードのことをいう。

中間コードは、コンパイルするプロセスで一時的に作られるコードのことである。コンパイルとは人間に理解できるソースコードからプロセッサが理解できるバイナリへ変換すること。バイナリとは二進数のことで、最終的には機械語へ置換えられる。また、機械語は、マシン語バイナリコードネイティブコード、オブジェクトコードともいわれる。

そして、コンパイル時においては、その内容の文法が正しいかどうかといった構文解析が行われる。中間コードは人間の作製したソースコードからバイナリへの変換時に、これらの解析を行ったコードのこと。そのため、人間の作ったソースコードより、機械に理解しやすい機械語ができあがる。

通常、C言語などのコンパイルには事前コンパイラ(AOT)が用いられる。これに対し、Javaなどの中間コードではJITコンパイラが用いられる。また、AOTではアプリケーションを実行する前に各プラットフォームへ依存する変換を行う。一方、JITでは、アプリケーションを実行するたびに、プラットフォームへ依存しない機械語へと置換を行う。更にこういったコンパイラ型はインタプリタ型に対比される用語であり、前者は実行前、後者は実行時にマシン語への翻訳が実施される。

中間コードを用いる利点は、まずコンパイラ型に近い速さになり、インタプリタより速くなるという点があげられる。そして、プラットフォームに依存しない中間コードに置き替えられるため、異なるプロセッサ間やOS間でも使いまわしができるという点である。

ちなみにJavaでは、この中間コードのことをバイトコードという。JITは仮想マシンにあたる。

中間コードの意味を簡潔に説明すると

人間語とマシン語の中間言語のこと。