結論:コンパイラは「実行する前にコード全体をまとめて機械語へ翻訳しておく」方式、インタプリタは「実行しながら1行ずつその場で解釈する」方式です。 前者を使う言語がコンパイル言語(C・Go・Rustなど)、後者を使う言語がスクリプト言語(Python・JavaScriptなど)です。どちらも「人間のコードをコンピュータが分かる形に翻訳する」目的は同じで、Become-Coderならどちらの言語も環境構築なしでブラウザ上で動かして違いを体感できます。
コンパイラとインタプリタの違い ― 翻訳の「タイミング」が違うだけ
コンピュータのCPUが直接理解できるのは、0と1でできた機械語だけです。私たちが書くprint("Hello")のようなコードは、そのままでは動きません。この「人間のコード → 機械が分かる形」への翻訳を担うのが、コンパイラとインタプリタです。
両者の本質的な違いは、翻訳するタイミングです。
- コンパイラ:プログラムを動かす**前に、コード全体をまとめて機械語へ翻訳(コンパイル)**しておく。翻訳済みの完成品を実行するので動作が速い。
- インタプリタ:プログラムを動かすときに、1行ずつその場で解釈しながら実行する。翻訳の手間がない分、書いてすぐ試せて手軽。
たとえるなら、コンパイラは「本を丸ごと翻訳し終えてから読む」、インタプリタは「その場で通訳してもらいながら読む」イメージです。用語のまとめは用語集の コンパイラとインタプリタ も参照してください。
コンパイル言語とスクリプト言語とは
この2つの方式に対応して、言語もざっくり2グループに分けられます。呼び名が違うだけで、指しているのは「その言語が主にどちらの方式で動くか」です。
- コンパイル言語:コンパイルしてから実行する言語。C、C++、C#、Go、Rust など。実行が速く、大きなソフトや性能が要る場面で強い。
- スクリプト言語:インタプリタで1行ずつ実行する言語。Python、JavaScript、Ruby、PHP など。手軽に書けて、すぐ結果を確認できる。
「速さ」と「手軽さ」のトレードオフ、と覚えておけば入り口としては十分です。実際には両者の中間や組み合わせ(実行中に必要な部分だけ機械語へ翻訳するJITなど)も一般的で、境界は昔ほどはっきりしていません。
ブラウザで両方を動かして比べてみる(無料・環境構築なし)
言葉で読むより、同じ「Hello World」を両方式の言語で動かしてみるのが一番わかりやすいです。Become-Coderはどの言語もインストール不要で、ページ内の実行ボタンを押すだけで結果が出ます(登録不要)。
コンパイル言語を動かす(内部でコンパイルしてから実行しています):
- C言語 → Hello, World ― printfで画面に表示する
- C++ → Hello World ― 画面に表示する
- C# → Hello World とトップレベル文(ブラウザ内でRoslynがコンパイルして実行します)
- Go → はじめての Go ― Hello, World
- Rust → はじめての Rust ― Hello, Cargo
スクリプト言語を動かす(1行ずつ解釈して実行しています):
- Python → print ― 画面に表示する
- JavaScript → console.log ― 画面に表示する
- Ruby → putsで出力 ― 画面に文字を表示する
- PHP → echo ― 画面に表示する
書くコードはどれも数行ですが、「実行ボタンを押した瞬間に翻訳が起きているか、事前に翻訳済みか」の違いを、同じ画面で続けて試すと感覚がつかめます。Javaは「一度書けばどこでも動く」中間形式(バイトコード)へコンパイルする少し特殊なタイプで、その考え方は Javaコース の最初の読み物で解説しています。
初心者がつまずきやすいポイント
「コンパイルエラー」と「実行時エラー」は別物です。ここは方式の違いがそのまま現れる場所で、多くの人が混乱します。
- コンパイル言語では、実行する前のコンパイル段階でエラーが出て止まることがあります。文法の誤りや型の食い違いを、動かす前にまとめて指摘してくれるわけです。詳しくは コンパイルエラーとは(C#) が分かりやすいです。
- スクリプト言語では事前チェックがない分、実際にその行を実行して初めてエラーになることが多いです。書いた直後は気づきにくいので、こまめに動かして確認するのがコツです。
「速いから偉い」「手軽だから初心者向け」という単純な話ではありません。壊れては困る大規模システムは事前チェックの効くコンパイル言語、とにかく手を動かして試したい学習や自動化はスクリプト言語、というように目的で使い分けます。まずは1つ動かして、翻訳のタイミングの違いを体で覚えるのが近道です。
次に読む
- どちらの方式から学ぶか迷ったら → プログラミング独学、何から始める?
- 同じコンパイル系での比較 → C言語とC++の違いとは / GoとRustの違いは?
- 代表的なスクリプト言語の比較 → PythonとJavaScriptどっちがいい?
- 用語をおさらい → コンパイラとインタプリタ(用語集)