NEO.K / PU程式宇宙基礎
編號PU-2-03
版本v0.1
日期2026-07-27
作者Neo.K with Aletheia
狀態初版完成

下載 PDF ↓回到論文索引 ↗

語法—語意—效果:程式語言的三層存在結構

Syntax, Semantics, and Effects: The Three-Layer Ontology of Programming Languages

論文編號: PU-2-03
系列:「程式宇宙書系」第 2 冊《程式語言的本質》
作者: Neo.K with Aletheia
機構: EveMissLab/一言諾科技有限公司
版本: v0.1
日期: 2026 年 7 月 27 日


摘要

前兩篇分別提出:程式語言不等於文字,文字只是程式結構的一種投影;符號也不等於靜態字元,而是具有輸入、輸出、前後條件、效果、授權、驗證與組合規則的受治理算子。本篇進一步建立程式語言的三層存在結構:

L=Y,M,E\boxed{ \mathcal L = \left\langle \mathcal Y, \mathcal M, \mathcal E \right\rangle }

其中:

本文核心命題是:

SyntaxSemanticsEffects\boxed{ \text{Syntax} \neq \text{Semantics} \neq \text{Effects} }

語法回答「哪些結構可以形成」;語意回答「該結構在問題世界中代表什麼」;效果回答「當結構被執行時,實際改變了哪些數位、制度或物理世界狀態」。

本文將語法定義為合法結構形成空間:

Y=Σ,G,A,B\mathcal Y = \left\langle \Sigma, G, A, B \right\rangle

其中 Σ\Sigma 為符號集合, GG 為形成規則, AA 為抽象結構, BB 為局部邊界與作用域規則。語法合法只表示某一結構能被語言接受,不表示其名稱已解析、世界關係成立、權限合法或效果可承擔。

語意則被定義為從語法結構到問題世界概念、狀態與規則的映射:

yΓ,W=m\llbracket y \rrbracket_{\Gamma,W} = m

其中:

同一語法在不同上下文與問題世界下,可能具有不同語意:

yΓ1,W1yΓ2,W2\llbracket y \rrbracket_{\Gamma_1,W_1} \neq \llbracket y \rrbracket_{\Gamma_2,W_2}

因此,語法名稱不是語意本身。

效果則被定義為語意結構在 Runtime 中造成的可觀測世界差分:

E(m,R,St)=St+1,Events,ExternalEffects,Evidence,Residual\boxed{ \mathcal E(m,R,S_t) = \left\langle S_{t+1}, Events, ExternalEffects, Evidence, Residual \right\rangle }

其中:

本文提出三層合法性:

  1. 語法合法性:結構可被形成與解析;
  2. 語意合法性:結構指向有效世界身份、規則與狀態;
  3. 效果合法性:實際世界差分在權限、責任、風險與證據上可接受。

形式上:

ValidY⇏ValidM⇏ValidE\boxed{ Valid_{\mathcal Y} \not\Rightarrow Valid_{\mathcal M} \not\Rightarrow Valid_{\mathcal E} }

一段程式可以語法正確、型別正確、甚至語意明確,卻因未授權、外部結果不可驗證、效果不可逆或違反治理邊界,而仍不能合法執行。

本文進一步建立「語意不完整」與「效果不完整」概念。傳統編譯器通常在語法與型別層拒絕錯誤,但對下列情形缺乏直接表示:

本文因此提出擴展判定:

Γ;W;P;Sy:T!ϵQ\Gamma;W;P;S \vdash y : T ! \epsilon \triangleright Q

其中:

此判定比傳統:

Γy:T\Gamma\vdash y:T

多保存世界、權限、狀態、效果與後置證據。

本文區分六類效果:

  1. 值效果:產生新值;
  2. 狀態效果:讀寫權威狀態;
  3. 事件效果:建立或發布已發生事實;
  4. 外部效果:呼叫外部數位服務;
  5. 物理效果:作用於設備、資源與實體環境;
  6. 治理效果:授權、撤銷、批准、改規則與改責任。

本文指出,效果不應只被理解為「副作用」。副作用一詞常暗示效果是純計算以外的次要污染,但在真實程式中,付款、寄信、部署、授權、控制設備與記錄研究證據,往往正是程式目的本身。因此本文提出:

EffectAccidental Side Effect\boxed{ \text{Effect} \neq \text{Accidental Side Effect} }

