A型システムエンジニアの勉強メモ

SEの勉強の記録。誰かの役にたつなら嬉しい。

基本情報技術者試験 平成31年度 春期 午前 問19

基本情報技術者試験

平成31年度 春期 午前 問19

 

インタプリタの説明として、適切なものはどれか。

 

 ア 原始プログラムを、解釈しながら実行するプログラムである。

 イ 原始プログラムを、推論しながら翻訳するプログラムである。

 ウ 原始プログラムを、目的プログラムに翻訳するプログラムである。

 エ 実行可能なプログラムを、主記憶装置にロードするプログラムである。

 

--------------------------

解説

 

プログラムを実行する際に必要になる、インタプリタコンパイラの問題。

原子プログラムは、ソースプログラムとかソースファイルとかソースとか呼ぶ方が多い気がする。人が書けて読めるが、機械が読めない(実行できない)プログラム。

目的プログラムは、オブジェクトプログラムとかオブジェクトモジュールとかオブジェクトコードとかとも呼ぶ。日本語にすると原始と目的なのかな。

こちらは人が読めない(書けない)が、機械は読める(実行できる)プログラム。

プログラミングをする際は人が書ける原始プログラムを人手で作り、インタプリタ方式もしくはコンパイル方式で機械が実行できる目的プログラムにすることになる。

 

問題のインタプリタの答えはア。

 

インタプリタ方式では原始プログラムを1行毎に解釈(機械が読めるように)して実行する。目的プログラムは作成しない。

コンパイル方式では原始プログラムを一度全て解釈、翻訳して目的プログラムを作ってしまう。なのでウはコンパイルをするコンパイラの話。

 

インタプリタ方式はプログラムが完成してなくても途中まで実行できるので確認しながらの実行が容易。ただし毎行毎に解釈するという動作があるので、実行速度はコンパイル方式と比べて遅くなる。

 

インタプリタというとPerlPythonが思い浮かぶが、これら言語の実装方法にインタプリタ方式が多いというだけである。実装さえあれば、Python言語をコンパイルすることもできる。"インタプリタ言語"とか"コンパイル言語"といった言葉はない。

 

他の選択肢について。

エはローダーのこと。ローダーはコンパイル方式で作られた目的プログラムや、インタプリタ方式で翻訳されたプログラムを主記憶装置に移動させるためのプログラム。主記憶装置にプログラムが移動されることで、ようやくCPUがプログラムを実行することができる。

 

イは適切な技術が浮かばない。

ある言語の原始プログラムを別の言語の原始プログラムに変換するトランスレータとか、コンパイルの際に結果を変えずにより高速な処理ができるように原始プログラムを変換する最適化とか、だろうか。