コンパイル型言語
コンパイル時にネイティブコードにコンパイルされるプログラムは、実行時に翻訳されるプログラムよりも高速になる傾向がある。これは、翻訳プロセスのオーバーヘッドがあるからである。しかし、JIT(実行時コンパイラ)のような新しい技術、および翻訳プロセスの全般的な改善により、この差は小さくなり始めている。バイトコードを使用した混合ソリューションは、中程度の効率になる傾向がある。
低水準プログラミング言語は、一般的にコンパイルされる。特に、クロスプラットフォームのサポートより効率を重視する場合である。このような言語の場合、プログラムコードとマシンコードによって実行されるハードウェア操作の間には1対1の対応があり、プログラマが中央処理装置(CPU)とメモリの使用を細かく詳細に制御しやすくなる。
少し努力すれば、従来のインタプリタ型言語でもコンパイラを作成することが常に可能である。例えば、Common lispは、Javaバイトコード(Java仮想マシンによって解釈される)、Cコード(次にネイティブマシンコードにコンパイルされる)、または直接ネイティブコードにコンパイルできる。複数のコンパイルターゲットをサポートするプログラミング言語は、実行速度またはクロスプラットフォームの互換性のいずれかを選択するために、開発者により多くの制御を提供する。