線性文本之後:樹、圖、空間與場式程式結構
摘要
現代程式語言多以線性文字作為主要編寫介面,但程式在解析、編譯與執行過程中,早已不再保持純粹線性:原始碼會被轉換為抽象語法樹、控制流程圖、資料流圖、依賴圖、呼叫圖與分散式執行網路。換言之,線性文本長期以來只是程式的表面承載方式,而非其唯一結構本體。隨著視覺化編程、節點式工作流、空間化編程、格子語言、Agent 網路與世界狀態系統逐漸出現,程式結構正在由隱藏於編譯器內部的樹與圖,轉向可被人類直接操作的空間與場。
本文提出「程式結構拓撲轉換論」,將程式結構區分為序列、樹、圖、空間與場五個主要層級,並分析各層級在組合、控制、封裝、狀態、局部性與可視化方面的差異。本文主張,從文字轉向圖形並不必然構成新的程式本體;只有當位置、鄰接、方向、邊界、重疊、距離或場強本身能直接改變語義、執行與合法性時,空間才真正成為語言的一級結構。本文進一步形式化區域、端口、耦合、局部規則與場式傳播,並將格子語言定位為介於圖式程式與世界狀態程式之間的空間化操作層。最後,本文提出多重投影與權威結構原則,說明未來程式不應再等同於某一份原始碼,而應被理解為可投影為文字、樹、圖、格子、動畫與世界狀態的統一計算結構。
關鍵詞: 程式拓撲、抽象語法樹、資料流圖、空間化編程、格子語言、場式程式、多重投影、世界狀態
一、問題的提出
程式語言長期以來主要依靠文字表示。即使不同語言具有完全不同的語法,程式設計者通常仍以由上至下、由左至右的字元序列編寫程式。這種形式帶來高度可攜性、可儲存性與成熟的工具鏈,也使版本控制、搜尋、差異比較與編譯器處理得以快速發展。
然而,程式本身從來不只是線性文字。
一段原始碼在進入語言系統後,通常會被轉換為:
- 詞法單位序列;
- 語法樹;
- 型別約束圖;
- 控制流程圖;
- 資料依賴圖;
- 呼叫圖;
- 中介表示圖;
- 執行排程;
- 記憶體與裝置映射。
因此,可以區分:
與
前者是程式的文字投影,後者則是語言系統實際理解、分析與執行的結構。
傳統工具鏈通常採用:
也就是說,人類編寫線性文字,而機器在內部恢復樹與圖。
這產生一個根本問題:
若程式真正的結構本來就是樹、圖、網路甚至場,為什麼人類仍必須主要透過線性文本間接操作它?
但反過來也必須警惕:將程式畫成節點與連線,不一定代表語言已經超越文字。許多視覺化工具只是把原本的抽象語法樹或工作流轉換成圖形,底層語義並未改變。
因此,本文要區分三種情況:
- 圖像化文字:只是將文字結構顯示為圖;
- 圖原生程式:圖的節點與邊直接構成語義;
- 空間或場原生程式:位置、區域、距離與局部作用本身成為計算規則。
這一區分,是重新研究格子語言與後文本程式系統的必要地基。
二、程式結構的拓撲表示
令一個程式的權威結構表示為:
其中:
- :程式中的節點、實體或局部單位;
- :節點之間的關係、依賴或傳播通道;
- :節點與邊的標籤、型別及語義;
- :全域或局部約束;
- :執行、求值與狀態轉換規則。
不同程式表面可以被理解為對同一權威結構的投影:
例如:
由此,本文不把文字、圖或格子直接視為互相排斥的程式本體,而是進一步追問:
哪一種結構是權威的?哪一種只是投影?修改某個投影時,系統如何安全地回寫權威結構?
若沒有這個區分,多重介面很容易形成多份互不一致的程式。
三、第一層:序列式程式結構
序列式程式以有序符號或敘述為主要結構:
其中 是詞法單位、表達式或命令。
其主要優勢包括:
- 易於儲存與傳輸;
- 容易進行字元級差異比較;
- 適合鍵盤輸入;
- 能直接使用既有檔案系統;
- 工具鏈與編譯器技術成熟;
- 可以利用局部文字上下文進行搜尋與重構。
但序列具有明顯限制:
- 樹狀封裝必須透過括號、縮排或關鍵字間接表示;
- 圖式依賴通常分散在不同位置;
- 多對多關係難以直接閱讀;
- 並行、非同步與循環依賴容易被壓縮成不直觀的文字;
- 空間關係只能被模擬,不能自然成為語義。
序列最自然的關係是:
也就是「先於」與「後於」。即使語言是宣告式,文字表面仍會暗示某種順序。這種表面順序有時與真正執行順序無關,因而產生認知錯位。
四、第二層:樹式程式結構
大多數程式語言在解析後形成抽象語法樹:
其中 是根節點,每個非根節點具有父節點。
樹非常適合表示:
- 表達式嵌套;
- 語法作用域;
- 條件與分支;
- 函數與模組結構;
- 類型構造;
- 形式語言的遞歸組合。
例如:
在線性文字中需要依賴優先級規則;在樹中則直接表示為:
樹式結構的核心優勢是局部組合。每個子樹都可以近似被視為一個局部程式:
這使語法轉換、編譯器最佳化與結構化編輯成為可能。
然而,樹有一項根本限制:每個節點通常只能擁有一個父節點。真實程式中的依賴、共享、跨模組引用、資料傳播與控制耦合,往往不是純樹狀結構。為了在樹中表示共享,系統必須使用名稱、引用、符號表或外部連結。
因此,AST 是強大的語法本體,卻不一定是完整的程式關係本體。
五、第三層:圖式程式結構
圖式程式將結構表示為:
其中節點可以是運算、值、事件、資源、狀態或 Agent,邊則可以表示:
- 資料依賴;
- 控制轉移;
- 呼叫關係;
- 訊息傳遞;
- 能力授權;
- 時序關係;
- 因果關係;
- 約束傳播。
相較於樹,圖允許:
- 多個父節點;
- 循環;
- 共享子結構;
- 多重連線;
- 局部網路;
- 動態建立與刪除關係。
資料流圖可表示為:
只有當其依賴節點準備完成時, 才可被求值。
控制流程圖則表示基本區塊之間的轉移:
其中 是條件或跳轉規則。
圖式程式特別適合:
- 工作流;
- 音訊與影像處理;
- 計算圖;
- 神經網路;
- ETL 管線;
- Agent 協作;
- 分散式系統;
- 狀態機。
但圖也帶來新的複雜度。當節點數與連線數增加時,畫面可能形成「義大利麵式連線」。因此,圖形化本身不保證可理解性。
可以把圖的視覺複雜度近似表示為:
其中:
- :節點數;
- :邊數;
- :交叉連線數;
- :遮蔽、重疊與跨區域連線成本。
當 過高時,圖式程式甚至可能比文字更難維護。
因此,圖式語言必須同時具備:
- 分層;
- 折疊;
- 區域化;
- 型別端口;
- 自動排版;
- 依賴篩選;
- 局部顯影;
- 多尺度瀏覽。
這也正是空間化程式結構進一步出現的原因。
六、圖形介面與圖原生語言的區別
並非所有節點式系統都是圖原生語言。
令一個圖形表面為:
其底層權威程式為:
若存在近乎直接的雙向映射:
而節點位置、距離、方向與區域不影響語義,那麼該系統主要是:
相反地,若圖的邊與節點關係直接決定求值、狀態傳播與合法性,則它更接近:
可以提出四項判準。
6.1 邊語義判準
邊是否只是畫面連線,還是具有資料、控制、權限或因果型別?
6.2 拓撲改變判準
改變連線拓撲是否直接改變程式語義?
6.3 圖分析判準
語言系統是否直接對圖進行型別檢查、最佳化、排程與驗證?
6.4 非文字充分判準
是否存在無法自然還原為單一線性文本結構的原生圖式關係?
若四項皆成立,圖就不再只是視覺表面,而成為語言核心。
七、第四層:空間式程式結構
空間式程式不只使用節點和邊,還使下列關係具有語義:
- 位置;
- 距離;
- 鄰接;
- 方向;
- 區域;
- 邊界;
- 包含;
- 重疊;
- 密度;
- 層級;
- 可見性。
令程式空間為:
其中:
- :程式單位集合;
- :距離或接近度函數;
- :區域集合;
- :邊界與連接規則。
在純視覺化圖中,節點放在左邊或右邊通常不影響語義;在空間原生語言中,位置可能影響:
- 作用域;
- 傳播延遲;
- 訪問成本;
- 耦合強度;
- 權限;
- 優先級;
- 局部規則;
- 資源共享。
例如,可令兩個單位之間的耦合強度為:
其中 表示邊界條件, 表示端口兼容性。
此時,空間不是顯示結果,而是參與計算。
八、區域作為一級程式單位
傳統語言常使用函數、類別與模組作為封裝單位。空間式語言則可把區域本身提升為一級對象。
令區域為:
其中:
- :區域內部單位;
- :區域邊界;
- :輸入端口;
- :輸出端口;
- :內部約束;
- :權限與策略。
區域具有數個重要特性。
8.1 動態選域
使用者可以從既有程式中選取一組相互關聯的單位,形成新的局部區域:
這與預先定義模組不同。模組邊界在編寫時確定,選域則可以在分析、除錯、重構或執行時形成。
8.2 邊界顯式化
區域邊界不只是括號或檔案,而可以直接表達:
- 何者可以進入;
- 何者可以離開;
- 何種能力可被調用;
- 何種狀態可被修改;
- 何種資料必須匿名化;
- 何種錯誤不得跨越。
8.3 區域折疊
區域可以被視為新的高層節點:
這使大型圖能夠在多尺度下被閱讀。
8.4 區域重組
兩個區域可以合併、切分、重疊或透過端口重新偶合。這為格子語言提供了比固定模組更自由的結構操作能力。
九、端口與耦合
空間化程式若沒有端口與型別化耦合,容易退化為任意連線。
令端口為:
其中:
- :資料或能力型別;
- :傳輸模式;
- :權限與方向;
- :約束與協議。
若輸出端口 與輸入端口 兼容,則:
系統才允許建立耦合:
耦合可以分為:
- 資料耦合;
- 控制耦合;
- 事件耦合;
- 狀態耦合;
- 能力耦合;
- 語義耦合;
- 時間耦合;
- 物理設備耦合。
在 Agent 系統中,端口甚至可表示某個 Agent 能否向另一 Agent 請求工具、記憶或決策。
因此,格子語言若要成為真正語言,而不只是畫布,端口和耦合必須進入型別、權限與執行模型。
十、第五層:場式程式結構
圖與空間仍以離散節點和區域為主。場式程式則進一步把連續或局部分布量作為語義。
令程式場為:
其中 是程式空間, 是時間, 是場值空間。
場值可以表示:
- 注意力;
- 優先級;
- 信任;
- 風險;
- 權限強度;
- 資源密度;
- 計算負載;
- 語義相關性;
- 錯誤傳播;
- Agent 影響力。
局部程式單位的行為可由場決定:
其中 表示鄰域結構。
場式程式與普通全域變數不同。全域變數是一個所有單位共同讀取的值;場則允許不同位置具有不同值,並可依距離與局部規則傳播。
例如,動態顯影可以被建模為注意力場:
當 較高時,該區域會展示更多細節、分配更多計算或提高監控級別。
風險場可表示為:
系統可根據局部風險改變允許的操作集合:
這使程式治理不再只依靠固定角色與規則,而可具有動態局部性。
十一、場式程式與世界模型
世界模型天然具有空間與場結構。若程式直接作用於一個虛擬世界、數位孿生或機器人環境,其狀態可表示為:
其中:
- :實體;
- :離散關係;
- :連續或局部場;
- :歷史與因果記錄。
程式作用則為:
此時,函數、物件、圖與場不是互斥模型,而是共同存在:
- 物件表示持續實體;
- 圖表示顯式關係;
- 場表示局部影響;
- 事件表示時間變化;
- Agent 表示自主行動單位;
- 區域表示治理與封裝邊界。
這種結構可被稱為:
它不再只是執行計算,而是管理一個持續存在、可演化、可分支與可回滾的狀態世界。
十二、格子語言的正式定位
格子語言容易被誤解為「把程式放到方格裡」。但真正有價值的格子語言不應依賴固定方格外觀,而應提供一套空間化的選域、封裝與耦合機制。
可將格子語言結構定義為:
其中:
- :可動態建立的區域;
- :邊界;
- :權限;
- :輸入端口;
- :輸出端口;
- :區域間耦合;
- :多重投影。
其關鍵能力包括:
- 從權威程式結構中自由選取區域;
- 將區域折疊成高層單位;
- 顯示區域內外依賴;
- 建立型別化端口;
- 控制跨邊界資料、能力與狀態;
- 在文字、圖、張量與世界狀態間切換投影;
- 將局部修改安全回寫至權威結構。
格子語言的核心不在「格子」,而在:
因此,它位於圖原生程式與世界狀態程式之間,是一個可操作的空間結構層。
十三、格子語言何時只是介面
若格子僅將既有程式碼分塊顯示,則其功能可以寫成:
但 本身不參與權威語義。
此時:
- 移動格子不改變程式;
- 格子距離不改變執行;
- 邊界不具權限;
- 端口只是視覺連線;
- 重疊不具有語義;
- 區域無法被獨立驗證。
這種系統仍然有用,因為它可以改善閱讀、導航與重構;但它應被稱為格子化編輯器,而不是格子原生語言。
十四、格子語言何時改變程式本體
若格子結構滿足下列條件,則它開始進入語言本體。
14.1 區域語義
區域本身可被命名、組合、傳遞、部署與驗證。
14.2 邊界語義
邊界決定作用域、資料流、權限與錯誤傳播。
14.3 端口語義
所有跨區域耦合都必須通過型別化端口。
14.4 空間語義
位置、鄰接、方向或距離至少有一部分會影響執行或合法性。
14.5 投影同一性
格子不是獨立副本,而是權威程式結構的可回寫投影。
14.6 執行原生性
運行時能直接調度區域、端口和局部規則,而不是先完全還原為傳統文字程式。
可以定義格子原生程度:
其中 表示各條件的滿足程度。
此分數並非追求形式上的精確量測,而是幫助區分介面創新與語言本體創新。
十五、多重投影與安全回寫
當同一程式具有文字、樹、圖、格子與自然語言投影時,必須解決一致性問題。
令權威結構為:
投影為:
使用者在投影 上作出修改:
系統不應直接假設此修改能無損套用,而應先計算候選回寫:
再進行:
- 型別檢查;
- 約束檢查;
- 權限檢查;
- 投影衝突檢查;
- 執行影響分析;
- 可逆性分析。
只有當:
系統才更新權威結構。
這種模式比「任一介面直接修改同一檔案」更複雜,但它是多重投影程式能夠可靠運作的必要條件。
十六、結構轉換的資訊損失
不同拓撲之間的轉換不一定可逆。
例如:
通常需要選定:
- 節點排序;
- 命名;
- 作用域;
- 共享引用;
- 循環表示;
- 併發語義。
若兩個不同圖結構被映射到相同文字表示,則轉換具有資訊損失。
令轉換為:
若存在:
但:
則 不是單射,無法由 唯一恢復原始結構。
因此,程式投影系統必須區分:
- 無損投影;
- 有條件可逆投影;
- 有損摘要;
- 純視覺化投影。
自然語言解釋通常是有損摘要,不應被直接當成權威程式;格子與圖形若保留穩定識別碼、端口與拓撲,則可能成為可逆投影。
十七、局部性與可理解性
空間化程式的主要價值之一,是恢復局部性。
令一個局部區域 的外部依賴數為:
內部耦合數為:
若:
則該區域具有較高模組性。
可定義局部性比率:
當 接近 時,區域大部分關係都位於內部,較容易獨立理解與測試。
格子語言可以利用自動選域,尋找高局部性區域:
其中 表示建立邊界與端口的成本。
這使格子語言不只是人工拖拉介面,也可成為程式結構分析與重構工具。
十八、空間與場式程式的風險
空間化並非必然優於文字化。其主要風險包括:
18.1 視覺規模爆炸
大型系統可能產生過多節點、區域與連線。
18.2 隱性空間語義
若移動一個單位會改變執行,但系統未清楚顯示,使用者可能難以預測結果。
18.3 版本控制困難
圖與空間結構的差異比較比文字行差異更複雜。
18.4 自動排版污染語義
若位置本身具有語義,自動整理畫面就可能意外改變程式。
18.5 多投影衝突
不同介面同時修改同一權威結構時,需要處理語義合併,而非單純文字合併。
18.6 場的不可解釋性
動態注意力場、風險場或權限場若由 AI 自動生成,可能形成難以理解的隱性控制。
因此,空間與場式語言必須遵守:
真正的可理解性來自穩定規則、局部邊界、顯式端口、可追溯變化與可驗證執行。
十九、設計原則
19.1 權威結構優先原則
任何文字、圖、格子或動畫都必須指向明確的權威程式結構。
19.2 拓撲語義顯式原則
若位置、鄰接或距離具有語義,系統必須明確顯示其作用,不能把它隱藏為純介面行為。
19.3 區域可折疊原則
大型圖與空間必須支援多尺度折疊,否則無法控制複雜度。
19.4 跨邊界端口化原則
區域之間的資料、能力、狀態與錯誤傳播應經過顯式端口。
19.5 空間修改可預覽原則
任何可能改變語義的移動、合併、重疊與拆分,都應先提供影響預覽。
19.6 場的可觀測原則
場值、來源、更新規則與影響範圍必須可被觀察和追蹤。
19.7 文字退居投影而不消失原則
後文本程式系統不需要消滅文字。文字仍是搜尋、版本控制、交換與精確編輯的重要投影,只是不再必然是唯一權威表面。
二十、EML、NOVA 與格子語言的拓撲關係
三者可以被置於不同拓撲層級。
20.1 EML
EML 主要處理語義與意圖之間的映射,其結構可同時投影為文字、規格樹與語義圖。
20.2 NOVA
NOVA 以張量—算子圖作為主要權威計算結構:
其中 是張量與狀態節點, 是算子及依賴關係。
20.3 格子語言
格子語言將 EML 與 NOVA 的結構投影到空間,提供選域、邊界與端口操作:
它可以將一組張量算子封裝為區域,也可以將一組意圖與驗證規則封裝為 Skill 區域。
因此,三者不應形成互相取代關係,而應形成:
的統一程式結構。
二十一、結論
本文提出程式結構拓撲轉換論,將程式結構區分為序列、樹、圖、空間與場五個主要層級。
序列擅長儲存、傳輸與精確文字操作;樹擅長語法組合與局部嵌套;圖擅長表示依賴、共享、循環與並行;空間使區域、邊界、位置與鄰接成為可操作語義;場則進一步表示注意力、風險、資源與影響力的局部分布。
這些結構並非單線替代關係。未來程式系統更可能同時保留:
真正的轉折不在於程式看起來是否像圖,而在於拓撲是否進入權威語義。只有當節點、邊、區域、邊界、端口、位置與場值能直接影響合法性、執行與治理時,程式才真正超越線性文本。
格子語言的核心因而不是方格外觀,而是將局部性、邊界、端口、耦合與多重投影提升為一級程式結構。它可以成為 EML 語義層與 NOVA 張量—算子層的共同操作表面,並進一步連接 Agent 系統與世界狀態。
最終,未來程式不再只是寫在檔案裡的一串字元,而可能是一個可被投影、選域、折疊、連接、驗證與持續演化的計算空間。