效果是程式如何與世界耦合的正式結構。

本文亦建立「效果保持」與「效果提升」。當高階語意被編譯到低階表示時,效果資訊不應消失。若某一高階節點標記為不可逆外部效果,任何低階生成碼、工作流與 Runtime 都應保留其授權、冪等、補償與證據要求。相反地,低階分析發現的外部寫入、網路呼叫與權限提升,也應回饋至高階語意與視圖。

本文使用條件判斷、資料庫更新、付款、網站發布、AI Agent 工具、醫療處置與物理控制等案例,說明相同語法在不同語意與效果環境中的差異。本文最後提出可證偽研究綱領,包括語法—語意錯配率、語意—效果漂移率、效果簽章完整度、隱藏效果事故率、權限與效果聯合檢查、效果保持、部分成功型別化、Runtime 觀測回饋及 AI 生成程式的三層驗證。

本文為下一篇〈意圖中介表示〉建立語言骨架:自然意圖必須先被轉換為可驗證語意結構,再產生明示效果與多重投影,而不能直接從一句話跳到不可逆世界行動。

關鍵詞: 語法、語意、效果系統、程式語意學、世界差分、權限、後置條件、效果保持


Abstract

This paper develops a three-layer ontology of programming languages:

L=Y,M,E\mathcal L = \left\langle \mathcal Y, \mathcal M, \mathcal E \right\rangle

Syntax determines which structures can be formed. Semantics binds those structures to problem-world concepts, identities, states, and rules. Effects describe the actual digital, institutional, or physical world differences produced by execution.

The paper introduces three levels of validity, an extended typing and effect judgment, six classes of effects, effect preservation across compilation, and bidirectional feedback between high-level semantics and runtime-observed effects.

Keywords: syntax, semantics, effects, effect systems, world difference, programming language ontology


一、問題的提出:能被解析,不代表它真的有意義

例如:

account.close()

這段文字可能:

但仍不知道:

因此,程式語言不能只在語法層理解程式。


二、三層存在結構

本文定義:

L=Y,M,E\boxed{ \mathcal L = \left\langle \mathcal Y, \mathcal M, \mathcal E \right\rangle }

2.1 語法層 Y\mathcal Y

決定合法構造。

2.2 語意層 M\mathcal M

決定構造在問題世界中的身份、關係與規則。

2.3 效果層 E\mathcal E

決定執行後實際產生的狀態、事件、外部效果與證據。

2.4 三層關係

ymRunΔWy \xrightarrow{\llbracket\cdot\rrbracket} m \xrightarrow{Run} \Delta W

文字或視覺結構先被解釋成語意,再由 Runtime 造成世界差分。


三、語法層:合法形成不等於合法世界

本文將語法層定義為:

Y=Σ,G,A,B\mathcal Y = \left\langle \Sigma, G, A, B \right\rangle

3.1 符號集合 Σ\Sigma

包括:

3.2 形成規則 GG

決定:

3.3 抽象結構 AA

語法經解析後形成:

3.4 局部邊界 BB

包括:

3.5 語法合法性

ValidY(y)Valid_{\mathcal Y}(y)

只表示 yy 屬於語言可形成結構。

它不保證:


四、語法錯誤與結構錯誤

4.1 表面語法錯誤

例如:

4.2 結構語法錯誤

即使字元可解析,結構也可能不完整:

4.3 未完成結構

未完成程式可用 Hole 表示:

T\Box_T

Hole 可以攜帶:

4.4 語法應容納形成過程

成熟語言不應只接受完整與錯誤二分,而應支援:

draft
incomplete
unresolved
ambiguous
requires-binding

五、語意層:結構如何指向世界

語意映射可表示為:

yΓ,W=m\llbracket y \rrbracket_{\Gamma,W} = m

5.1 環境 Γ\Gamma

環境不只包含型別與變數,也包括:

5.2 問題世界 WW

同一語法只有在某一問題世界中才具有具體意義。

例如 approve() 可能表示:

5.3 綁定

語意綁定包括:

5.4 語意不是註解

註解可補充說明,但若語意只存在於註解與作者腦中,編譯器、AI 與 Runtime 就無法驗證。


六、指稱、操作與規範語意

6.1 指稱語意

描述結構指向什麼數學或計算對象。

e=v\llbracket e \rrbracket = v

6.2 操作語意

