完全兼容 C
沿用 C 的编译链、类型系统与源码组织方式。任何 C 代码都是 O 代码,零成本渐进式采用,无需重写既有工程。
OIOIC 1.0.18 · 开源 · MIT License
OIOIC(中文名“道智编程”,简称 O 语言)完全兼容 C 语言, 并以高维度扩展重塑面向对象范式。没有臃肿的运行时,没有晦涩的模板魔法—— 只有一个对象模型、五条通用接口,以及一条清晰的继承链。
/* 一切皆对象:创建、打开、交互、关闭 */
#include "oioic.h"
#include "ho.h"
int main(void)
{
OBJECT* pObj = CreateObject(OID_HO_HELLOWORLD, 0);
Open(pObj, 0); /* 打开对象,建立与调用者的连线 */
Interact1(pObj, 0); /* 与对象交互 */
Close(pObj); /* 关闭对象 */
return 0;
}
完全兼容 C 的语法外壳,内里是一个自洽的对象世界。
关于 OIOIC
自 2005 年起,作者赵平智持续打磨这套语言内核,并于 2007 年正式推出 OIOIC 对象机制。 它不试图取代 C,而是站在 C 的肩膀上,让“对象”成为一种朴素、统一、可被推理的构造。
沿用 C 的编译链、类型系统与源码组织方式。任何 C 代码都是 O 代码,零成本渐进式采用,无需重写既有工程。
对象不再是类的实例副本,而是继承链上的一个节点(ND)。一条继承链有且只有一个首节点 OIOIC 与一个末节点 LND。
对象之间不靠直接读写成员变量耦合,而是通过统一的接口收发消息,天然支持阻断 / 非阻断的并发模型。
“OIOIC 属于所有人,所有人都应该关心爱护发展 OIOIC 道智编程。”—— OIOIC 版权声明
对象模型
每个对象都携带一个 64 位标识(OID),由 OS / HO / SO 三段掩码构成: 系统域、宿主域与自身域,分别用于区分模块归属、定义来源与实例序号。
一条继承链的起点,有且只有一个。这个首节点,就是 OIOIC 本身。
位于首末之间的中间层,可以有多个,也可以一个都没有。
继承链的终点。每创建一个对象,就生成一条继承链,而这个对象正是它的 LND。
MSKOSOS 域系统 / 模块归属
MSKHOHO 域宿主对象定义
MSKSOSO 域对象自身序号
继承不是代码复制,而是节点之间的一条连线。
五大通用接口
OIOIC 并非缩写造词,它正是五个通用接口首字母的合写: Open、Input、Output、Interact、Close。所有对象共享同一套交互语法。
打开对象,建立调用者与对象之间的引用计数连线。
向对象的输入队列写入数据,由对象自身决定如何处理。
从对象的输出队列取出数据,支持阻断与非阻断两种模式。
同步或异步交互,触发对象内部行为,返回值即结果语义。
关闭对象并递减引用计数,归零时才真正释放资源。
代码示例
没有新的构建系统,没有隐藏的代码生成。头文件即约定,宏即契约。
/* 为宿主对象定义 OID,三段掩码天然隔离命名空间 */
#define OID_HO_HELLOWORLD MAKE_OID(OS_LOCAL, HO_HELLO, 0)
OBJECT* p = CreateObject(OID_HO_HELLOWORLD, 0);
Input(p, msg, strlen(msg)); /* 写入输入队列 */
Interact1(p, 0); /* 触发对象行为 */
Output(p, buf, sizeof(buf)); /* 读取处理结果 */
Close(p); /* 引用计数递减 */
生态与资源
o.h 与 o.c 构成对象模型的全部基础设施,包含类型、掩码、宏契约与运行时。
负责 O 语言扩展的语法解析与代码转换,与常规 C 工具链协同工作。
从 HelloWorld 到继承链与接口设计,循序渐进地把对象思维落进代码。
真实工程中的对象拆分、消息编排与生命周期管理,可直接对照学习。
仓库代码以 MIT License 发布,Copyright (c) 赵平智。