# 程式語言設計風格的多軸形態空間：從表面語法到計算本體的統一描述框架

## 摘要

傳統程式語言研究經常以命令式、函數式、物件導向、邏輯式與資料流等「程式設計範式」區分語言。然而，這類分類主要描述計算如何被組織，尚不足以完整刻畫一種程式語言的設計風格。隨著視覺化編程、張量語言、自然語言介面、AI 輔助程式生成、Agent 系統、可適應中介表示與世界狀態程式逐漸出現，程式語言的差異已不再只存在於語法和控制流程，而擴展到表達承載面、基本計算單位、程式拓撲、控制權分配、語義確定性、狀態時間模型、人機耦合、自演化能力與多重投影方式。

本文提出「程式語言設計風格的多軸形態空間」，將程式語言視為由符號、結構、語義、組合、執行、約束、狀態、意圖、投影與治理所構成的複合系統。本文主張，設計風格不是單一範式標籤，而是一組在多個軸向上的結構位置。藉由此框架，可以比較傳統文字語言、陣列與張量語言、視覺化語言、AI 原生語言、格子式操作表面以及未來世界狀態語言，並避免把「新語法」、「新介面」、「新執行模型」與「新程式本體」混為一談。最後，本文將 EML、NOVA 與格子語言重新置入同一形態空間，說明三者分別對應語義原生層、張量—算子原生層與自由封裝—多投影操作層，從而形成一條由程式碼走向意圖與世界狀態的語言演化路徑。

**關鍵詞：** 程式語言設計、程式設計範式、語言形態學、AI 原生程式語言、多重投影、格子語言、張量語言、世界狀態程式

---

## 一、問題的提出

程式語言史經常被描述為一連串範式的演進：從機器碼與組合語言，進入高階命令式語言，再出現函數式、物件導向、邏輯式、資料流式與反應式語言。這種敘述具有歷史與教學價值，但它也帶來一個限制：研究者容易把「程式語言設計風格」縮減為「程式設計範式」。

然而，一種語言的風格不只由它是否允許函數、物件、規則或可變狀態決定。兩種同為函數式的語言，可能在符號密度、型別約束、求值策略、執行環境、錯誤模型與互動方式上完全不同；兩種同為視覺化語言的系統，也可能一個只是把文字 AST 畫成積木，另一個則真正把空間關係提升為可執行語義。類似地，一種允許自然語言輸入的系統，不一定已經形成自然語言原生程式本體；它也可能只是以自然語言包裝傳統函式呼叫。

因此，若要重新研究程式語言設計，就必須先回答下列問題：

1. 程式語言的「設計風格」究竟由哪些層次構成？
2. 不同語言之間的差異，如何超越單一範式標籤而被比較？
3. 何時只是表面語法改變，何時已經發生計算本體轉換？
4. AI、Agent、張量、視覺空間與世界狀態進入語言後，既有分類還是否足夠？
5. 同一個程式若可同時投影為文字、圖形、格子與自然語言，哪一個才是程式本體？

本文的核心主張是：

> 程式語言設計風格不是一個標籤，而是一個多軸位置；不是單一語法選擇，而是整個語言系統對「什麼是程式、誰控制執行、如何確定語義、如何承載狀態」所作出的聯合決定。

---

## 二、程式語言的擴展定義

為避免把程式語言等同於語法與編譯器，本文將一種程式語言表示為：

$$
\mathcal{L}
=
(\Sigma,\Gamma,\mathcal{M},\mathcal{C},\mathcal{E},\mathcal{T},\mathcal{S},\mathcal{I},\mathcal{V},\mathcal{G})
$$

其中：

- $\Sigma$ ：表面符號與輸入系統；
- $\Gamma$ ：程式結構、連接關係與拓撲；
- $\mathcal{M}$ ：語義模型；
- $\mathcal{C}$ ：組合、抽象與封裝機制；
- $\mathcal{E}$ ：求值、執行與調度模型；
- $\mathcal{T}$ ：型別、約束、效果與合法性系統；
- $\mathcal{S}$ ：狀態、時間、事件與歷史模型；
- $\mathcal{I}$ ：意圖表達、人機互動與外部輸入模型；
- $\mathcal{V}$ ：程式的可視化、投影與承載介面；
- $\mathcal{G}$ ：語言演化、治理、版本與自修改機制。

在傳統語言理論中，研究重心通常集中於 $\Sigma$ 、 $\Gamma$ 、 $\mathcal{M}$ 、 $\mathcal{E}$ 與 $\mathcal{T}$ 。但進入 AI 原生與多模態計算時代後， $\mathcal{I}$ 、 $\mathcal{V}$ 與 $\mathcal{G}$ 不再只是外部工具，而逐漸成為語言本身的組成部分。

由此可以把程式語言設計風格定義為：

$$
\mathfrak{S}(\mathcal{L})
=
\Phi(\Sigma,\Gamma,\mathcal{M},\mathcal{C},\mathcal{E},\mathcal{T},\mathcal{S},\mathcal{I},\mathcal{V},\mathcal{G})
$$

其中 $\Phi$ 不是把所有結構壓縮成單一分數，而是將語言映射到一個多維形態空間。

---

## 三、設計風格與程式設計範式的區別

程式設計範式回答的主要問題是：

> 計算應如何被組織？

例如：

- 命令式以狀態修改與指令序列組織計算；
- 函數式以函數組合與值轉換組織計算；
- 物件導向以封裝實體及其行為組織計算；
- 邏輯式以關係、事實與推導規則組織計算；
- 資料流式以依賴關係與資料傳播組織計算。

但設計風格回答的是更大的問題集合：

- 程式由什麼表示？
- 哪些對象是一級公民？
- 程式的形狀是線性、樹狀、圖狀、空間化還是場式？
- 人類、編譯器、執行時與 AI 如何分配控制權？
- 語義是形式確定、上下文依賴還是機率協商？
- 程式能否依硬體與任務自我調整？
- 同一程式能否具有多個等價投影？

因此，範式只是設計風格的一部分。可以寫成：

$$
\text{Programming Paradigm}
\subsetneq
\text{Language Design Style}
$$

這個區分可以避免兩種常見錯誤。第一，把語法外觀差異誤認為新的範式；第二，把真正的程式本體轉換誤認為單純的新介面。

---

## 四、程式語言設計風格的十個核心軸

本文提出十個第一版核心軸。每一條軸都不是絕對離散分類，而是可以具有中間狀態、混合結構與情境切換。

### 4.1 表達承載軸

此軸描述程式主要以何種表面存在：

$$
\text{線性文字}
\rightarrow
\text{高密度符號}
\rightarrow
\text{圖形區塊}
\rightarrow
\text{空間結構}
\rightarrow
\text{多模態世界}
$$

線性文字以字元順序為主要承載；高密度符號語言以符號壓縮大量運算；圖形語言以節點、積木與連線表示結構；空間語言則允許位置、鄰接、邊界和方向本身承載語義；多模態世界語言進一步把物件、場景、聲音、動作與環境狀態納入程式表面。

需要注意的是，表面承載改變不一定代表程式本體改變。若視覺化積木只是 AST 的圖像化投影，則它主要改變 $\mathcal{V}$ ；若空間位置會直接影響求值與依賴關係，則它同時改變 $\Gamma$ 與 $\mathcal{M}$ 。

### 4.2 基本計算單位軸

每一種語言都隱含回答：「什麼才是最自然的一次計算？」

其歷史變化可抽象為：

$$
\text{指令}
\rightarrow
\text{程序}
\rightarrow
\text{函數}
\rightarrow
\text{物件}
\rightarrow
\text{關係}
\rightarrow
\text{陣列／張量}
\rightarrow
\text{事件／Agent}
\rightarrow
\text{意圖／世界狀態}
$$

真正重大的語言革命，往往不是新增語法糖，而是改變基本計算單位。例如，陣列語言的重要性不只在符號簡潔，而在於它把整體陣列運算提升為預設認知單位。張量原生語言則可能進一步將形狀、維度、廣播、微分與算子合法性變成核心語義，而不是外部函式庫約定。

### 4.3 程式拓撲軸

程式結構可由下列拓撲逐步擴展：

$$
\text{序列}
\rightarrow
\text{樹}
\rightarrow
\text{有向圖}
\rightarrow
\text{動態網路}
\rightarrow
\text{場}
$$

大多數文字語言的表面是序列，語法分析後形成樹，編譯與執行時再形成控制流圖或資料流圖。然而，使用者通常不能直接把圖拓撲當作主要程式表面。

空間或格子語言則可能讓拓撲本身成為可操作對象：

- 區域表示封裝；
- 邊界表示權限；
- 端口表示允許的資料或控制交換；
- 鄰接表示低成本耦合；
- 距離表示延遲、作用域或語義弱化；
- 重疊表示共享資源或多重隸屬。

當拓撲不再只是編譯器內部資料結構，而成為語言公開語義的一部分時，語言就發生了較深層的形態轉換。

### 4.4 控制權分配軸

此軸描述誰決定執行路徑與細節：

$$
\text{程式設計者完全指定}
\rightarrow
\text{編譯器推導}
\rightarrow
\text{執行時調度}
\rightarrow
\text{AI 規劃}
\rightarrow
\text{環境共同決定}
$$

傳統命令式程式要求開發者直接指定大量步驟。宣告式語言將部分控制權交給求解器或查詢引擎。平行與分散式系統把部分控制權交給運行時。AI 原生語言則可能允許人類只指定目標、約束與驗證條件，再由 Agent 生成執行計畫。

因此，AI 原生程式不應被簡化為「AI 幫忙寫程式碼」，而應描述為控制權重新分配：

$$
\mathcal{K}
=
(K_h,K_c,K_r,K_a,K_e)
$$

其中 $K_h$ 、 $K_c$ 、 $K_r$ 、 $K_a$ 、 $K_e$ 分別表示人類、編譯器、執行時、AI 與環境所擁有的控制權。語言設計的問題不只是提高自動化，而是決定這些控制權如何轉移、撤回、驗證與追責。

### 4.5 語義確定性軸

語義可分布於：

$$
\text{形式確定}
\rightarrow
\text{上下文依賴}
\rightarrow
\text{機率推斷}
\rightarrow
\text{互動協商}
$$

傳統編程追求同一程式在既定環境中具有明確語義。自然語言與生成模型則帶來歧義、概率性與上下文依賴。若直接把模糊語句等同於可執行程式，系統將難以保證安全與可重現性。

因此，AI 原生語言需要建立分層語義鏈：

$$
I_n
\xrightarrow{\rho}
S_f
\xrightarrow{\kappa}
P_e
\xrightarrow{\nu}
R
$$

其中：

- $I_n$ 是自然語言或多模態意圖；
- $S_f$ 是形式化規格；
- $P_e$ 是可執行程式；
- $R$ 是經驗證結果；
- $\rho$ 是意圖規範化；
- $\kappa$ 是編譯或合成；
- $\nu$ 是執行與驗證。

語義可以在上游保持柔性，但越接近權威執行層，就越需要明確約束。

### 4.6 狀態與時間軸

傳統程式常以指令順序或可變記憶體表示時間。更廣義的語言可能使用事件流、資料流、反應式狀態、版本歷史或世界線。

可將程式執行抽象為：

$$
W_t
\xrightarrow{\mathcal{O}_t}
W_{t+1}
$$

其中 $W_t$ 是時刻 $t$ 的世界狀態， $\mathcal{O}_t$ 是作用於該狀態的算子。當語言把狀態歷史、分支、回滾、模擬與多世界線納入核心時，程式不再只是輸入到輸出的函數，而是對狀態宇宙的受約束轉換。

這使程式語言與模擬器、遊戲引擎、數位孿生、Agent 世界和世界模型逐漸靠近。

### 4.7 抽象與封裝軸

傳統封裝單位包括函數、類別、模組與套件。AI 原生與世界程式還可能需要：

- 意圖封裝；
- 能力封裝；
- 行為封裝；
- Skill 封裝；
- 動態區域封裝；
- 權限邊界；
- 可重新偶合的語義單元。

可將一個 Skill 表示為：

$$
\mathcal{H}
=
(D,I,O,C,V,R)
$$

其中 $D$ 是適用領域， $I$ 是允許輸入， $O$ 是輸出結構， $C$ 是可調用能力， $V$ 是驗證條件， $R$ 是失敗與回復規則。

這種封裝已不只是程式碼重用，而是把「一類意圖如何被轉換為受控行動」封裝起來。

### 4.8 人類—AI 耦合軸

人機編程關係可表示為：

$$
\text{人類完整撰寫}
\rightarrow
\text{AI 補全}
\rightarrow
\text{AI 生成、人類審核}
\rightarrow
\text{共同編程}
\rightarrow
\text{人類提供意圖與治理}
$$

但耦合程度不能只用 AI 生成程式碼的比例衡量。更重要的是：

- 人類能否理解 AI 生成的結構；
- AI 是否能解釋轉譯過程；
- 權威語義是否可追溯；
- 驗證責任如何分配；
- 人類能否中止、修改與撤銷行動。

因此，人機耦合應同時包含生成耦合、理解耦合、控制耦合與責任耦合。

### 4.9 自演化與適應軸

多數語言的核心規格是靜態的，但執行器與編譯器會最佳化。未來語言可能進一步根據硬體、資料分布、任務、使用者習慣與運行歷史動態調整表達和執行策略。

為避免語義失控，可以採用三層結構：

$$
\mathcal{L}_{\text{core}}
\subset
\mathcal{L}_{\text{adaptive-IR}}
\subset
\mathcal{L}_{\text{dynamic-surface}}
$$

其中：

- $\mathcal{L}_{\text{core}}$ 保持穩定，定義權威語義；
- $\mathcal{L}_{\text{adaptive-IR}}$ 可依硬體與任務重組；
- $\mathcal{L}_{\text{dynamic-surface}}$ 可依使用者、領域與情境生成不同表達。

這種結構允許語言具備適應性，又不必放棄可驗證性。

### 4.10 多重投影軸

未來程式可能不再等同於單一原始碼檔案，而由一個權威結構產生多種投影：

$$
\pi_i(P^\ast)=P_i
$$

其中 $P^\ast$ 是權威程式本體， $P_i$ 可以是：

- 文字原始碼；
- 圖形流程；
- 格子空間；
- 自然語言說明；
- 動畫執行軌跡；
- 型別與效果視圖；
- 驗證證書；
- 世界狀態差異。

若使用者修改某一投影，理想系統不應直接覆寫其他表面，而是產生回寫映射：

$$
\delta_i:P_i\rightarrow\Delta P^\ast
$$

系統先檢查修改是否可逆、是否破壞其他投影、是否違反權限，再決定是否更新 $P^\ast$ 。這使多重介面不再是彼此分離的編輯器，而成為同一程式本體的受控視角。

---

## 五、程式語言風格向量與比較方法

令一種語言的設計風格表示為：

$$
\mathbf{s}(\mathcal{L})
=
(s_1,s_2,\ldots,s_{10})
$$

每一個 $s_i$ 對應前述軸向。這些分量不必都是純數值；某些可以是有序尺度，某些是集合、圖結構或概率分布。為了進行近似比較，可以使用標準化嵌入：

$$
\psi:\mathfrak{S}(\mathcal{L})\rightarrow\mathbb{R}^n
$$

再定義加權風格距離：

$$
D(\mathcal{L}_a,\mathcal{L}_b)
=
\left(
\sum_{i=1}^{n}
\omega_i
\left|
\psi_i(\mathcal{L}_a)-\psi_i(\mathcal{L}_b)
\right|^p
\right)^{1/p}
$$

其中 $\omega_i$ 表示研究情境中各軸的重要性。

例如，在教學語言比較中，表達承載、錯誤可視性與互動模型可能具有較高權重；在高效能科學計算中，基本計算單位、型別約束、硬體映射與執行模型更重要；在 Agent 語言中，控制權、語義確定性、能力封裝與治理結構則應獲得較高權重。

因此，不存在脫離任務的單一「最好語言」。更合理的判斷是：

$$
\mathcal{L}^{\ast}
=
\arg\min_{\mathcal{L}}
D\bigl(\mathfrak{S}(\mathcal{L}),\mathfrak{S}_{\text{target}}\bigr)
$$

即尋找最接近目標任務風格需求的語言。

---

## 六、四種不同層級的語言創新

多軸框架可以將語言創新區分為四個層級。

### 6.1 表面創新

只改變語法、關鍵字、符號或編輯介面，而核心語義與執行模型基本不變。

$$
\Delta\Sigma\neq 0,
\qquad
\Delta\mathcal{M}\approx 0
$$

這類創新可能仍有重要價值，例如降低學習成本或提高密度，但不宜直接宣稱形成新計算範式。

### 6.2 組織創新

改變抽象、模組、控制流、資料流或程式拓撲，但仍可相對直接編譯回既有語言模型。

$$
\Delta\Gamma\neq 0
\quad\text{或}\quad
\Delta\mathcal{C}\neq 0
$$

### 6.3 執行創新

改變求值、調度、資源映射、控制權或狀態時間模型。

$$
\Delta\mathcal{E}\neq 0
\quad\text{或}\quad
\Delta\mathcal{S}\neq 0
$$

### 6.4 本體創新

改變「什麼是程式」、「什麼是一級計算對象」或「程式與世界的關係」。

$$
\Delta\mathcal{M}
\neq 0,
\qquad
\Delta\mathcal{I}
\neq 0,
\qquad
\Delta\mathcal{V}
\neq 0
$$

例如，把程式本體從單一文字檔案改為可多重投影的權威結構，或把基本單位從函數改為意圖—能力—驗證閉環，都屬於本體層級的轉換。

這四層並非價值排序。表面創新可能極具實用性，本體創新也可能因缺乏工具與治理而無法落地。其作用是提供較精確的研究語言。

---

## 七、EML、NOVA 與格子語言的重新定位

在多軸形態空間中，EML、NOVA 與格子語言不應被視為互相競爭的三種語法，而是位於不同層次。

### 7.1 EML：語義原生與轉譯層

EML 的核心不是取代所有既有語言，而是處理高層語義如何被壓縮、拆解、映射與驗證。它主要改變：

$$
\mathcal{I},\mathcal{M},\mathcal{V}
$$

並連接自然語言、形式規格、既有程式碼與可視化結構。EML 可以作為人類意圖與權威中介表示之間的橋接層。

### 7.2 NOVA：張量—算子原生層

NOVA 的主要本體選擇，是把張量、形狀、維度、算子與微分結構提升為第一級對象。它主要改變：

$$
\Gamma,\mathcal{M},\mathcal{E},\mathcal{T}
$$

NOVA 不只是為既有語言增加張量函式庫，而是讓張量合法性、算子組合與硬體映射直接進入語言核心。

### 7.3 格子語言：自由選域、封裝與多投影操作層

格子語言的主要任務不是重複定義底層計算，而是提供一種空間化的程式操作表面。它主要改變：

$$
\Gamma,\mathcal{C},\mathcal{V},\mathcal{G}
$$

格子可以作為：

