#####◇記事を書いた動機
普段の業務ではJavaでプログラムをしていますが、ある日、コンパイルした時のJDKのバージョンと実行する時のJREのバージョンが異なっていたことでコンパイルエラーとなりました。そのとき、「そもそもコンパイルって何してるんだっけ?」とふと思ったので、調べてみました。
そもそもコンパイルって
コンパイルとは、プログラムソースファイルから実行ファイルを作成する処理のこと。
もう少し難しい言い方をすると、javaやC言語などの高級言語で記述されたソースコードをネイティブコード(*1)に翻訳すること。
そして、コンパイルを実行してくれるプログラムのことをコンパイラと言う。
コンパイラの中では、ソースコードとネイティブコードの対応表があり、それに基づきながらソースコードの字句解析/構文解析/意味解析を実施し、最終的にネイティブコードを生成する。また、コンパイラはプログラミング言語の種類によって専用のものが必要だが、CPUの種類によっても専用のものが必要になる。
(*1) ネイティブコードとは
マシン語のこと。難しい言い方をすると、コンピュータのCPU(MPU/マイクロプロセッサ)が理解できる形式で記述されたコンピュータプログラム。
#####◇感想・気付き
・コンパイルはプログラムを動かす上で重要な働きをしているが、そもそもソースコードからプログラムの実行まで、どのような仕組み・フローで制御されているのか知りたくなった。次回以降のトピックにしたい。