Files
Endorphin-Document/guide/01-overview.md

69 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)