公務人員特種考試計算機大意108 年第 9 題單選題
下列關於程式語言範式(paradigm)的敘述,何者錯誤?
A函數式(functional)範式,程式被設計像數學的函數
B宣告式(declarative)範式,程式使用一組原始函數(primitive functions)去推論新的事實正確答案
C物件導向式(object-oriented)範式,程式處理的是主動的物件(active objects)
D程序式(procedural)範式,程式被視為是主動的人(active agent)去處理被動的物(passive objects)
B正確答案
程式語言四大範式辨析:用「原始函數推論新事實」描述的是邏輯式(logic),不是宣告式。
為什麼答案是 B
錯誤。「使用原始函數推論新事實」描述的是邏輯式(logic)範式(如 Prolog),不是宣告式。宣告式著重「描述要什麼」而非「怎麼做」,範圍較廣。
載入中…
完整詳解
Pro · 無限重點 程式語言四大範式辨析:用「原始函數推論新事實」描述的是邏輯式(logic),不是宣告式。
看到「推論新事實」直接想到 Prolog 邏輯式範式,不是宣告式。宣告式重點在「描述 What 而非 How」。
逐選項分析
A✕
正確。函數式範式(如 Lisp、Haskell)將程式設計成數學函數的組合,強調無副作用、輸入對應輸出。
B✓ 正確
錯誤。「使用原始函數推論新事實」描述的是邏輯式(logic)範式(如 Prolog),不是宣告式。宣告式著重「描述要什麼」而非「怎麼做」,範圍較廣。
C✕
正確。物件導向式(如 Java、C++)中物件是主動的(active),擁有屬性與方法,能主動處理訊息。
D✕
正確。程序式(如 C、Pascal)中程式是主動的代理人(active agent),依序呼叫程序去操作被動的資料物件。
四大程式語言範式對照
| 範式 | 核心概念 | 代表語言 | 主動 vs 被動 |
|---|
| 程序式 Procedural | 依序呼叫程序處理資料 | C、Pascal | 主動人 + 被動物 |
| 物件導向 OO | 物件封裝屬性與方法 | Java、C++ | 主動物件 |
| 函數式 Functional | 像數學函數的組合 | Lisp、Haskell | 無狀態運算 |
| 邏輯式 Logic | 原始函數推論新事實 | Prolog | 事實 + 規則推論 |
B 選項把「邏輯式(logic)範式」的定義偷換成「宣告式(declarative)」。兩者雖然邏輯式屬於宣告式的一種,但「使用原始函數推論新事實」是 Prolog 等邏輯式語言的獨特描述,不能代表整個宣告式範式。