プログラムの実行方式としてインタプリタ方式とコンパイラ方式がある。図は,データを入力して結果を出力するプログラムの,それぞれの方式でのプログラムの実行の様子を示したものである。a,bに入れる字句の適切な組合せはどれか。 方式a の図: - ソースプログラム →(矢印)→ [a] - データ →(入力)→ [a] - [a] →(出力)→ 結果 方式b の図: - ソースプログラム →(矢印)→ [b] - [b] →(矢印)→ 目的プログラム - データ →(入力)→ 目的プログラム - 目的プログラム →(出力)→ 結果
平成25年度 秋期 ITパスポート試験 問55
テクノロジ系アルゴリズムとプログラミング › プログラム言語
这道题的解析和你的作答记录。
問55
頻出度★☆☆
解説
問 55
错误ア
这是把 a 和 b 都当作解释器的组合,但 b 的图中有由源程序生成的「目标程序」,数据也是输入给该目标程序的。解释器不生成目标程序,而是直接解释执行源程序,所以把 b 当作解释器与图相矛盾。
- イ
正解 在图中区分这两种方式的决定性依据是「中途是否出现目标程序(object program)」。方式 a 的图中不存在目标程序,源程序和数据都直接进入方框 a,并从那里输出结果。这是一边逐行解释源程序、一边在运行时当场进行处理的动作,正是解释器的作用。另一方面,方式 b 的图中,源程序首先进入方框 b,由 b 生成目标程序。数据不是输入给 b,而是输入给生成出来的目标程序,再从那里输出结果。这是在运行前把源程序整体翻译成机器语言(目标程序),之后再运行翻译完成的程序这样一个流程,属于编译器的作用。因此 a 处填解释器、b 处填编译器,正确答案是「イ」。
错误ウ
这是把 a 和 b 对调的组合。a 的图中没有目标程序,所以它不是编译器而是解释器;b 的图中有目标程序,所以它不是解释器而是编译器,两者都反了。
错误エ
这是把 a 和 b 都当作编译器的组合,但 a 的图中数据直接进入方框 a,并且没有经过目标程序就输出了结果。编译器的职责是翻译并输出目标程序,它并不会自己接收数据并给出结果,因此把 a 当作编译器是错误的。
ここがポイント
- 解释器一边逐行解释源程序,一边在运行时当场进行处理,因此不生成目标程序。由于每次运行都要翻译,执行速度较慢,但便于边试边开发。
- 编译器在运行前把整个源程序一次性翻译成机器语言的目标程序。运行时由翻译完成的目标程序来处理数据,因此执行速度快。图中是否出现目标程序,就是区分这两种方式的决定性依据。