描述程式如何一步步轉移:

e,Se,S\langle e,S\rangle \rightarrow \langle e',S'\rangle

6.3 規範語意

描述:

6.4 世界語意

本文主張完整程式語意應同時包含:

Meaning=Denotation+OperationalBehavior+NormativePosition+WorldBinding\boxed{ Meaning = Denotation + OperationalBehavior + NormativePosition + WorldBinding }

只描述值與步驟,仍不足以表示真實系統。


七、上下文依賴

7.1 同語法異語意

yΓ1,W1yΓ2,W2\llbracket y \rrbracket_{\Gamma_1,W_1} \neq \llbracket y \rrbracket_{\Gamma_2,W_2}

例如:

user.delete()

在不同系統中可能表示:

7.2 上下文必須可見

需要知道:

7.3 隱含上下文風險

同一程式碼在測試與生產環境造成不同效果,通常不是語法差異,而是上下文與 Runtime 差異。


八、語意合法性

本文定義:

ValidM(m)    Bound(m)Typed(m)StateValid(m)RuleConsistent(m)ResponsibilityLocated(m)Valid_{\mathcal M}(m) \iff Bound(m) \land Typed(m) \land StateValid(m) \land RuleConsistent(m) \land ResponsibilityLocated(m)

8.1 身份綁定

引用對象必須存在或被正式標示為未決。

8.2 型別合法

不只資料型別,也包括:

8.3 狀態合法

操作必須符合當前生命週期與版本。

8.4 規則一致

不得在未解決衝突下同時滿足互斥規則。

8.5 責任位置

必須知道哪個模組與主體對語意判定負責。


九、語意等價

兩個語法結構 y1,y2y_1,y_2 可有:

y1y2y_1 \neq y_2

但:

y1Γ,Wy2Γ,W\llbracket y_1 \rrbracket_{\Gamma,W} \equiv \llbracket y_2 \rrbracket_{\Gamma,W}

9.1 重構

變數重命名、控制流改寫或抽象封裝,可能保持語意。

9.2 語意等價的條件

需比較:

9.3 僅值等價不足

兩個程式回傳同一值,但一個寄信、一個不寄信,不能視為完整語意等價。


十、效果層:程式如何改變世界

本文將效果定義為:

E(m,R,St)=St+1,Events,ExternalEffects,Evidence,Residual\boxed{ \mathcal E(m,R,S_t) = \left\langle S_{t+1}, Events, ExternalEffects, Evidence, Residual \right\rangle }

10.1 狀態差分

ΔS=St+1St\Delta S = S_{t+1} - S_t

包括權威狀態的建立、更新、終止、關係變化與版本變更。

10.2 事件

執行可能形成:

10.3 外部效果

包括:

10.4 證據

效果需具有:

10.5 殘差

Residual 表示:


十一、效果不只是副作用

11.1 副作用語言

在純函數中心語言中,狀態與 I/O 常被稱為 side effects。

11.2 真實目的常是效果

對許多系統而言,真正目的就是:

11.3 正式命題

EffectAccidental Side Effect\boxed{ \text{Effect} \neq \text{Accidental Side Effect} }

效果不是純計算旁邊的污染,而是程式與世界耦合的核心。

11.4 純計算與世界耦合

純計算可被視為效果鏈中的可推理內部區域;效果邊界則負責真正世界差分。


十二、六類效果

12.1 值效果

產生新值,但不修改權威世界。

12.2 狀態效果

讀取、建立或修改權威狀態。

12.3 事件效果

形成、發布或確認領域事件。

12.4 外部數位效果

作用於:

12.5 物理效果

作用於:

12.6 治理效果

改變:


十三、效果簽章

本文提出:

ϵ=Read,Write,Emit,Call,Physical,Governance,Reversibility,Evidence\epsilon = \left\langle Read, Write, Emit, Call, Physical, Governance, Reversibility, Evidence \right\rangle

13.1 Read

讀取哪些資料與狀態,是否敏感。

13.2 Write

修改哪些權威狀態。

13.3 Emit

產生哪些事件。

13.4 Call

呼叫哪些外部系統。

13.5 Physical

是否可能造成物理效果。

13.6 Governance

是否改變權限、規則與責任。

13.7 Reversibility

效果是:

13.8 Evidence

完成效果需提供什麼證據。


十四、擴展語言判定

傳統型別判定:

