DBデータベーススペシャリスト試験 午前Ⅰ

令和6年度秋期 データベーススペシャリスト 午前Ⅰ 問7

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

手続型言語のコンパイラがコード生成までに行う処理のうち,最後に行うものはどれか。

選択肢

  1. ア
    意味解析
  2. イ
    構文解析
  3. ウ
    最適化
  4. エ
    字句解析
解き方のヒントを見る

処理のつながりを確認する視点

各工程の名前や見慣れた順番を暗記するのではなく、ある作業の結果が次の作業の前提になるかという依存関係に注目し、選択肢全体を一つの流れとして落ち着いて照合しましょう。

この問題で問われていること

一つの工程を単独で覚えているかではなく、入力がどの段階で変換され、次の段階へ何が受け渡される想定かを、選択肢の並びに沿って一貫して丁寧に確認することに集中します。

視点

工程ごとの役割を個別に断定するのではなく、前後の作業がどのようにつながるか、途中で受け渡される対象が自然に対応しているかという観点で、全体の整合性を確認します。

確認ポイント

  • 前の工程の結果が次の工程の前提になっているか
  • 各段階で受け渡される対象に矛盾がないか
  • 全体を一続きの流れとして読んだとき整合しているか
正解と解説を見る

正解

ウ

解説

手続型言語のコンパイラは、字句解析、構文解析、意味解析などでプログラムの内容を確認した後、実行効率やコード量を改善する最適化を行い、その結果を用いてコードを生成する。したがって最後の処理は最適化です。

理由

字句解析は文字列をトークンに分け、構文解析はトークンの並びが文法に合うかを調べる。意味解析は型や識別子などの意味上の整合性を確認する。これらの解析結果を利用して、コード生成前に処理効率を高めるのが最適化です。

比較

最適化では、プログラムの動作を変えない範囲で、命令数を減らしたり実行速度を高めたりする。その後、最適化された内部表現から目的のコードを生成するため、提示された処理の中では最適化が最後になる。

選択肢ア

これは不正解だよ。意味解析は、変数の型や識別子の対応、演算の意味などが正しいかを確認する処理である。プログラムの意味を検査する段階であり、コード生成前に行う改善処理よりも前の工程に当たる。

選択肢イ

これは不正解だよ。構文解析は、字句解析で得られたトークンの並びを文法に従って解析し、構文木などの内部表現を作る処理である。文法上の構造を確認する段階なので、コード生成までの最後の処理ではない。

選択肢ウ(正解)

これは正解だよ。最適化は、字句解析・構文解析・意味解析で得られた情報を基に、プログラムの意味を保ったまま命令数や実行時間などを改善する処理である。通常、コード生成の直前に行われる。

選択肢エ

これは不正解だよ。字句解析は、ソースプログラムの文字列をキーワード、識別子、演算子などのトークンに分割する最初の解析処理である。後続の構文解析や意味解析の入力を作る段階であり、最後には行わない。

学習のポイント

コンパイラの解析処理と最適化・コード生成の順序を整理して覚える。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度秋期 データベーススペシャリスト試験 午前Ⅰ 問7(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針