69 lines
4.2 KiB
Markdown
69 lines
4.2 KiB
Markdown
# 1. 语言概览
|
||
|
||
Endorphin 是一门兼顾前端与后端的云原生编程语言。它用共享的数据结构和普通逻辑调用连接应用的不同部分,使开发者可以直接表达业务输入、计算过程和结果。
|
||
|
||
一段业务逻辑可以由其他 namespace 引用和调用。调用方使用逻辑的名称、参数和结果类型;通信、缓存和执行组织由系统承担,不要求业务代码另行编写协议客户端或服务接口。
|
||
|
||
## 1.1 应用模型
|
||
|
||
Endorphin 应用由基础资源、变量引用和相互引用的声明组成。数值、文本、图片、视频、音频和 GIS 数据等基础内容由平台统一保存,变量指向这些资源,class 与 agent 组织更高级的结构。
|
||
|
||
| 声明 | 描述的内容 | 典型用途 |
|
||
| --- | --- | --- |
|
||
| 类 | 数据结构与字段类型 | 前后端共同理解商品数据 |
|
||
| 函数 | 输入、计算和输出 | 计算价格、组合业务步骤、返回界面值 |
|
||
| agent | 共有成员与模型驱动的执行规则 | 使用和实现工具、保留记忆、组织状态与控制流 |
|
||
|
||
客户端可以查看获准访问的资源,并按资源或函数结果的类型呈现内容。界面使用普通函数返回可渲染值表达,具体访问行为见[资源访问与呈现](11-resource-access-and-presentation.md)。
|
||
|
||
Agent 作为语言声明纳入 namespace,可以实现新逻辑并引用已有函数;其工具、记忆、状态及运行控制见[Agent](13-agents.md)。基础资源与变量引用模型见[资源、类型与类](07-types-and-classes.md)。
|
||
|
||
## 1.2 代码组织
|
||
|
||
独立登记的资源以资源 ID 识别,由 workspace 管理归属,namespace 提供命名与组织入口。workspace 通过唯一 handle 标识,namespace 通过完整 key 定位,例如:
|
||
|
||
```text
|
||
atelier:shop.pricing
|
||
```
|
||
|
||
`atelier` 是 workspace handle,`shop.pricing` 是 namespace 路径。用户以成员角色操作 workspace 中的资源;作者身份与资源归属分开记录。代码归属保存在外部上下文与索引中,源码无需声明自己的 namespace。
|
||
|
||
代码以独立代码段存储,通过索引形成 namespace 的可见代码视图。namespace 是语言的代码组织单位,源码文件不承担这一职责。
|
||
|
||
多个 namespace 可以引用同一资源。移除命名入口不删除仍被保留程序引用的资源;具体引用行为及候选代码见[资源引用](07-top-level-types/references.md)。
|
||
|
||
## 1.3 声明与调用
|
||
|
||
代码归属:`atelier:shop.pricing`。该 namespace 定义价格计算函数:
|
||
|
||
```endorphin
|
||
function discountedPrice(price: Number, discount: Number): Number {
|
||
return price - discount
|
||
}
|
||
```
|
||
|
||
函数接收原价和优惠额,返回两者之差。应用的另一部分可以引用其 namespace,再用调用表达式计算价格:
|
||
|
||
```text
|
||
discountedPrice(100, 10) → 90
|
||
```
|
||
|
||
这里展示的是本书采用的函数写法。关键字、类型标注和调用规则会在基础语法部分逐项说明;完整跨 namespace 示例见[函数与调用](09-functions-and-calls.md)。
|
||
|
||
## 1.4 执行阶段
|
||
|
||
Endorphin 将程序处理划分为两个阶段:
|
||
|
||
- **Preflight**:理解声明与引用,检查名称、类型和程序结构,建立关联索引;定义生命周期还覆盖准备后的持续可引用、更新与退出。
|
||
- **inflight**:使用实际输入解释执行逻辑,交付结果;管理调用、实例和任务的存续、暂停与恢复,并产生界面或其他业务效果。
|
||
|
||
平台承担代码的解释执行;程序处理不要求开发者先完成独立构建,也不要求字节码转译。完整阶段职责见[Preflight 与 inflight](05-preflight-and-inflight.md)。
|
||
|
||
阶段与前端、后端是不同概念。前端界面与后端逻辑都可以经过 Preflight,并在 inflight 中产生效果。namespace 的路径名称不决定阶段或执行位置。
|
||
|
||
## 1.5 本书范围
|
||
|
||
本书描述源码写法及其可观察行为,包括资源、代码归属、声明、类型、变量引用、调用、数据读取、UI 和 agent。通信协议、数据库绑定、缓存、部署和编排机制属于系统实现,不在语言介绍中展开。
|
||
|
||
[下一章:用户身份与 workspace 权限](02-user-identity.md) · [目录](../README.md)
|