【C/C++/Java】コンパイルとは?初心者でもわかるようにプログラミング用語解説!
コンパイルとは
コンパイルとは人間がわかりやすいように書いたソースコードを、今度は機械がわかるように機械語(オブジェクトコード)へ変換することです。
「バイナリコード」「機械語」とも呼ばれ、機械が理解できるソースコードのことです。すべて「0」と「1」だけで構成されており、人間が見ても理解することができないコードです。
実際にコンパイルを行いプログラミングを実行する場合の手順は以下のようになります。
- ソースコード(人間がわかる言葉)
↓ - コンパイル(人間語→機械語)
↓ - オブジェクトコード(機械がわかる言葉)
↓ - 実行
プログラミング言語はコンパイラ言語とインタプリタ言語の二つに分けられます
インタプリタ言語
インタプリタ言語で有名どころはPHP,Python,Javascriptです。
インタプリタ言語は実行する時に、ソースコードをオブジェクトコードに変えながら実行する言語です。
わざわざコンパイルする必要がなくなりますが、その分実行速度など性能が落ちます。
変換処理を実行を同時に行うため簡単に実行できるが、その分性能が落ちる。
コンパイラ言語
コンパイラ言語で有名どころはGo,C,C++,C#,Javaです。
コンパイラ言語はソースコードを書き終えると機械が理解できるように、新しくオブジェクトコードに変換されたファイルを作成します。
オブジェクトコードファイルはメモリ消費も少なく、実行するだけならインタプリタ言語よりも高速で実行することができます。
またユーザーはソースコードではなくオブジェクトコードだけを見るという特徴もあります。
一度コンパイルしてしまえば、インタプリタよりも性能が良い実行ができる。
逆コンパイル
「逆コンパイル」、「デコンパイル」と言って、コンパイルとは逆にオブジェクトコードをソースコードに変換することもできます。
コンパイル言語ではユーザー側にオブジェクトコードだけを渡すため、自分が理解したいプログラムがあれば逆コンパイルをすることでソースコードを確認できます。
しかし完璧に復元するわけではなく一部破損してファイルが作成されることが多いです。また著作権から逆コンパイルが行えないように対策しているアプリやソフトウェアも存在します。
独自のプログラムを開発するときはソースコードがわからないようにする必要があるので逆コンパイルには注意しましょう。