基本情報 2022 サンプル問題 問16:テクノロジ系に関する問題
インタプリタの説明として,適切なものはどれか。
- a原始プログラムを,解釈しながら実行するプログラムである。正答
- b原始プログラムを,推論しながら翻訳するプログラムである。
- c原始プログラムを,目的プログラムに翻訳するプログラムである。
- d実行可能なプログラムを,主記憶装置にロードするプログラムである。 - 13 -
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「原始プログラムを,解釈しながら実行するプログラムである。」 です。
インタプリタは英語で「通訳さん」のこと。たとえば日本語しか話せない人と英語しか話せない人の会話を、通訳が1文ずつその場で訳して伝えるのと同じイメージです。
プログラムも人間が書いた言葉(原始プログラム=ソースコード)をコンピュータがそのままでは理解できないので、インタプリタが1行ずつ訳して、その場で実行してくれます。Python や JavaScript の動き方がこれです。
👉 覚え方:インタプリタ=通訳さん。「読みながらしゃべる」イメージ。
ほかの選択肢:b「推論しながら翻訳」というプログラムは存在しません/c はコンパイラ(まとめて翻訳して実行ファイルを作る)/d はローダ(できあがったアプリをメモリに読み込む役)。
なぜこれが正解か
正解は a。インタプリタ(interpreter)は原始プログラム(ソースコード)を逐次解釈しながら実行する言語処理プログラム。実行前に一括翻訳せず、1文ずつ解釈と実行を交互に行うのが特徴。Python、Ruby、JavaScript などが代表例。
各選択肢の解説
- b:「推論しながら翻訳」する処理系は一般に存在しない。ダミー選択肢。
- c:原始プログラムを目的プログラム(オブジェクトコード)に一括翻訳するのはコンパイラの説明。
- d:実行可能ファイルを主記憶(メモリ)にロードするのはローダの役割。OS の機能。
覚え方・ひっかけ注意
コンパイラ=事前に丸ごと翻訳→速い/インタプリタ=その場で逐次翻訳→開発が楽と対比で覚える。c の「目的プログラムに翻訳」を見たら反射的にコンパイラと判断。d はリンカ(複数の目的プログラム結合)と混同しないこと。
理論的背景
言語処理系は大別して(1)コンパイラ方式、(2)インタプリタ方式、(3)中間コード方式(ハイブリッド)に分類される。インタプリタは構文解析→意味解析→即時実行を1文単位で繰り返すため、目的プログラム生成は行わない。実行速度はコンパイル方式に劣るが、対話的実行(REPL)・動的型付け・実行時メタプログラミングが容易。
実務での使われ方
現代の主要言語の多くはハイブリッド方式を採用。Java はソースを中間コード(バイトコード)にコンパイルし、JVM がインタプリタ実行+JIT(Just-In-Time)コンパイラで頻出部分を機械語に変換しキャッシュする。Python(CPython)も .py → .pyc バイトコード → 仮想マシンで実行。JavaScript エンジン(V8 等)も同様の JIT 構成。
試験での位置づけ
基本情報・応用情報ともに「言語処理系の分類」「コンパイラとインタプリタの比較」「中間コード方式」は定番頻出。字句解析→構文解析→意味解析→最適化→コード生成というコンパイラの工程順、AST(抽象構文木)、リンカ・ローダの役割分担まで体系で押さえる。近年は LLVM・WebAssembly など中間表現の出題例も増加。
選択肢の発展補足
- c コンパイラ:プリプロセッサ→コンパイラ→アセンブラ→リンカ→ローダのトータルチェーンで実行可能ファイルが生成される。
- d ローダ:絶対ローダ・再配置可能ローダ・動的ローダの区分があり、共有ライブラリ(.so / .dll)の動的リンクは動的ローダが担う。
- 関連用語:クロスコンパイラ(別アーキテクチャ向け実行ファイルを生成)、トランスパイラ(TypeScript→JavaScript 等、高水準言語間変換)も合わせて押さえると応用問題に強い。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 2022 サンプル問題 問16/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。