基本情報技術者試験 平成31年度 春期 午前 問19
--------------------------
平成31年度 春期 午前 問19
インタプリタの説明として、適切なものはどれか。
ア 原始プログラムを、解釈しながら実行するプログラムである。
イ 原始プログラムを、推論しながら翻訳するプログラムである。
ウ 原始プログラムを、目的プログラムに翻訳するプログラムである。
エ 実行可能なプログラムを、主記憶装置にロードするプログラムである。
--------------------------
解説
プログラムを実行する際に必要になる、インタプリタとコンパイラの問題。
原始プログラムは、ソースプログラムとかソースファイルとかソースとか呼ぶ方が多い気がする。人が書けて読めるが、機械が読めない(=実行できない)プログラム。
目的プログラムは、オブジェクトプログラムとかオブジェクトモジュールとかオブジェクトコードとかとも呼ぶ。こちらは人が読めない(書けない)が、機械は読める(=実行でき)プログラム。
プログラミングをする際は人が書ける原始プログラムを人手で作り、インタプリタ方式もしくはコンパイル方式で機械が実行できる目的プログラムにすることになる。
問題のインタプリタの答えは選択肢ア。
インタプリタ方式では原始プログラムを 1 行毎に解釈(機械が読めるように)して実行する。目的プログラムは作成しない。
コンパイル方式では原始プログラムを一度全て解釈、翻訳して目的プログラムを作ってしまう。なのでウはコンパイルをするコンパイラの話。
インタプリタ方式はプログラムが完成してなくても途中まで実行できるので確認しながらの実行が容易。ただし毎行毎に解釈するという動作があるので、実行速度はコンパイル方式と比べて遅くなる。
インタプリタというと Perl や Python が思い浮かぶが、これら言語の実装方法にインタプリタ方式が多いというだけである。
実装さえあれば、「Python 言語をコンパイル」することもできる。"インタプリタ言語" とか "コンパイル言語" といった言葉はない。
他の選択肢について。
エはローダーのこと。
ローダーはコンパイル方式で作られた目的プログラムや、インタプリタ方式で翻訳されたプログラムを主記憶装置に移動させるためのプログラム。主記憶装置にプログラムが移動されることで、ようやく CPU がプログラムを実行することができる。
イは適切な技術が浮かばない。
ある言語の原始プログラムを別の言語の原始プログラムに変換するトランスレータとか、コンパイルの際に結果を変えずにより高速な処理ができるように原始プログラムを変換する最適化とか、だろうか。
前後の問題はこちら。