作者:
amidha (東岐明)
2026-03-01 21:20:19※ [本文轉錄自 CSSE 看板 #1ff3eWDV ]
作者: amidha (東岐明) 看板: CSSE
標題: [系統] Gemini共同設計 CUE:Cosmos編程語言草案
時間: Sun Mar 1 21:07:31 2026
Gemini共同設計CUE:Cosmos編程語言草案
Cosmos 乃是源於 C++ 變革擴展而基於完善 CHERI 機制的 全範式約束 Pan-paradigm
Constraint 語言,利於分散平行運算及權限安全維護,其嚴格約束標記可消除AI幻覺
而適宜AI編程及人類審核,適宜用於AI建構複雜精密系統。以本體論導向 Ontology-
Oriented 之語言範式,會通易學四象八卦於編程範式。以 元編程 Meta-Programming
之範疇 Category 對應 行編程 Process-Programming 之類別 Class,繼承同構而貫通
範疇收斂與類別發散。其本體論範式以 變化 Becoming 與 存有 Being 之哲學基礎,
對應編程模型之 域 Domain 與 體 Entity。由域再以時空動靜區分四象,由體再以主客
動靜區分四象,乃有後置標記 ! ~ _ #( _ 是代表 無標記 )之四象涵攝權限,共構而
成編程八卦,而成建構數位現實之編程範式。
東岐明
amidha.orienta@gmail.com
此是與 Gemini 3.0 的CUE相關Cosmos研討對話,因 Gemini 改版 3.1 中斷記憶而無法有
效繼續。可參考對話瞭解 Cosmos 設計過程,但已無法有效正確回答關於 Cosmos 問題。
https://gemini.google.com/share/456f2202574e
此文後記還有另篇更新的研討對話分享,可以繼續探討!
CUE 系統架構層級為
硬體︰ RISC-V + CHERI + VM + ...
存化語言 Cosmos Progamming Language ( C!! )
宇宙系統 Universe Operating System
生態用境 Ecos User Environment
CUE 構想源於東岐明當年在博士班的研究設想,如今可以藉助 Gemini 共同研討。
◎編程之道
人類文明現今電腦作為運算基礎的圖靈機 Turing Machine 架構,本質是在運作訊息以從
事計算。訊息對應存在,存在乃可計算,計算乃有數量,數量而以雜多,雜多乃現世界萬
物。哲學本體論分析世界萬物,根本基礎關注於 存有 Being 與 變化 Becoming。圖靈機
運作訊息而以編程語言建構數位現實 Digital Reality,亦可區分編程基礎於 存有之體
Entity 與 變化之域 Domain。在編程抽象意義上,體 Entity是對應於訊息處理單元,
域 Domain 是對應於訊息運算過程。在傳統編程對象上,體可對應於物件,域可對應於程
序、函數、函式。數位電腦最早的機器語言乃至組合語言是最接近圖靈機原始結構的
狀態運算,然而不適人類思維。上世紀五十年代,高階語言最早開始出現的 Fortran,
Lisp, COBOL,Fortran 引入數學計算,Lisp 發起函數式編程,COBOL引入資料結構。而
後六十年代,編程乃結構模組化,ALGOL引入作用域 Scope,Simula 基於模擬而引入物件
導向 Object-Oriented。至於七十年代,Pascal 引入強型別,C 引入系統設計的指標操
作與位址存取,Prolog 引入邏輯式編程,Smalltalk 引入純粹物件導向以訊息傳遞為核
心而建構圖形使用介面。八十年代,Object-C 融合 Smalltalk 範式 於C ,C++ 引入物
件導向與元編程於 C,Perl 基於文本處理,Erlang 則引入分散平行運算的 Actor 模型
。其後直至現今,隨著網際網路及伺服需求與平行運算之發展,對應不同應用領域而有種
種高階語言,如 Haskell, Python, Lua, Java, JavaScript, PHP, Ocaml, Ruby, C#,
Scala, Go, Rust, Kotlin, TypeScript, Julia, Swift, Zig, Mojo。這些語言大多是針
對不同應用分別著重以程序結構、物件導向、函數式運算、平行運算而面對靜態編譯型別
、動態直譯型別、系統底層的種種應用環境。編程語言以廣義編程範式視角,可分七式:
指令式 Imperative Programming(修改狀態的步驟指令):如 C, C++, Java
函數式 Functional Programming(數學函數的嵌套與組合):如 Lisp, Haskell
邏輯式 Logic Programming(事實、規則與自動推理):如 Prolog, Datalog
宣告式 Declarative Programming(宣告描述目標而非過程):如 SQL, HTML/CSS
串接式 Concatenative Programming(堆疊操作與後綴表達式):如 Forth, PostScript
並發式 Concurrent-oriented Programming(獨立單元間的訊息傳遞):Erlang, Elixir
陣列式 Array Programming(向量與矩陣的高階運算):如 APL, K, J, MATLAB
分別代表不同抽象面向的相關問題與解決之道。對於現今關於系統編程的趨勢發展,是朝
向指令式採納部份函數式更結合並發式,以推進涉及平行分散之運算處理,C++目前迭代
版本即是朝此方向前進。
編程語言的發展史,本質就是「運算變化(域 Domain)」與「存有狀態(體 Entity)」
如何定義邊界、如何互相作用的演進史。最早的機器語言及組合語言是直接運用硬體提供
的域運算與體狀態,其後高階語言則是域體運作之抽象化以利人類設計,如 Fortran 之
數學化,如 COBOL 之業務化。以域變化之抽象化,而有函式路向;以體存有之抽象化,
而有物件路向;兩者路向結合 C 之系統抽象而有 C++。爾後隨著科技演進的硬體基礎及
軟體需求,編程語言為了應對平行分散處理而分別有域路向以純函式運算去除副作用的
Haskell 語言、及體路向以 Actor 模型封保個體去除外干擾的 Erlang 語言、與體域交
集之靜態代數約束生命週期的 Rust 語言。
Cosmos 的語言設計企圖,則是藉由體域正交與 CHERI 硬體對應,以體對應CHERI 的邊界
指標(Bounds),以域對應 CHERI 的 動態權限遮罩(Permissions),基於 CHERI 硬體
機制支援處理分散平行運算與安全維護。
Cosmos 是由建構數位現實的哲學基礎出發,推廣至編程八卦而以適配種種系統應用問題
。Cosmos 編程對於數位現實的抽象基礎是,以 體 Entity 對應於哲學之存有 Being,
以 域 Domain 對應於哲學之變化 Becoming,以此建立編程秩序而建構數位現實,故稱
Cosmos ─ 初始希臘文原義即是指稱「秩序和諧之體系」。因為 Cosmos 是建立在存有之
體與變化之域的哲學基礎,故而中譯可稱「存化」語言;又因 Cosmos 是以陰陽互動而推
演四象八卦編程,符合易學所謂『易有太極,是生兩儀,兩儀生四象,四象生八卦』,故
而中譯亦可稱為「太極」語言。Cosmos 英譯亦可簡寫為 C!!。
程式語言的發展史,是從「忽視體域邊界」到「試圖用軟體規則掩蓋邊界」,最終走向
「將體域邊界植入硬體支援與編譯公理」的歷史。Cosmos 並非只是憑空出現的哲學產物
,而是馮紐曼架構在應用上遭遇平行運算與安全隔離瓶頸後,在權限架構(Capability
Architecture)上的必然演化節點。
◎編程八卦
Cosmos 編程體系,體 Entity 可依其訊息處理單元其中存有相關的 主動性 active 與
被動性 passive 而區分為 主體 Subject 與 客體 Object,域 Domain 可依訊息運算過
程其中變化相關的 非逆性 irreversible 與 可逆性 reversible 而區分為 時域 Time
與 空域 Space。主客時空又可分別基於動靜之分,而以區分純 pure、准 quasi 之別,
乃有如下編程四象八卦。
主動性與被動性,對應於實際運算,即是主動性具備執行運算能力(如具有 thread 執行)
,而被動性不具運算能力而需主動性進行驅動執行。非逆性與可逆性,源自物理學的時空
觀念,對應於實際運算,即是非復性 unrepeatable 與可復性 repeatable 。非逆性是相
應於域運算有副作用而改變域外狀態,可逆性是相應於域運算無副作用而保持域外狀態。
主動性與被動性之分離,有利於編譯實作分散運算。非逆性與可逆性之分別,有利於編譯
實作平行運算。Cosmos 以此語法解決平行分散運算在編程設計上之解耦問題。
域涉變化為陽,體涉存有為陰,居於上爻。兩者之下二爻,各有其四象權限對應於變數後
置標記,由高至低是 太陽 ! 、 少陽 ~ 、 少陰 _ 、 太陰 # ( _ 代指 無標記),
合而組成編程八卦:
Cosmos 對於作用範圍,是分為 域 domain、境 sphere、界 scope。域 domain 是指運算
域,即運算週期的作用域,域內變數只是暫時存在於運算週期中,如函式內宣告的非靜態
變數。境 Sphere 是指影響境,即物件作用的相關影響境界,如運算域所在物件以及作用
影響其他物件或函式之包含靜態變數及相關物件變數的影響境界。界 Scope 是對應於變
數名稱的可視境界,即是傳統所謂名稱作用域。
境 Sphere 一般是以運算域所在個體(物件)為範圍,也可以 Sphere{...}定義多個體集合
為範圍。跨境寫入必須使用 @ 顯式呼叫以切換執行緒達成利於平行分散運算與安全維護
。
譬如在個體 A 中呼叫 B.roll~() 是傳統的隱式呼叫而沒切換執行緒,而 @B.roll~() 是
顯式呼叫( A@B.roll~()在 A 中的簡化語法形式)
○域之四象即以域境狀態讀寫作用之相關副作用 Side Effect 而區分:
⊙太陽 ! 【乾】純時域 pure time:域運算會改寫境外狀態,有最大全界副作用。
宣告語法如 write_disk!(…){…}
⊙少陽 ~ 【巽】准時域 quasi time:域運算會改寫相關運算的域外境內狀態,
有局部境內副作用。
宣告語法如 int numerate~(…){…}
⊙少陰 _ 【離】准空域 quasi space:域運算不改寫域外狀態而無副作用,
會讀取域外變數而作用不定(傳回值不定)。
宣告語法如 move(…){…}
⊙太陰 # 【艮】純空域 pure space:域運算不改寫域外狀態而無副作用,
不讀取域外變數而作用確定(傳回值確定)。
宣告語法如 int calculate#(…){…}
○體之四象即以體於執行運算之動靜層級而區分︰
Cosmos 的 體 entity 是指作用體,即訊息處理的運作元,對應於物件導向的物件單元。
⊙太陽 ! 【兌】純主體 pure subject:體作用可由時間驅動 time-driven,
會主動定時或永久不斷執行運算,如線上遊戲角色會定時互動更新狀態。
宣告語法如 entity actor! : role! {…}
⊙少陽 ~ 【坎】准主體 quasi subject:體作用只由事件驅動 event-driven,
需有事件觸發才會執行運算,如伺服端回應需求。
宣告語法如 entity reactor~ : server~ {…}
⊙少陰 _ 【震】准客體 quasi object:體作用需由主體驅動 subject-driven,
需有主體驅動才會執行運算,若是語法表述只寫准客體就是預設
由程式主體驅動,正好符合原先 C++ 之物件運作。
宣告語法如 entity object{…}
⊙太陰 # 【坤】純客體 pure object:體作用是在編譯期而非執行期,所以不會執行運算
,而只有元編程運算。純客體是在產生編碼以供執行運算,不供直接執行運算,所以純客
體就是元編程碼。因為純客體不是行編程碼而是元編程碼,所以其後置標記不在變數,而
在宣告 entity,以示區分及不影響元編程碼。Cosmos 元編程語法詳情,後再解說。
宣告語法如 entity# list<…>{…}
上述編程八卦可以分為 域四象 與 體四象 ,其涵攝權限皆是依循
太陽 ! > 少陽 ~ > 少陰 _ > 太陰 # 。
此編程四象在理論上可以歸於由 解放 Liberation 至 約束 Restriction 的譜序,
在域是相關作用,在體是相關活動,再以 全 Total、局 Local 區分,而有如下譜序:
太陽 ! (全解放) > 少陽 ~ (局解放) > 少陰 _ (局約束) > 太陰 # (全約束)
此四象譜序在域而言,是 運算域(函式)的呼叫權限,如純空域 # 不可呼叫准時域 ~,而
純時域 ! 可以呼叫所有域。此四象譜序在體而言,是 作用體的繼承權限,如准客體 _
不可繼承准主體 ~ ,而純主體 ! 可以繼承所有體。
編程四象八卦建構嚴謹編程體系,在理論觀念上可以釐清運算分際而深化語法表述,在應
用實作上可以利於平行分散運算處理及編譯效能,更能促進AI編程效率及消除AI編程幻覺
。因為嚴格全面的範式約束,可有助於AI推論及編譯檢查,也有助於編程維護。雖然範式
約束對於人類創作編程在學習上會增加負擔,但對人類維護編程及AI編程卻是利基;AI以
之推進編程可以消除幻覺而增益效能,人類以之審核編程可以增易可讀而加速理解。
◎編程四期
Cosmos 編程可以分為四種運作。
前編程 Pre-Programming:對應於如 C 語言的 #include,#if,…等對編碼的預處理。
元編程 Meta-Programming:對應於如 C++ 元編程 template、concept等以生成編碼。
行編程 Process-Programming:對應於如 C++ 的編碼寫作。
始編程 Genesis-Programming:對應於如 C、C++ 的 main(…){…}
Cosmos 元編程對應於編程八卦的坤元,應於易經《彖傳》『至哉坤元,萬物資生』。
Cosmos 始編程對應於編程八卦的乾元,應於易經《彖傳》『大哉乾元,萬物資始』。
○始編程 乾元
Cosmos 的始編程,是一切體域的啟動創始,故而以 Domain 代表創始一切的主體時域,
以 Domain(…){…} 形式表述,對應於 C、C++ 的 main(…){…}。Domain! 身份特殊,
統合體域作為創始乾元,不但代表創始時域,也代表創始主體。所有一切未記主體之准客
體運作,皆是預設以 Domain 為主體,故而可依 C++ 方式寫作編碼而不特別標記主體。
Cosmos 支援並行運算的語法是以 , 分隔,而傳統 ; 分隔則是序列運算。
; (分號):代表(序列), 必須等前面的事情做完,時間才會走到下一步。
, (逗號):代表(平行), 這些事情可在同一時間的不同空間(CPU 核心)展開。
例如程式開啟,有三個主體(Actor/Service)的初始化操作,以及一個依賴它們的主迴
圈。
// 乾元:宇宙啟動
Domain!() {
// 空間延展 (平行執行):
// Network~, Database~, Audio! 會被分配到不同的 Thread 同時啟動。
// 因為是用 `,` 分隔,Runtime 會在此建立一個隱式的「等待屏障 (Barrier)」。
Network~.init(), Database~.init(), Audio!.start();
// 時間推進 (序列執行):
// 必須等上述三個任務【全部完成】,時間才會越過這道 `;`
UI.show_loading_screen(); // 載入畫面
// 再次平行載入資源
LoadModel("player"), LoadMap("level_1"), PlayMusic("bgm");
// 進入主迴圈
Engine!.run();
}
Domain 始編程有四種模式,也是以 ! ~ _ #( _ 是代表 無標記 )之後置標記分別,
但其意義與域運算上有所不同。
Domain!(){}: 編譯為支援實時運算及時間驅動及事件驅動的平行分散運算程式。
Domain~(){}:編譯為只支援事件驅動的平行分散運算程式。
Domain(){}:編譯為只提供序列運算的程式,如傳統 C++。
Domain#(){}:編譯為只提供純函式運算的程式。
○行編程:
***以下關於行編程的生命週期模型是 Gemini 的方案,還有許多問題困境待解。
***我對此尚持觀察立場,未能完全解決問題,可能尚需考慮實作應用環境調整!
Cosmos 四象八卦範式是種「運算行為學(Computational Behaviorism)」理論,涵攝了
系統中的狀態、副作用與執行緒調度。而其「資源所有權(Ownership)」與「生命週期
(Lifetime)」則是將「生命週期」與 Cosmos 原有的「域(Domain)運算週期」綁定,
並將「所有權」與「體(Entity)的主客階層」等價映射,最後依賴底層 CHERI 硬體架
構來吸收驗證開銷。但此嚴格的樹狀所有權與借用模型,存在一個無可避免的工程死穴:
無法自然地表達循環資料結構(Cyclic Data Structures)。Cosmos 嚴格禁止了跨
境(Cross-Sphere)的永久指標借用,那些必須互相指涉的圖形結構(如:雙向鏈結串列
、DOM 樹、社交網路圖譜、神經網路)該如何實作?
答案是:放棄「指標圖(Pointer-based Graph)」,改用「索引圖(Index-based
Graph / Arena Allocator)」。
1. 傳統作法的困境(指標圖): 在 C++ 或 Java 中,節點 A 擁有節點 B 的記憶體位
址,節點 B 也擁有節點 A 的記憶體位址。這種「互相持有實體鑰匙」的設計,在
CHERI 架構與 Cosmos 的嚴格所有權下是致命的,因為當 A 被銷毀時,B 手中的鑰匙就
會變成危險的懸空能力(Dangling Capability)。
2. Cosmos 的解法(境內索引 / Arena 模式): 在 Cosmos 中,面對複雜網路,我們不
再讓節點「互相擁有」。相反地,我們建立一個更高階的實體(例如 GraphManager~),
讓它的「境(Sphere)」去統一擁有所有的節點。
Cosmos 將時間安全 Temporal Safety 轉化為嚴格空間層級 Spatial Hierarchy 問題。
* 短暫的互動(借用):交給「域 (Domain)」,用完即棄,不留痕跡。
* 永久的改變(擁有):交給「境 (Sphere)」,完全轉移 (@>>)或與母體同生共死。
這種做法犧牲了圖形資料結構(如隨意互相指涉的網路)的靈活性,但換來了編譯期的極
速分析與零執行期開銷,完美契合 CHERI 架構。
○元編程 坤元
元編程的純客體,在實作上相關於泛型 Generics 及其相關定義與運作,是要在泛型中收
斂選擇某一型態而生成編碼,對於 Domain! 而言是完全靜止而不可驅動執行;必須是由
編譯器進行運算而轉換成為行編程,才能接受 Domain! 驅動。Cosmos 元編程提供一些與行編程同構的操作運算,而以後置標記 # 區分。譬如行編程
的 if 操作,在前編程是 #if ,在元編程則是 if#。如此以 # 後置標記,元編程可在編
譯期進行操作運算而不會混淆程式編碼中的行編程操作運算。相關元編程操作運算,需
要 Cosmos 編譯器提供對應相關編譯操作的直譯功能。
C++ 元編程的 Concept,其實與其 Class 是在繼承形式上可以同構,只是繼承方向不
同。Cosmos 基於此種同構關係,故將 C++ Concept 改為 範疇 Category 而更貼切編程
理論義涵。Class 繼承是以發散 Divergence 而繁衍生長種種體域功能以解決種種應用問
題,Category 繼承是以收斂 Convergence 而歸納篩選種種體域型態以應對種種泛型生成
。Cosmos元編程以此收斂繼承體系而可簡化語法,無需使用如 C++ 的 Template、
Concept、Require 等保留字於元編程。對於 Cosmos 語法,Entity 是用來宣告行編程的
類別,Entity# 是用來宣告元編程。符合 Cosmos 編碼都可以 Entity# 宣告, 所以
Entity# 的本質就是 AST(抽象語法樹)節點 或 代碼片段(Code Fragment)。元編程
的範疇就直接以後置 # 繼承來宣告,譬如對於 vector 的 class,vector# 就是其對應
category。如此,Cosmos 建立一套可擴展的元類型系統 (Meta-type System),可以根
據 C++ 的概念進行語法映射:
Cosmos 元標記 C++ 對應 (Template Parameter) 限制範圍 (收斂範疇)
< T > (預設) template <auto T> (C++20) 或 Macro 所有合法代碼 (Entity#)
< type# T > template <typename T> 僅限類型定義 (int, struct)
< int# N > template <int N> 僅限整數常數 (1, 10, 100)
< func# F > template <typename Func> 僅限函數定義
< entity# C > template <template<...> class C> 僅限模板容器 (如 Vector)
以下為 C++ 與 Cosmos 的元編程語法對照:
==========【關於 C++ Concept 用法的簡化】