Γy:T\Gamma \vdash y:T

本文擴展為:

Γ;W;P;Sy:T!ϵQ\boxed{ \Gamma;W;P;S \vdash y : T ! \epsilon \triangleright Q }

14.1 Γ\Gamma

名稱、型別、身份與作用域環境。

14.2 WW

問題世界與規則版本。

14.3 PP

主體、權限、委任與批准環境。

14.4 SS

執行前世界狀態。

14.5 TT

值、事件、狀態或證據型別。

14.6 ϵ\epsilon

效果簽章。

14.7 QQ

執行後保證,包括狀態、事件、證據與殘差條件。


十五、三層合法性

15.1 語法合法

ValidY(y)Valid_{\mathcal Y}(y)

15.2 語意合法

ValidM(y)Valid_{\mathcal M} \left( \llbracket y\rrbracket \right)

15.3 效果合法

ValidE(ϵ,P,S,B)Valid_{\mathcal E} \left( \epsilon, P, S, B \right)

其中 BB 是系統責任與安全邊界。

15.4 不可推出

ValidY⇏ValidM⇏ValidE\boxed{ Valid_{\mathcal Y} \not\Rightarrow Valid_{\mathcal M} \not\Rightarrow Valid_{\mathcal E} }

15.5 執行門檻

只有三層均成立,且必要人類選擇完成後,程式才應取得實際執行權。


十六、效果合法性

本文定義:

ValidE(ϵ)    AuthorizedBoundedObservableRecoverableOrAcceptedEvidenceDefinedValid_{\mathcal E}(\epsilon) \iff Authorized \land Bounded \land Observable \land RecoverableOrAccepted \land EvidenceDefined

16.1 授權

主體是否可產生此效果。

16.2 有界

影響是否位於明示作用域、資源與時間範圍。

16.3 可觀測

是否能確認效果已發生或未發生。

16.4 可恢復或已接受

可回復、可補償,或已經過必要主體明示接受不可逆性。

16.5 證據

成功、失敗與未知必須具有可判定證據。


十七、效果組合

若:

y1:T1!ϵ1y_1:T_1!\epsilon_1

以及:

y2:T2!ϵ2y_2:T_2!\epsilon_2

其複合效果不是簡單集合相加。

17.1 順序

ϵ2ϵ1\epsilon_2\circ\epsilon_1

可能不同於:

ϵ1ϵ2\epsilon_1\circ\epsilon_2

17.2 效果依賴

第二效果可能依賴第一效果的證據或狀態。

17.3 效果衝突

例如:

17.4 效果摘要

複合節點應推導:


十八、效果多態與效果限制

18.1 效果多態

高階函式可以接受不同效果算子,但仍保留效果參數:

map:(AB!ϵ)List(A)List(B)!ϵmap : (A\rightarrow B!\epsilon) \rightarrow List(A) \rightarrow List(B)!\epsilon^\ast

18.2 效果限制

某環境可限定:

pure-only
read-only
no-external-call
no-governance-effect
human-approval-required

18.3 沙盒

沙盒不是只隔離程序,也應限制效果能力。

18.4 Agent 工具環境

Agent 的工具集合可視為其可用效果代數,但真正可執行集合仍受權限、預算與人類批准限制。


十九、隱藏效果

19.1 名稱無法顯示效果

save()
process()
execute()
update()

可能隱藏完全不同世界影響。

19.2 Getter 也可能有效果

一個看似讀取的方法可能:

19.3 隱藏效果的後果

19.4 效果透明原則

高風險外部、物理與治理效果必須能在結構、簽章或可查詢元資料中被識別。


二十、效果保持

20.1 高階到低階

設高階結構 hh 被降低為低階表示 ll

Lower(h)=lLower(h)=l

效果保持要求:

Effects(l)Effects(h)Effects(l) \succeq Effects(h)

也就是低階表示不能遺失高階已知的重要效果、權限與風險。

20.2 不可逆效果保持

若高階節點標記:

irreversible
requires-approval
external-evidence-required

生成的程式碼、工作流與部署設定都必須保存這些要求。

20.3 失敗保持

高階語意中的:

不能在低階投影中被壓成普通例外或布林值。

20.4 證據保持

高階完成條件必須映射到實際可觀測證據。

20.5 語意優化的限制

編譯器可重排、合併或消除純計算,但涉及外部效果時,需證明效果順序與觀測結果保持。


二十一、效果提升與 Runtime 回饋

21.1 靜態宣告可能不完整

第三方套件、動態載入與反射可能引入未宣告效果。

21.2 Runtime 觀測

系統可觀測:

21.3 效果提升

若 Runtime 發現:

ObservedEffects(y)DeclaredEffects(y)ObservedEffects(y) \supset DeclaredEffects(y)

就應建立差異:

Δϵ=ObservedEffectsDeclaredEffects\Delta\epsilon = ObservedEffects - DeclaredEffects

並回饋:

21.4 宣告與觀測雙層

effects:
  declared:
    - "read-order"
  observed:
    - "read-order"
    - "write-access-log"
    - "call-external-analytics"

21.5 未宣告效果

未宣告效果不必然惡意,但必須被審核,因為它可能改變隱私、費用、權限與恢復條件。


二十二、部分成功與效果型別

22.1 單一回傳不足

外部工作流可能同時包含:

22.2 效果結果型別

可表示為:

EffectResult=Success+Rejected+Partial+Unknown+Compensating+IrrecoverableEffectResult = Success + Rejected + Partial + Unknown + Compensating + Irrecoverable

22.3 Partial

partial:
  completed:
    - "payment-authorized"
  failed:
    - "inventory-reservation"
  unknown:
    - "notification-delivery"

22.4 Unknown

結果未知時,語言應禁止未經查詢的重複不可逆效果。

22.5 類型化恢復

不同結果型別只能接到相容恢復算子:


二十三、語法糖與效果糖

23.1 語法糖

語法糖改變表達便利,但理論上不改變核心語意。

23.2 效果糖

某些簡寫隱藏複雜效果,例如:

publish(site)

可能展開為:

validate
build
upload
deploy
verify
shift-traffic
notify

23.3 危險簡寫

如果簡寫隱藏:

就會降低世界可理解性。

23.4 安全語法糖

安全簡寫應能展開並查看完整效果圖,而不是永久遮蔽。


二十四、案例一:條件判斷

語法:

if balance >= amount:
    approve()

24.1 語法層

條件與呼叫合法。

24.2 語意層

需知道:

24.3 效果層

approve() 可能:

同一語法外觀可能跨越完全不同效果層級。


二十五、案例二:資料庫更新

UPDATE users SET active = false WHERE id = ?;

25.1 語法

SQL 合法。

25.2 語意

active=false 可能表示:

25.3 效果

還可能需要:

單一欄位更新不能自動代表完整世界效果。


二十六、案例三:付款

語法:

await charge(card, amount)

26.1 語意

需要綁定:

26.2 效果

包括:

26.3 合法性

即使函式型別正確,若沒有授權、冪等與結果查詢,仍不可安全執行。


二十七、案例四:網站發布

語法:

publish website

27.1 語意展開

27.2 效果鏈

build
→ upload
→ deploy
→ verify
→ shift traffic
→ expose public content

27.3 不可逆部分

公開內容可能已被:

回滾部署不等於撤回所有世界效果。


二十八、案例五:AI Agent 工具

工具宣告:

delete_file(path)

28.1 語法與型別

只需要一個路徑字串。

28.2 語意

需知道:

28.3 效果

28.4 Agent 執行門檻

需要效果預覽、權限、備份與必要的人類批准,而非只通過參數型別。


二十九、案例六:醫療處置

語法節點:

administer-treatment

29.1 語意

必須綁定:

29.2 效果

物理效果可能不可逆,且不能只依系統內部成功確認。

29.3 證據

需要:


三十、案例七:物理控制

door.unlock()

30.1 語法

方法呼叫合法。

30.2 語意

需知道:

30.3 效果

命令送出不代表門鎖已打開。

需要感測確認與失敗狀態:

unlock-command-sent
unlock-confirmed
unlock-outcome-unknown
mechanical-failure

30.4 治理效果

開門也改變了物理空間的可進入權限。


三十一、主要失敗模式

  1. 語法正確即程式正確: 可解析被誤認為完整合法。
  2. 型別正確即世界合法: 忽略狀態、權限與規則。
  3. 名稱即語意: 不做世界身份與責任綁定。
  4. 語意只存在註解: 編譯器、AI 與 Runtime 無法驗證。
  5. 上下文隱形: 版本、環境、特性開關與規則來源缺席。
  6. 值等價即程式等價: 忽略外部效果與證據。
  7. 效果等於副作用: 將程式真正目的降為次要污染。
  8. 普通函式隱藏高風險效果: 付款、發布與治理無法被辨識。
  9. Getter 純度假設: 讀取操作暗中產生寫入、費用與追蹤。
  10. 授權在語言外部: 結構取得執行權前無法聯合檢查。
  11. 部分成功布林化: 多階段世界狀態被壓成 true/false。
  12. 結果未知錯誤化: 超時後直接重試不可逆效果。
  13. 效果順序無語意: 編譯器或開發者錯誤重排外部操作。
  14. 效果集合簡單相加: 忽略順序、衝突與相依。
  15. 低階投影遺失效果: 高階不可逆與批准要求在生成碼中消失。
  16. Runtime 未宣告效果不回饋: 實際行為長期偏離語意模型。
  17. 語法糖隱藏責任: 一行簡寫遮蔽多階段失敗與補償。
  18. 沙盒只隔離程序: 未限制資料、外部與治理效果。
  19. AI 只做語法驗證: 生成碼可編譯卻越權或不可恢復。
  20. 物理效果無感測證據: 命令送出被當成世界完成。
  21. 治理效果不可見: 權限與規則修改無法進入效果分析。
  22. 語意與效果版本分離: 語意宣告未隨 Runtime 行為更新。

三十二、可證偽研究綱領

32.1 語法—語意錯配率

統計可解析、可型別檢查的結構中,有多少仍指向錯誤身份、狀態、規則或責任。

32.2 語意—效果漂移率

比較宣告語意與 Runtime 真實效果:

RME=observed effects absent from semantic declarationobserved effectsR_{ME} = \frac{ |\text{observed effects absent from semantic declaration}| }{ |\text{observed effects}| }

32.3 效果簽章完整度

對效果八元簽章評分,研究完整度與事故、重試錯誤、越權及恢復時間的關係。

32.4 隱藏效果事故率

統計看似純粹或低風險操作中,由未宣告網路、寫入、費用、發布或治理效果造成的事故。

32.5 權限—效果聯合檢查

比較只做權限中介層檢查,以及把權限與效果簽章納入語言判定的系統。

32.6 部分成功型別化

測量使用正式 Partial/Unknown/Compensating 型別,是否降低盲目重試與錯誤完成敘事。

32.7 效果保持

對高階語意到低階程式碼、工作流與部署投影,檢查不可逆性、批准、失敗與證據是否保持。

32.8 效果重排安全性

比較只依資料依賴重排,以及同時考慮效果順序、外部觀測與治理條件的最佳化。

32.9 Runtime 回饋閉環

測量觀測到未宣告效果後,能否自動建立差異、阻止執行、更新模型或觸發審核。

32.10 語意差分預測

比較文字 diff、AST diff、語意 diff 與效果 diff 對實際世界影響的預測能力。

32.11 AI 三層驗證

比較 AI 直接生成可編譯程式,以及依序通過語法、語意、效果驗證後再執行的錯誤率。

32.12 沙盒效果約束

測量只隔離 CPU/檔案程序,與同時限制網路、資料、費用、權限及治理效果的沙盒差異。

32.13 外部證據完整率

統計系統宣稱完成的外部與物理效果中,有多少具有足夠回執、感測或主體接受證據。

32.14 三層教學實驗

比較只教語法與型別,及同時教授問題世界語意和效果簽章的學習者,在真實系統設計上的表現。


三十三、本文的二十四項命題

  1. 程式語言具有語法、語意與效果三層存在。
  2. 語法回答哪些結構可以形成,不回答世界是否合理。
  3. 語意將結構綁定到問題世界身份、狀態、規則與責任。
  4. 效果描述 Runtime 對數位、制度與物理世界造成的差分。
