Fw: [系统] Gemini共同设计 CUE:Cosmos编程语言草案

楼主: 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 用法的简化】

Links booklink

Contact Us: admin [ a t ] ucptt.com