
実行時コンパイルで高速化:JITコンパイラ
幾つかのプログラム言語、例えば「ジャバ」などは、書いたプログラムを機械の言葉に直接置き換えるのではなく、間に合わせの言葉に一旦変換するという方法を取っています。この間に合わせの言葉は「中間言語」と呼ばれ、どの計算機でも同じように動くように作られています。
プログラムを実際に動かす時には、この中間言語を一つ一つ機械の言葉に置き換えながら、順番に実行していきます。人間が外国語の文章を読む時に、一つ一つの単語を辞書で調べながら意味を理解していくのと似ています。
この方法の利点は、異なる機種の計算機でも同じプログラムを動かすことができるという点です。プログラムを配布する際に、機種ごとに異なるプログラムを用意する必要がないため、開発の手間を省くことができます。まるで、世界中どこでも通じる共通語で書かれた本があれば、誰でも読むことができるのと同じです。
しかし、中間言語を逐一機械の言葉に変換しながら実行するため、どうしても処理速度が遅くなってしまうという欠点もあります。これは、逐次通訳を通して会話するよりも、直接その国の言葉で話す方が速いことと同じです。
中間言語方式は、移植性の高さと実行速度の遅さという、両極端の特徴を持っています。どちらの側面を重視するかは、プログラムの用途によって異なります。例えば、携帯電話のアプリのように、様々な機種で動くことが求められる場合は、移植性を重視するため、中間言語方式が選ばれることが多いです。一方、処理速度が求められるゲームなどでは、中間言語方式はあまり採用されません。