コンパイル
別名: Compile, コンパイラ, Compiler, コンパイル言語
コンパイルとは、人間が書いたソースコードを、コンピュータが実行できる形式に翻訳することです。
この翻訳を行うプログラムのことをコンパイラ(Compiler)と呼びます。
なぜコンパイルが必要なのか
コンピュータが直接理解できるのは「機械語」と呼ばれる 0 と 1 の羅列だけです。 しかし、人間が 0 と 1 でプログラムを書くのは現実的ではありません。
そこで、人間が読み書きしやすいプログラミング言語でコードを書き、コンパイラに翻訳してもらいます。
実際にコンパイルすると何が起きるのか
言葉で説明するより、実物を見たほうが早いです。
C言語で「Hello」と表示するだけの簡単なプログラムをコンパイルしてみましょう。
人間が書くソースコード(C言語):
#include <stdio.h>
int main() {
printf("Hello");
return 0;
}たった6行の、読めばなんとなく意味がわかるコードです。
コンパイル後(機械語の一部を16進数で表示したもの):
55 48 89 e5 48 8d 05 a8 0e 00 00 48 89 c7 b8 00
00 00 00 e8 e1 fe ff ff b8 00 00 00 00 5d c3 00
人間には意味不明な数字の羅列ですが、コンピュータはこれを読んで命令を実行します。 コンパイラは、人間が書いたコードをこのような形式に翻訳してくれるプログラムです。
コンパイルの流れ
ソースコードが実行されるまでの一般的な流れです。
ソースコードを書く→コンパイラが翻訳する→実行ファイルが生成される→コンピュータが実行する
コンパイル言語とインタプリタ言語
プログラミング言語は、コードの実行方法によって大きく2つに分かれます。
| 種類 | 仕組み | 代表的な言語 |
|---|---|---|
| コンパイル言語 | 実行前にまとめて翻訳する | C, C++, Go, Rust |
| インタプリタ言語 | 実行しながら1行ずつ翻訳する | Python, Ruby, PHP |
- コンパイル言語は、外国語のレシピ本を事前にすべて翻訳してから調理を始めるイメージです。準備に時間がかかりますが、調理自体はスムーズに進みます。
- インタプリタ言語は、外国語のレシピ本を1行ずつ翻訳して調理するイメージです。すぐに始められますが、調理はスムーズには進まないでしょう。
※ただ、現代の言語処理系は最適化が進んでおり、単純に「コンパイル言語=速い、インタプリタ言語=遅い」とは言い切れません。
まとめ
- ✓コンパイルはソースコードをコンピュータが理解できる形式に翻訳すること
- ✓翻訳を行うプログラムをコンパイラと呼ぶ
- ✓コンパイル言語は事前に翻訳し、インタプリタ言語は実行時に翻訳する