首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

冒號與他的學生們(六):基本範式——命令式與宣告式的兩種世界

     編輯:Java 相關知識

冒號將編程範式分為兩大陣營:

  • 命令式(過程式):馮·紐曼機抽象,「怎麼做」,強調行動導向,演算法顯性、目標隱性
  • 宣告式:人腦思維抽象,「做什麼」,強調目標驅動,目標顯性、演算法隱性

宣告式再分函數式(代數表達式變換)與邏輯式(邏輯推理)。

階乘三種寫法對比

// C:命令式迭代
int factorial(int n) {
    int f = 1;
    for (; n > 0; --n) f *= n;
    return f;
}

// Lisp:函數式遞歸定義
(defun factorial(n)
  (if (= n 0) 1
      (* n (factorial (- n 1)))))

// Prolog:邏輯式斷言
factorial(0,1).
factorial(N,F) :- M is N-1, factorial(M,Fm), F is N*Fm.

句號一語中的:「C 給出演算法,Lisp 描述遞歸定義,Prolog 陳述斷言。」

變數本質差異

命令式變數宣告式變數
記憶體位址抽象代數符號抽象
儲存內容可變約束條件下的允許值
= 表賦值= 表約束/等式
i = i + 1 合法i = i + 1 不合法(除非反證法)

宣告式無賦值、無副作用、無記憶體管理煩惱,大幅減少 Bug 來源。

兩大陣營滲透融合

  • 非純粹宣告式語言提供賦值/流程控制
  • 命令式語言吸收函數式特性(Lambda、Stream、高階函數)
  • 趨勢:命令式語言融入宣告式元素,提升表達力

適用領域分工

  • 宣告式:AI、符號處理、資料庫、編譯器(數理邏輯密集)
  • 命令式:互動式、事件驅動、業務邏輯複雜的用戶端應用

三大基本範式本質對照

範式程式視為輸入輸出設計執行
命令式自動機初始狀態最終狀態設計指令指令執行
函數式數學函數自變量因變量設計函數表達式變換
邏輯式邏輯證明題設結論設計命題邏輯推理

冒號寬慰:理論較深不必強求,種子已撒下,靜待發芽。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved