SAシステムアーキテクト試験 午前Ⅱ

令和6年度春期 システムアーキテクト 午前Ⅱ 問9

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

問題

論理型プログラミングにおいて,命題の証明を行うための基本的な機能はどれか。

選択肢

  1. ア
    オーバーライド
  2. イ
    オーバーロード
  3. ウ
    メッセージパッシング
  4. エ
    ユニフィケーション
解き方のヒントを見る

実行モデルと機能の対応を確かめる

論理型プログラミングでは、プログラムの実行そのものが推論の過程として捉えられます。各候補が、その推論を進めるために言語処理系が本来備えている仕組みを指しているのか、別の考え方の言語に由来するものかを区別する視点で整理しましょう。

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

問われているのは、事実と規則から目的の命題が成り立つかを処理系が自動的に調べる際に、どのような基本的な働きが必要になるかという点です。各候補について、その働きが推論の過程のどこで役立つかを自分の言葉で説明できるか確かめてください。

視点

論理型言語では、プログラマは『何が成り立つか』を宣言的に書き、『どう求めるか』の手順の多くは処理系に任せます。そのため学習の際は、言語の表面的な書き方よりも、処理系が問い合わせに答えるまでの内部の流れを段階的に追うと整理しやすくなります。各段階で処理系が何を判断しているかに注目してください。

確認ポイント

  • 問い合わせを受けてから結論を返すまでに、処理系が内部で行う判断を順に書き出せるか
  • 各候補が、その内部の流れのどの段階に対応するか、または対応しないかを説明できるか
  • 他の種類の言語で学んだ用語と混同していないか、用語の定義を振り返ったか
正解と解説を見る

正解

エ

解説

論理型プログラミングでは、命題に含まれる変数や項を条件に合う形へ対応付け、命題が成立するかを調べる機能が証明の基礎になる。

理由

命題の証明では、命題中の項や変数に適切な値や項を対応付け、与えられた条件全体が成立する組合せを探索する。この基本的な処理がユニフィケーションです。

比較

オーバーライドとオーバーロードは主にオブジェクト指向や静的な名前解決に関係する機能であり、メッセージパッシングはオブジェクト間の通信方式です。いずれも命題の証明を行う基本機能ではありません。

選択肢ア

これは不正解だよ。オーバーライドは、派生側のクラスなどで、継承したメソッドの処理を同じ名前で置き換える仕組みを指す。命題中の項や変数を条件に合う形へ対応付けて証明する、論理型プログラミングの基本機能ではない。

選択肢イ

これは不正解だよ。オーバーロードは、同じ名前の操作やメソッドを、引数の型や個数などの違いによって使い分ける仕組みである。命題の条件を満たす項同士の対応関係を調べて証明する機能とは役割が異なる。

選択肢ウ

これは不正解だよ。メッセージパッシングは、オブジェクトなどの間でメッセージを送受信し、処理を依頼するための通信方式である。論理型プログラミングにおける命題の証明を支える、項や変数の対応付けそのものを示す機能ではない。

選択肢エ(正解)

これは正解だよ。ユニフィケーションは、命題や条件に含まれる項・変数を、全ての条件が整合するように対応付ける処理である。この対応付けによって命題が成立するかを調べられるため、論理型プログラミングで証明を行うための基本的な機能に当たる。

学習のポイント

論理型プログラミングの証明と、他の言語機能の役割を区別する。

出典:独立行政法人 情報処理推進機構(IPA)令和6年度春期 システムアーキテクト試験 午前Ⅱ 問9(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

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