プログラム言語に関する次の記述 a~c のうち, 適切なものだけをすべて挙げたものはどれか。 a 機械語やアセンブリ言語で作成されたプログラムは, 特定の CPU に依存することなく実行できる。 b コンパイラで変換されるプログラムは, 最終的には機械語に変換されてから実行される。 c 人間の言葉に近い規則をもったプログラム言語 (高水準言語) を活用すれば, 機械語では実行できない複雑な演算が実行できるプログラムが開発できる。
平成23年度 特別試験 ITパスポート試験 問81
这道题的解析和你的作答记录。
問 81按层次来梳理程序设计语言
错误ア
它只列举了“a”,但 a 本身就是错误的。机器语言是 CPU 直接解释的指令代码,指令的种类、操作数的格式、位表示都因 CPU 的体系结构而异。汇编语言是把人能读懂的符号(助记符)与这些机器语言指令一一对应起来的语言,因此同样是特定 CPU 所专有的。也就是说,用机器语言或汇编语言编写的程序,在目标 CPU 之外的 CPU 上无法直接执行,“不依赖于 CPU”这一说法并不成立。此外,它还遗漏了正确的记述 b,在这一点上也不恰当。
错误イ
它列举了“a, c”,但 a 和 c 都是错误的,而且没有包含正确的 b。a 错误的理由如上所述,是因为机器语言和汇编语言依赖于 CPU。c 错误的理由是:用高级语言编写的程序也会在执行前或执行时被翻译成机器语言,而 CPU 只执行机器语言,因此不存在“机器语言无法表示的运算,用高级语言就能执行”这种情况。由于它选中了两条错误的记述,这个选项是双重不恰当的。
- ウ
正解 正确答案是 ウ“b”。恰当的记述只有 b。b 的“由编译器转换的程序,最终会被转换成机器语言后再执行”之所以正确,是因为 CPU 能够直接解释并执行的指令只有机器语言(用 0 和 1 的排列表示的指令代码)。用 C 这类供人阅读和书写的语言编写的源程序(source program),CPU 本身无法理解。于是编译器把整个源程序一次性翻译,生成 CPU 能够执行的形式,即目标程序(机器语言)。执行时真正在运行的是这段机器语言,而不是源代码本身。即使是像解释器方式那样逐行解释并执行的方式,最终交给 CPU 处理的仍然是机器语言指令,这一点没有变化。另一方面,a 否定了机器语言和汇编语言依赖于 CPU 这一基本事实,因而是错误的;c 声称高级语言能够实现超出机器语言能力的运算,因而也是错误的。所以恰当的只有 b,只列举了 b 的 ウ 就是正确答案。
错误エ
它列举了“b, c”,b 正确这一点没有问题,但因为多包含了 c,所以不恰当。c 声称使用高级语言就能进行机器语言无法执行的复杂运算,但高级语言的程序同样要经过编译器或解释器,最终作为机器语言在 CPU 上执行,因此能够执行的处理范围与用机器语言所能编写的范围相同。高级语言真正的优点在于:可以用接近人类语言和数学式的记法书写,开发效率和可读性更高,并且不易依赖于特定的 CPU(可移植性高),而不是运算能力本身有所增加。这个选项没有满足“只把恰当的全部列举出来”这一条件中不得包含多余项的要求。
- 按层次来梳理程序设计语言。机器语言是 CPU 能够直接执行的、由 0 和 1 构成的指令代码,汇编语言是给机器语言指令配上符号的低级语言,两者都依赖于 CPU 的体系结构。与此相对,C、Java 等高级语言可以用接近人类语言和数学式的记法书写,同一份源代码可以重新翻译成面向不同 CPU 的形式,因此可移植性高。不过,即便是高级语言,执行时也要翻译成机器语言,所以能够执行的处理范围与机器语言相同。
- 掌握语言处理程序的作用。编译器是把源程序(source program)整体一次性翻译、生成机器语言的目标程序之后再执行的方式,解释器是逐行解释并执行的方式。方式虽然不同,但最终由 CPU 处理的都是机器语言,这一原则是共通的;正是这条原则成为判断记述 b 正确、记述 c 错误的依据。