平成30年度 春期 午前 問18
ソフトウェア
コンパイラによる最適化の主な目的
コンパイラによる最適化の主な目的はどれか。
- アプログラムの実行時間を短縮する。
- イプログラムのデバッグを容易にする。
- ウプログラムの保守性を改善する。
- エ目的プログラムを生成する時間を短縮する。
答えと解説を見る
✓ これが正解アプログラムの実行時間を短縮する。
解説
出来上がったプログラムの実行時間を短くするためです。
コンパイラは、人が書いたソースプログラムを機械が実行できる形へ翻訳します。最適化は、その翻訳の途中でよりよい形に組み替える働きでした。使われない計算を取り除いたり、繰り返しの外へ出せる処理を外へ移したりします。手を加える相手は出来上がる側であり、狙いはそれが速く走ることです。だから、プログラムの実行時間を短縮するという肢が当たります。デバッグを容易にするという肢は、誤りを見つけて直す作業のしやすさを挙げていました。組み替えると原文との対応が崩れるので、むしろ追いかけにくくなることもあります。保守性を改善するという肢は、後から読んで直しやすくすることでした。人が読むのは原文の側なので、翻訳結果を組み替えても変わりません。目的プログラムを生成する時間を短縮するという肢は、翻訳そのものにかかる時間を挙げています。組み替えの手間が増えるぶん、翻訳の時間はかえって延びました。速くなるのはどちらの時間かで分かれます。
ほかの選択肢はなぜ違うのか
- イプログラムのデバッグを容易にする。:プログラムのデバッグを容易にすると述べています。誤りを見つけて直す作業を助けるという話でした。ところが組み替えを行うと、書いた原文と実際に走る形の対応が崩れます。追いかけにくくなる向きに働くので、狙いとしては当たりません。
- ウプログラムの保守性を改善する。:プログラムの保守性を改善すると述べています。後から読んで直しやすくすることを指した話でした。人が読み書きするのは原文の側です。翻訳した先を組み替えても、原文の読みやすさは変わりませんでした。
- エ目的プログラムを生成する時間を短縮する。:目的プログラムを生成する時間を短縮すると述べています。翻訳の作業そのものにかかる時間を挙げた話でした。よりよい形を探すぶん、翻訳には手間が増えます。短くなるのは翻訳の時間ではなく、出来上がったものが走る時間のほうでした。
この問題の用語
- 保守動いているシステムを使い続けられるように、点検や修正、更新を続ける作業です。障害の修正だけでなく、環境の変化に合わせた手直しも含みます。
- 改善悪いところを直して、より良い状態にすること。一度で終わらせず、計画・実行・評価・見直しを繰り返して続けるのが基本です。
出典:平成30年度 春期 基本情報技術者試験 午前 問18
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)