2.9 KiB
1. 语言概览
Endorphin 是一门兼顾前端与后端的云原生编程语言。它用共享的数据结构和普通逻辑调用连接应用的不同部分,使开发者可以直接表达业务输入、计算过程和结果。
一段业务逻辑可以由其他 namespace 引用和调用。调用方使用逻辑的名称、参数和结果类型;通信、缓存和执行组织由系统承担,不要求业务代码另行编写协议客户端或服务接口。
1.1 应用模型
Endorphin 应用由相互引用的声明组成:
| 声明 | 描述的内容 | 典型用途 |
|---|---|---|
| 类 | 数据结构与字段类型 | 前后端共同理解商品数据 |
| 函数 | 输入、计算和输出 | 计算价格、组合业务步骤 |
| 场景 | 界面与渲染树 | 展示文本和排列界面元素 |
Agent 是后续扩展的应用领域;其声明与行为语法尚未定义,见应用领域。
1.2 代码组织
每段代码属于一个用户和至少一级 namespace。用户通过唯一用户名标识,namespace 通过完整 key 定位,例如:
alice:shop.pricing
alice 是用户名,shop.pricing 是 namespace 路径。代码归属保存在外部上下文与索引中,正文无需声明自己的 namespace。
代码以独立代码段存储,通过索引形成 namespace 的可见代码视图。namespace 是语言的代码组织单位,源码文件不承担这一职责。
1.3 声明与调用
代码归属:alice:shop.pricing。该 namespace 定义价格计算函数:
function discountedPrice(price: Int, discount: Int): Int {
return price - discount
}
函数接收原价和优惠额,返回两者之差。应用的另一部分可以引用其 namespace,再用调用表达式计算价格:
discountedPrice(100, 10) → 90
这里展示的是本书采用的函数写法。关键字、类型标注和调用规则会在基础语法部分逐项说明;完整跨 namespace 示例见函数与调用。
1.4 执行阶段
Endorphin 将程序处理划分为两个阶段:
- Preflight:理解声明与引用,检查名称、类型和程序结构,准备执行。
- inflight:使用实际输入执行逻辑,交付结果,并产生界面或其他业务效果。
阶段与前端、后端是不同概念。前端界面与后端逻辑都可以经过 Preflight,并在 inflight 中产生效果。namespace 的路径名称不决定阶段或执行位置。
1.5 本书范围
本书描述源码写法及其可观察行为,包括代码归属、声明、类型、表达式、调用、数据读取和 UI。通信协议、数据库绑定、缓存、部署和编排机制属于系统实现,不在语言介绍中展开。
下一章首先说明参与代码定位的用户身份,再介绍 namespace 与程序结构。