SyntaxSemanticsEffects\text{Syntax} \neq \text{Semantics} \neq \text{Effects}
  1. 語法合法不推出語意合法,語意合法不推出效果合法。
  2. 同一語法在不同上下文與世界中可具有不同語意。
  3. 語意不只包含值與操作步驟,也包含規範位置與世界綁定。
  4. 兩個程式回傳同值,不代表具有相同語意與效果。
  5. 效果不是純計算之外的偶然副作用,而是程式與世界耦合的正式結構。
  6. 效果至少應區分值、狀態、事件、外部、物理與治理六類。
  7. 完整語言判定應包含世界、狀態、權限、效果與後置證據。
  8. 效果合法性要求授權、有界、可觀測、可恢復或已接受,以及證據明確。
  9. 複合效果不能只以集合聯集描述,還需保存順序、依賴、衝突與補償。
  10. 高階函式與 Agent 工具應保留效果多態與效果限制。
  11. 部分成功、結果未知與補償中應成為正式效果結果型別。
  12. 高階語意降低為低階表示時,不得遺失不可逆性、批准、失敗與證據。
  13. Runtime 發現未宣告效果時,應回饋語意模型與治理。
  14. 宣告效果與觀測效果的差異,是安全、隱私與維護的重要訊號。
  15. 語法糖可以簡化表達,但不能永久遮蔽高風險世界責任。
  16. 物理命令與治理操作必須具有比一般值運算更嚴格的效果判定。
  17. AI 生成程式不能只通過語法與型別檢查。
  18. 真正的程式審查應同時審查結構、意義與世界差分。
程式語言不是只告訴機器如何形成指令,\boxed{ \text{程式語言不是只告訴機器如何形成指令,} } 而是必須同時說明這些指令代表什麼,\boxed{ \text{而是必須同時說明這些指令代表什麼,} } 以及它們取得執行權後,\boxed{ \text{以及它們取得執行權後,} } 世界將因此發生什麼。\boxed{ \text{世界將因此發生什麼。} }

三十四、與前後篇的關係

34.1 承接 PU-2-01

PU-2-01 將文字定位為語言的一種投影。

本篇進一步指出,無論文字或視覺投影,都必須通過語法、語意與效果三層。

34.2 承接 PU-2-02

PU-2-02 將符號定義為受治理算子。

本篇分解算子的三個核心面向:

34.3 承接第 1 冊

第 1 冊建立的狀態、事件、責任、契約、失敗與恢復,現在可以正式進入語意環境與效果簽章。

34.4 銜接 PU-2-04

下一篇將建立意圖中介表示:

IntentSemanticIREffectPlanExecutableProjectionIntent \rightarrow SemanticIR \rightarrow EffectPlan \rightarrow ExecutableProjection

集中處理:


三十五、結論:語言必須把「能寫」推進到「能合法改變世界」

傳統語言工具首先判斷程式能否被解析。

型別系統進一步判斷值與結構能否正確組合。

這些能力極為重要,但對真實世界程式仍不完整。

因為一段程式即使:

仍可能:

所以程式語言的合法性不能停在語法層。

本文將完整語言判定收束為:

Program Validity=Syntactic Validity+Semantic Validity+Effect Legitimacy\boxed{ \text{Program Validity} = \text{Syntactic Validity} + \text{Semantic Validity} + \text{Effect Legitimacy} }

而程式執行則是:

Execution=Meaning Bound to a World+Authority to Act+Observable World Difference\boxed{ \text{Execution} = \text{Meaning Bound to a World} + \text{Authority to Act} + \text{Observable World Difference} }

語法提供可構造性。

語意提供可理解性。

效果提供世界耦合。

三者缺一,程式語言都無法成為完整的世界建構語言。

如果只有語法,語言只是合法符號機器。

如果只有語意,語言只是尚未執行的世界描述。

如果只有效果而缺少語意與責任,系統就可能成為無法解釋與治理的世界修改器。

因此,第 2 冊至此形成新的中心結構:

SymbolSyntaxSemanticsEffectsWorld Difference\boxed{ \text{Symbol} \rightarrow \text{Syntax} \rightarrow \text{Semantics} \rightarrow \text{Effects} \rightarrow \text{World Difference} }

本文的最終命題是:

好的程式語言,\boxed{ \text{好的程式語言,} } 不只拒絕無法形成的句子,\boxed{ \text{不只拒絕無法形成的句子,} } 也應拒絕無法理解、無權執行、\boxed{ \text{也應拒絕無法理解、無權執行、} } 無法驗證或無法承擔的世界效果。\boxed{ \text{無法驗證或無法承擔的世界效果。} }

附錄 A:三層語言節點

