平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
テクノロジ/開発技術あるプログラム言語の解説書の中に次の記述がある。この記述中の“良いプログラム”がもっている特徴はどれか。 このプログラム言語では,関数を呼び出すときに引数を保持するためにスタックが使用される。引数で受け渡すデータを,どの関数からでも参照できる共通域に移せば,スタックの使用量を減らすことができるが,“良いプログラム”とは見なされないこともある。
出典:平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問5
- ア実行するときのメモリの使用量が,一定以下に必ず収まる。
- イ実行速度について,最適化が行われている。
- ウプログラムの一部(モジュール)を変更しても,残りの部分への影響が少ない。
- エプログラムのステップ数が少なく,分かりやすい。
正解:ウ
解説
関数間で共有するデータを、引数による受渡しではなく、どの関数からでも参照できる共通域(グローバル変数)に置くと、あるモジュールでその共通域のデータを変更したときの影響が、その共通域を参照するほかのすべてのモジュールに及んでしまう。このため、モジュールの独立性(一部を変更しても残りの部分への影響が少ないという性質)が低下し、“良いプログラム”とは見なされなくなる。
選択肢ごとの解説
- ア誤り。共通域を使ってスタック使用量を減らすこと自体は、メモリ使用量が一定以下に収まることを保証する性質とは直接関係しない。
- イ誤り。共通域を使うかどうかは、実行速度の最適化と直接関係する記述ではない。
- ウ正しい。共通域にデータを移すと、モジュール間の結びつきが強くなり、一部を変更したときの残りの部分への影響が大きくなる。これが失われる“良いプログラム”の特徴である。
- エ誤り。共通域を使うかどうかは、プログラムのステップ数や分かりやすさと直接関係する記述ではない。