コンピューターは「人間の書いたコード」をそのまま理解できない
私たちがプログラミング言語で書いたコードは、実はコンピューター内部の部品(CPUなど)が直接理解できる言葉ではありません。人間にもわかりやすい言葉で書かれたコードを、コンピューターが実行できる形に変換する必要があり、その変換方法には大きく分けて「コンパイラ方式」と「インタープリタ方式」の2種類があります。
コンパイラ方式:先にまとめて全部翻訳しておく
コンパイラ方式は、プログラムを実行する前に、書かれたコード全体を、あらかじめコンピューターが理解できる形に一括で変換(コンパイル)しておく方式です。一度変換を終えてしまえば、実行時にはその変換済みのファイルをそのまま動かすだけなので、実行速度が速いという特徴があります。C言語やJavaなどが、この方式を採用する代表的な言語として知られています。
インタープリタ方式:その場で1行ずつ翻訳しながら進める
インタープリタ方式は、コードを実行する際に、1行ずつその場で読み込みながら、翻訳と実行を同時に行っていく方式です。事前の一括変換の手間がない分、コードを書いてすぐに動作を確認できるという手軽さがあります。PythonやJavaScriptなどが、この方式を採用する代表的な言語です。
「同時通訳」と「あらかじめ翻訳された本」に例えると
この違いは、外国語の通訳に例えるとわかりやすいかもしれません。
- コンパイラ方式:講演の内容を、あらかじめすべて翻訳して本にまとめておき、その完成した本を読み上げるイメージ。準備には時間がかかりますが、本番はスムーズに進みます
- インタープリタ方式:通訳者が、話される内容をその場でリアルタイムに訳しながら伝えていくイメージ。準備の手間は少ないですが、話される都度、翻訳の処理が必要になります
それぞれのメリット・デメリット
- コンパイラ方式:実行速度が速い一方、コードを少し変更するたびに、毎回変換をやり直す手間がかかります
- インタープリタ方式:コードの修正と動作確認を素早く繰り返せる一方、実行速度はコンパイラ方式に比べて遅くなる傾向があります
比較表で整理する
| 項目 | コンパイラ方式 | インタープリタ方式 |
|---|---|---|
| 変換のタイミング | 実行前に一括変換 | 実行しながら1行ずつ変換 |
| 実行速度 | 速い | やや遅い傾向 |
| 修正後の確認のしやすさ | 再変換の手間がかかる | すぐに確認できる |
| 代表的な言語 | C言語、Java | Python、JavaScript |
両方の性質を持つ「中間的な方式」も存在する
近年広く使われている言語の中には、コンパイラ方式とインタープリタ方式の中間にあたる仕組みを採用しているものも増えています。例えば、実行前に一度簡易的な変換を行い、その後の実行速度を高めるといった工夫が施されている言語もあり、必ずしも2つにきっちり分類できるわけではありません。
実際にコードを書きながら確認し、初心者がつまずきやすいと感じたポイントを中心にまとめました。
押さえておきたいポイント
コンパイラとインタープリタは、「人間の言葉をコンピューターの言葉に変換するタイミングと方法」の違いです。それぞれの特性を理解しておくと、プログラミング言語ごとの得意分野もより理解しやすくなります。厳密に二分できない中間的な方式があることも、あわせて覚えておくとよいでしょう。