人が書いたプログラム(ソースコード)を、コンピュータが実行できる形へ翻訳するのが コンパイラ と インタプリタ です。どちらも「翻訳者」ですが、翻訳のタイミングが違います。
- コンパイラ … 実行する 前に、まとめて機械語へ翻訳 しておく方式。翻訳済みなので実行が速い。C、C++、Rust、Java(中間形式へ)など。
- インタプリタ … 実行時に 1行ずつその場で解釈しながら動かす 方式。すぐ試せて手軽。Python、JavaScript、PHP など。
flowchart LR S[ソースコード] -->|コンパイラ| M["機械語にしてから実行(速い)"] S -->|インタプリタ| R["1行ずつ解釈して実行(手軽)"]
ざっくり言うと、コンパイラは「本を丸ごと翻訳してから読む」、インタプリタは「その場で通訳してもらいながら読む」イメージです。近年は両者の中間や組み合わせ(実行中に必要な部分だけ翻訳するJITなど)も一般的で、境界は昔ほどはっきりしていません。