- 自由選取程式區域的介面；
- 動態封裝與權限邊界；
- 資料、控制與能力端口；
- 多個子程式或 Agent 的耦合表面；
- 文字、圖形、張量與世界狀態的共同投影層。

因此，較合理的堆疊是：

$$
\text{EML 語義轉譯}
\rightarrow
\text{NOVA 權威張量—算子結構}
\rightarrow
\text{格子化選域與多投影操作}
$$

三者也可以不完全線性，而形成共享權威中介表示的多層架構。

---

## 八、從程式碼到意圖—世界狀態閉環

當程式語言逐步吸收 AI、Agent 與世界模型後，程式生成可以被表示為：

$$
I_t
\xrightarrow{\rho}
S_t
\xrightarrow{\kappa}
P_t
\xrightarrow{\alpha}
A_t
\xrightarrow{\omega}
W_{t+1}
\xrightarrow{\eta}
I_{t+1}
$$

其中：

- $I_t$ ：使用者或系統意圖；
- $S_t$ ：規範化規格；
- $P_t$ ：權威程式結構；
- $A_t$ ：實際行動；
- $W_{t+1}$ ：行動後世界狀態；
- $I_{t+1}$ ：根據結果形成的新意圖。

此時，程式不再只是靜態產物，而成為意圖與世界之間的受控轉譯系統。語言設計的核心問題也從「如何寫出指令」轉為：

1. 如何保留意圖；
2. 如何把模糊意圖轉成可驗證規格；
3. 如何分配人類、AI 與運行時的控制權；
4. 如何限制行動能力；
5. 如何觀測世界狀態變化；
6. 如何讓結果反饋進下一輪意圖。

這並不意味著程式碼會消失，而是程式碼從唯一表面退回為多種投影之一。

---

## 九、設計原則

根據前述框架，可以提出六項一般設計原則。

### 9.1 穩定核心原則

越接近權威執行層，語義越應穩定、可重現與可驗證。柔性與生成性主要保留在意圖層、投影層和適應層。

### 9.2 投影非本體原則

任何單一文字、圖形或自然語言表示，都不應被預設為完整程式本體。系統應明確區分權威結構與表面投影。

### 9.3 控制權可撤回原則

交給 AI、執行時或環境的控制權，必須具有明確邊界、可觀測狀態與撤回機制。

### 9.4 意圖—驗證對偶原則

意圖越抽象，驗證條件越需要明確。否則系統只會放大語句能力，而無法確保結果符合真正需求。

### 9.5 拓撲顯式化原則

若依賴、封裝、權限與耦合本來就具有圖或空間結構，語言應允許這些關係被顯式觀測與操作，而不是全部壓回線性文字。

### 9.6 適應不破壞錨點原則

語言可以動態調整表面表示、中介結構與最佳化策略，但必須保留穩定錨點，使結果可回溯、可比較、可交換。

---

## 十、結論

本文提出一種程式語言設計風格的多軸形態空間，試圖補足傳統程式設計範式分類的不足。程式語言不只是語法和控制流程，而是由符號、拓撲、語義、組合、執行、約束、狀態、意圖、投影與治理共同構成的複合系統。

在這個框架下，語言之間不再只能以命令式、函數式或物件導向互相比較，而可以進一步分析：它們使用什麼作為基本計算單位、程式是否仍以線性文字為本體、控制權如何在人類與機器之間分配、語義是否具有概率性、程式能否多重投影，以及語言是否能在穩定核心之上自我適應。

這也重新界定了 EML、NOVA 與格子語言的關係。EML 側重語義與意圖轉譯，NOVA 側重張量—算子原生計算，格子語言則側重自由選域、動態封裝與多投影操作。三者不是同一層面的替代方案，而是可以共同構成一個由意圖、形式結構、執行到世界狀態的程式系統。

最終，程式語言的演化不一定是從一套語法走向另一套語法，而更可能是從「人類書寫唯一程式文本」，走向「人類、AI、編譯器與世界共同維護一個可驗證、可投影、可治理的計算本體」。
