メインコンテンツへ
アルゴリズムとプログラミングプログラム言語

手続き型言語・関数型言語・論理型言語の特徴を比較した説明として、最も適切なものはどれか。

ア.手続き型言語は「何を求めるか」を記述し、関数型言語は「どう求めるか」を記述する。論理型言語は副作用を多用して効率的に処理する。
イ.手続き型言語は処理の順序(how)を記述し、関数型言語は副作用のない純粋な関数の組み合わせで計算を表現する。論理型言語は事実とルールを記述し、処理系が自動的に答えを導出する。正解
ウ.関数型言語はグローバル変数を多用して状態を管理し、論理型言語はforループによる繰り返しが主体となる。
エ.手続き型言語は宣言型の典型例であり、PrologやHaskellがその代表。関数型言語はC言語やPascalが代表例である。

解説

3つのパラダイムは「料理の指示書」に例えられる。手続き型は「まず鍋に水を入れ、次に火をつけ…」という手順書。関数型は「この食材からこの料理を作る」という変換の定義。論理型は「カレーとは何か」という知識の宣言。

なぜ イ が正解か

手続き型(C、Python等): 処理の順序(手順)を明示的に記述するプログラミングスタイル。変数への代入や状態変化が中心。関数型(Haskell、Scala等): 数学的な関数として計算を表現。副作用を排除し、同じ入力には必ず同じ出力を返す参照透過性を重視。論理型(Prolog等): 事実(fact)とルール(rule)を宣言し、処理系(推論エンジン)がユニフィケーションと探索によって解を導く。

なぜ ア は間違いか

手続き型と関数型の説明が逆。手続き型は「どう求めるか(how)」、関数型は「何を求めるか(what)」に近い宣言的スタイル。論理型が副作用を多用するという説明も誤り。

なぜ ウ は間違いか

関数型言語は副作用とグローバル変数の排除を理念とする。論理型言語のforループ説明も誤り——論理型は再帰とバックトラッキングで探索する。

なぜ エ は間違いか

Prologは論理型、HaskellとMLは関数型の代表。C言語とPascalは手続き型の代表例。説明が完全に逆転している。

出典: AI生成問題(学習用)