language_node:
  node_id: "publish-site"

  syntax:
    node_type: "effect-action"
    required_children:
      - "site"
      - "release"
      - "environment"

  semantics:
    world_role: "make approved release publicly accessible"
    responsibility_module: "deployment"
    preconditions:
      - "release is approved"
      - "environment is production"

  effects:
    writes:
      - "deployment-state"
    external:
      - "upload artifact"
      - "shift public traffic"
    irreversible:
      - "content may be externally cached"
    evidence:
      - "deployment receipt"
      - "public journey verification"

附錄 B:擴展判定格式

language_judgment:
  expression: "AuthorizePayment(order-932)"

  environment:
    world: "commerce-v4"
    state_version: 18
    actor: "order-module"
    permissions:
      - "request-payment-authorization"

  type:
    output: "PaymentAuthorizationResult"

  effects:
    reads:
      - "authoritative-order-total"
    external_calls:
      - "payment-provider"
    events:
      - "PaymentAuthorized"
      - "PaymentDeclined"
      - "PaymentOutcomeUnknown"
    reversibility: "compensatable"

  postconditions:
    evidence_required:
      - "provider-receipt"

附錄 C:效果差異

effect_diff:
  node: "load-user-profile"

  declared:
    - "read user profile"

  observed:
    - "read user profile"
    - "write last-accessed-at"
    - "call analytics provider"

  undeclared:
    - "write last-accessed-at"
    - "call analytics provider"

  governance:
    review_required: true
    privacy_impact: true

附錄 D:部分成功型別

effect_result:
  kind: "partial"

  completed:
    - effect: "release-deployed"
      evidence: "deployment-889"

  failed:
    - effect: "mobile-smoke-test"
      reason: "authentication failure"

  unknown:
    - effect: "dns-propagation"

  allowed_next:
    - "hold-traffic"
    - "rollback-deployment"
    - "human-review"

  forbidden_next:
    - "declare-publication-complete"

附錄 E:第 2 冊六篇位置

  1. PU-2-01 程式語言不等於文字:結構、語意與執行的基本分離
  2. PU-2-02 符號作為算子:從靜態字元到可組合計算閉包
  3. PU-2-03 語法—語意—效果:程式語言的三層存在結構
  4. PU-2-04 意圖中介表示:從自然意圖到多重可執行投影
  5. PU-2-05 可編譯世界:程式執行作為世界狀態差分
  6. PU-2-06 後文本程式語言:意圖、結構、驗證與物理耦合的統一框架

參考文獻

Neo.K/EveMissLab 相關理論

  1. Neo.K with Aletheia,《程式語言不等於文字:結構、語意與執行的基本分離》,2026。
  2. Neo.K with Aletheia,《符號作為算子:從靜態字元到可組合計算閉包》,2026。
  3. Neo.K with Aletheia,《程式不等於程式碼:可執行問題模型的基本定義》,2026。
  4. Neo.K with Aletheia,《資料—狀態—事件—行動:程式系統的四元動力結構》,2026。
  5. Neo.K with Aletheia,《責任、模組與契約:從檔案分類到系統邊界》,2026。
  6. Neo.K with Aletheia,《失敗也是程式:驗證、可觀測、恢復與長期維護》,2026。
  7. Neo.K with Aletheia,《可編譯世界:從程式執行到世界狀態演化》,2026。

一般理論背景

  1. Scott, D. and Strachey, C., “Toward a Mathematical Semantics for Computer Languages,” 1971.
  2. Plotkin, G. D., “A Structural Approach to Operational Semantics,” 1981.
  3. Hoare, C. A. R., “An Axiomatic Basis for Computer Programming,” 1969.
  4. Milner, R., “A Theory of Type Polymorphism in Programming,” 1978.
  5. Pierce, B. C., Types and Programming Languages, 2002.
  6. Reynolds, J. C., Theories of Programming Languages, 1998.
  7. Moggi, E., “Notions of Computation and Monads,” 1991.
  8. Wadler, P., “The Essence of Functional Programming,” 1992.
  9. Plotkin, G. D. and Power, J., “Algebraic Operations and Generic Effects,” 2003.
  10. Koka language documentation and research on row-polymorphic effect types.
  11. Bauer, A. and Pretnar, M., “Programming with Algebraic Effects and Handlers,” 2015.
  12. Nielson, F., Nielson, H. R., and Hankin, C., Principles of Program Analysis, 1999.
  13. Winskel, G., The Formal Semantics of Programming Languages, 1993.

版本紀錄

v0.1 — 2026-07-27