中間表現
「中間言語」という語は、中間表現が言語(形式言語)の形態をしている場合にそう呼ばれるものである。ここでは主に、プログラミング言語に関係する場合について述べる。
コンパイラでは、ソースコードから直接ターゲットアーキテクチャの機械語コードを生成するのではなく、中間表現を経由するものがある。インタプリタでは、ソースコードを直接解釈実行するのではなく、中間表現を生成してそれを解釈実行するものがある。コンパイラにしてもインタプリタにしても、あるいはそういったコンピュータ・プログラミング言語の処理系に限らず、入力があって出力がある任意のコンピュータ・プログラムにおいて、そういった何らかの中間表現は1段階とは限らず、複数種類があって複数段階のこともある。
歴史的には、言語処理系では1970年代頃までは単一言語、単一ターゲットが普通であった。しかし発想自体は以前からあり、1958年のメルヴィン・コンウェイの文献Proposal for an UNCOLで提案されているUNCOL(UNiversal Computer Oriented Language)がある。UNCOLは概念の提案のためのものであり、完備された仕様として示されたものではない。また、初期の日本のコンピュータにおいて森口繁一の提案による、素朴なものであるが命令名の共通化などをはかったSIP(Symbolic Input Program)というものがあった。