💻 ITパスポート | テクノロジ系

コンパイラインタプリタとは?

人間が書いたプログラム(ソースコード)をコンピュータが理解できる言語に翻訳する2つの方式。「まとめて翻訳」か「1行ずつ通訳」かの違い。

🎬 こんなシーンを想像
プログラミングを始めた同期が「え、なんでCは速くてPythonはちょっと遅いの?」と聞いてきた。「Cはコンパイラ方式で事前に全部機械語に変換するから速いんだよ。Pythonはインタプリタ方式で1行ずつ変換しながら動くから少し遅い」と説明した。
…コンパイラとインタプリタ、どちらがどんな特徴?
🔄 2つの翻訳方式の違い コンパイラ ソースコード(全体) まとめてコンパイル 機械語(実行ファイル) 一括変換済み 高速実行! インタプリタ 1行目を読む → 実行 2行目を読む → 実行 3行目を読む → 実行 1行ずつ実行 (移植性が高い)

コンパイラ

  • ソース全体を事前に機械語に変換
  • 実行速度が速い
  • エラーは実行前に一括検出
  • C・C++・Java(コンパイル)

インタプリタ

  • 1行ずつ読んで翻訳しながら実行
  • 実行速度はやや遅い
  • エラーは実行時にその場で発生
  • Python・JavaScript・Ruby
📋 使い分けのポイント
コンパイラ方式が向いている場面
速度が命のゲームや組み込みシステム、大量データ処理。C/C++など。ソースを配布せず実行ファイルのみ配布できる。
インタプリタ方式が向いている場面
開発速度重視・スクリプト処理・プロトタイピング。PythonやJavaScriptなど。OS/環境が変わっても動かしやすい(移植性が高い)。
⚠️ ひっかけ注意ポイント
「Javaはどちら?」問題
Javaはコンパイラで一度「バイトコード」に変換し、JVM(Java仮想機械)がインタプリタ的に実行する中間方式。「コンパイラのみ」は誤り。
「速い=コンパイラ」を押さえる
コンパイラは事前変換済みなので実行が速い。インタプリタは変換しながら動くので遅い。この速度差が定番出題。
アセンブラと混同しやすい
アセンブラはアセンブリ言語→機械語への変換ツール。コンパイラ・インタプリタは高水準言語(人間が読める言語)を変換するもの。対象言語のレベルが違う。
判断のコツ
プログラム全体を一括変換・速い」→ コンパイラ。「1行ずつ変換しながら実行・移植性高い」→ インタプリタ。
🧠 覚え方(無理やりゴロ)
コンパイラ=「コンビニ弁当(事前製造)」
コンパイラ → コン(コンビニ)パイラ → 事前に全部作ってある → すぐ食べられる(速い)!

インタプリタ=「その場で作る料理(注文後調理)」
インタプリタ → イン(院)タプリタ → 院内調理 → 注文してから1品ずつ作る(遅い)!