コンパイラー入門。コンパイラーとは何かを考えたい

コンパイラーの役割に付いて考えていきたい。ウィキペディアの言葉をそのまま受け取れば、コンパイラーとは「高水準言語をマシン語に翻訳するもの」ということになる。世の中のプログラミング言語には、高水準言語と低水準言語というものがある。高水準言語と低水準言語に明確な線引きがあるわけじゃなくて、これは概念である。高水準言語っていうのは人間が読みやすいプログラミング言語の総称、低水準言語っていうのは間が読みづらいプログラミング言語の総称である。

 

コンピューターの世界では、真面目な話し、全ての表現は二進数で行われる。ホームページはhtmlで出来ているのではない。ホームページは0と1という数字で出来ている。0と1の世界、デジタルの世界。全ての動作は0と1の量と組み合わせ。ハンパではない。読めない。理解ができない。と、いうことで、人間が理解できるようにしよう!ということでコンピュータ言語が発明された。

 

コンピューター言語は、どんな言語であれ最終的にはマシン語にコンパイルされ、0と1に変換される。0と1以外はコンピューターは理解できない。コンピューター初期の時代に、アセンブリ言語というものが開発され、アセンブリ言語で書かれたプログラムはコンパイラーを通りマシン語に翻訳されて、マシンは受け取った命令を忠実に実行することになる。しばらく時間が経過すると「おいおい、なんだよアセンブリ言語って意味わかんね読みづらいな」っていうことになり、C言語だとかが開発されていくことになる。今、我々は、基本的にはC言語っていうのは低級言語っていう風に見ている。それは、jsだとかPythonだとかswiftなんていう高級言語(読みやす・理解しやすい)言語から比べたらC言語は古い言語だし、読みづらいからねという印象を受けるからである。

 

まあ、兎にも角にも、CだとかjsだとかPythonだとかswiftだとか、諸々、全部、最終的には機械語に翻訳される、その翻訳の仕事を担っているのがコンパイラーであり、コンパイルという作業とは、プログラミング言語を、機械語に翻訳する作業ということになる。