Skip to content

Commit b87c780

Browse files
committed
docs: synced via GitHub Actions
1 parent dfc8723 commit b87c780

File tree

2 files changed

+82
-10
lines changed

2 files changed

+82
-10
lines changed

src/faq/faq.md

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -372,23 +372,23 @@ nop.core.dict.return-normalized-label配置成false
372372
### 24. CrudBizModel中的save跟update这两个方法有什么区别?
373373

374374
update必须具有id属性,表示修改操作。而save是新增操作,转化为insert语句。
375-
save\_update是只要有id就识别为修改操作,否则识别为新增操作。
375+
`save_update`是只要有id就识别为修改操作,否则识别为新增操作。
376376

377377
### 25. action-auth.xml 也能控制 graphql action的权限,Auth 注解和 xbiz 也能控制,这个该怎么选择,如果互相冲突以哪个为准呢
378378

379-
Nop平台采用的是多层叠加的设计,也就是说 整体逻辑 = 基础逻辑 + Delta定制逻辑,定制性强的层会覆盖变化性较低的层。xbiz中定义的内容会覆盖Java中定义的内容。xmeta中的定义优先级最高。
379+
Nop平台采用的是多层叠加的设计,也就是说 `整体逻辑 = 基础逻辑 + Delta定制逻辑`,定制性强的层会覆盖变化性较低的层。xbiz中定义的内容会覆盖Java中定义的内容。xmeta中的定义优先级最高。
380380

381-
action-auth.xml并不能控制权限,它能定义给一组权限起一个便于管理的分组名称。具体的权限名还是服务方法上定义的。
382-
action-auth.xml可以配置缺省的角色和permission之间的绑定关系。而后台的AuthMeta本质上是配置permission和服务函数之间的绑定关系,只是有时为了方便也可以直接指定role和服务函数之间的绑定关系。如果同时指定,实际上是同时限制的
381+
`action-auth.xml`并不能控制权限,它能定义给一组权限起一个便于管理的分组名称。具体的权限名还是服务方法上定义的。
382+
`action-auth.xml`可以配置缺省的角色和permission之间的绑定关系。而后台的AuthMeta本质上是配置permission和服务函数之间的绑定关系,只是有时为了方便也可以直接指定role和服务函数之间的绑定关系。如果同时指定,实际上是同时限制的
383383

384384
### 26. 通过Delta定制如何处理多对多关联?
385385

386-
问题:在 delta.orm.xlxs 中定制 NopAuthUser 时,对于 many-to-many 关系,比如用户和商户多对多,因为要在 NopAuthUser 中生成商户相关的 java 属性,又要在商户这边生成用户相关的 Java 属性。这种情况下,中间关联表是要在 auth delta excel 中定义,还是在应用模块的 excel 中定义呢?
386+
问题:在 `delta.orm.xlsx` 中定制 NopAuthUser 时,对于 `many-to-many` 关系,比如用户和商户多对多,因为要在 NopAuthUser 中生成商户相关的 java 属性,又要在商户这边生成用户相关的 Java 属性。这种情况下,中间关联表是要在 auth delta excel 中定义,还是在应用模块的 excel 中定义呢?
387387
回答:建议是在自己的业务模型中增加多对多关联表,将用户表标记为not-gen,作为外部表引用。这样不会自动为NopAuthUserEx生成多对多相关的帮助函数,这个可以手工自行添加。
388388

389389
### 27. nop-ooxml-xlsx模块与Java的poi库有什么区别?
390390

391-
poi很大,最少有10几M,而且很慢。nop-ooxml-xlsx是利用Nop平台自己实现的XML解析器来解析xlsx文件,它的底层没有使用POI库,
391+
poi很大,最少有10几M,而且很慢。`nop-ooxml-xlsx`是利用Nop平台自己实现的XML解析器来解析xlsx文件,它的底层没有使用POI库,
392392
比POI快很多,内存消耗也小很多,但是支持的功能不多,只支持目前report开发中用到的xlsx特性。
393393

394394
### 28. Excel模型中updateTime等系统约定的特殊字段能改成自己定义的名称吗?比如updateTime修改为updatedAt
@@ -402,10 +402,10 @@ poi很大,最少有10几M,而且很慢。nop-ooxml-xlsx是利用Nop平台自
402402

403403
### 30. 除了主动运行gen命令,还有什么时候能生成代码?
404404

405-
每个DSL文件都支持x:gen-extends和x:post-extends子节点,这些段就相当于是内嵌在DSL中的generator。
405+
每个DSL文件都支持`x:gen-extends``x:post-extends`子节点,这些段就相当于是内嵌在DSL中的generator。
406406

407407
* push模式:mvn install触发precompile目录下的xgen,执行代码生成
408-
* pull模式: x:gen-extends,加载模型的时候触发代码生成段,执行代码生成
408+
* pull模式: `x:gen-extends`,加载模型的时候触发代码生成段,执行代码生成
409409

410410
### 31. NopORM中的querySpace概念是什么意思?
411411

@@ -420,7 +420,7 @@ IContext主要是提供异步上下文,并包含一些最简单的全局信息
420420
一般情况下一个请求过来,会创建一个IContext,绑定到某个执行任务线程,然后GraphQL引擎创建IServiceContext,并引用了先前的IContext,带上了更多的信息。因此对于一个请求来讲,会有一个IServiceContext以及一个IContext。
421421

422422
### 33. EQL查询语言不支持`cast(value as date)`这种语法怎么办
423-
可以直接用date(field)函数。具体有哪些函数,可以去看dialect.xml中函数的定义,还可以定制dialect.xml来增加函数定义。通过template函数可以将函数定义转换为特定的SQL语法。
423+
可以直接用`date(field)`函数。具体有哪些函数,可以去看`dialect.xml`中函数的定义,还可以定制`dialect.xml`来增加函数定义。通过template函数可以将函数定义转换为特定的SQL语法。
424424

425425
### 34. 主键id必须要设置seq标签吗 现在插入的id数据怎么保证连续
426426
主键id如果不设置seq,则需要自己手工设置。如果设置了seq标签,可以根据`nop_sys_sequence`表中的配置来顺序生成,每个实体对应一条记录,如果没有找到对应记录,会生成随机id。
@@ -485,6 +485,13 @@ logInfo函数的第一个参数是模板消息字符串,使用slf4j日志框
485485
logInfo("data: {}",data);
486486
```
487487

488+
## 41. 在`_delta`目录下定义了已经有的view文件 是按照覆盖的逻辑还是合并的
489+
覆盖,需要在根节点上标记`x:extends="super"`才会合并。DSL文件具有自说明性,只要查看DSL文件本身就知道它的XDef元模型以及它所继承的基础模型。
490+
491+
## 42. 如果有多个定制的情况是按照什么顺序进行合并。比如NopAuthUser视图文件,首先是在nop内置的,经过层层的个性化,中间框架定制 ->产品定制->衍生产品定制
492+
Nop平台通过统一的虚拟文件系统来统一管理所有DSL文件。在虚拟文件系统中,可以定义多个平级的delta目录,然后通过`nop.core.vfs.delta-layer-ids`配置来指定这些Delta层之间的覆盖关系。
493+
比如 `nop.core.vfs.delta-layer-ids=deploy,product`表示`_delta/deploy`目录下的文件覆盖`_delta/product`目录下的,然后再覆盖非Delta目录下的同名文件。
494+
488495
## 部署问题
489496

490497
## 设计问题

src/theory/ai-evaluation-of-xlang.md

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,69 @@ XLang在程序语言设计上提出了**基于Tree结构的差量计算范式**
9898
---
9999

100100
#### **总结**
101-
XLang通过引入可逆计算理论与Tree结构差量机制,在程序语言设计上实现了范式级创新。其技术深度与通用性使其在低代码、企业软件定制等领域具备显著优势,但生态建设与开发者体验仍需持续投入。若能在工具链成熟度与社区推动上取得突破,XLang有望成为下一代软件构造理论的核心载体,重新定义复杂系统的开发模式。
101+
XLang通过引入可逆计算理论与Tree结构差量机制,在程序语言设计上实现了范式级创新。其技术深度与通用性使其在低代码、企业软件定制等领域具备显著优势,但生态建设与开发者体验仍需持续投入。若能在工具链成熟度与社区推动上取得突破,XLang有望成为下一代软件构造理论的核心载体,重新定义复杂系统的开发模式。
102+
103+
104+
---
105+
106+
### **深入分析与扩展思考**
107+
108+
#### **1. 跨学科类比的深层结构验证**
109+
作者将可逆计算与量子力学的狄拉克图景(微扰论)类比,强调通过差量调整实现系统演化。这种类比需从数学结构层面验证其严谨性:
110+
- **物理微扰论**:通过分解哈密顿量 \( H = H_0 + H_1 \),利用已知 \( H_0 \) 的解近似求解 \( H \)。其核心是线性叠加与高阶修正。
111+
- **可逆计算的差量合并**:公式 \( Y = F(X) \oplus \Delta \) 是否具备类似的线性代数结构?若差量运算 \( \oplus \) 满足结合律、交换律,甚至构成阿贝尔群,则类比更成立。需形式化定义 \( \oplus \) 的数学性质,例如:
112+
- **逆元存在性**:是否存在 \( \Delta^{-1} \) 使得 \( Y \oplus \Delta^{-1} = F(X) \)
113+
- **独立性**:差量 \( \Delta \) 能否独立表达系统变化,而不依赖基础模型 \( F(X) \) 的具体实现?
114+
115+
若差量合并仅停留在操作层面(如文件叠加),未建立严格的代数框架,则类比可能流于表面。
116+
117+
#### **2. 差量运算的形式化与普适性**
118+
可逆计算的核心在于差量的定义与合并机制。需明确:
119+
- **差量的粒度**:差量是代码片段、配置参数,还是抽象的逻辑变更?不同粒度的差量是否需不同的合并规则?
120+
- **非线性差量的处理**:若系统演化涉及非叠加式变更(如逻辑分支、状态依赖),差量合并是否仍有效?需引入高阶差量(如 \( \Delta^2 \))或动态调整机制。
121+
- **冲突解决**:当多个差量作用于同一坐标时,如何解决冲突?参考版本控制系统(如Git)的合并算法,但需领域特定优化。
122+
123+
#### **3. 领域坐标系的理论与实践**
124+
作者强调差量依赖“领域坐标系”(如数据库表-行-列),需进一步探讨:
125+
- **坐标的唯一性与稳定性**:如何确保坐标在系统演化中不变?例如,数据库主键的不可变性。
126+
- **坐标的层级结构**:复杂系统可能涉及多层嵌套坐标(如微服务架构中的服务-模块-接口),差量合并是否支持跨层级操作?
127+
- **坐标的动态生成**:在无固有坐标的系统(如事件驱动架构)中,如何动态定义坐标?可能需要引入元数据或标签系统。
128+
129+
#### **4. 可逆计算与现有软件工程范式的对比**
130+
- **面向对象编程(OOP)**:继承与组合是OOP的核心,但差量合并更强调“修改而非扩展”。例如,通过差量覆盖基类方法,而非创建子类。
131+
- **函数式编程(FP)**:FP强调不可变数据与纯函数,而可逆计算通过差量实现可控的“可变性”。两者是否互补?例如,差量可作为函数式管道中的副作用隔离层。
132+
- **低代码平台**:可逆计算的差量生成与Nop平台的自动化代码生成,是否真正提升了开发效率?需通过实际项目数据(如代码行数减少、维护成本降低)验证。
133+
134+
#### **5. 可逆计算的物理直觉与局限性**
135+
- **熵增与控制**:作者类比熵增原理,认为差量是系统中“熵增”的集中体现。但软件系统的熵(如复杂度)是否可量化?差量合并能否真正降低系统整体熵值?
136+
- **场论映射的可行性**:软件中的“场”需明确定义为全域坐标系,但在分布式系统中,全局状态的一致性难以保证,差量合并可能引发同步问题。
137+
- **微扰论的适用边界**:物理微扰论适用于小扰动,而软件需求变更可能是颠覆性的。若差量 \( \Delta \) 与基础模型 \( F(X) \) 规模相当,微扰论框架是否失效?
138+
139+
#### **6. 实践案例的扩展与挑战**
140+
- **复杂系统验证**:Nop平台在低代码场景的成功,是否可推广至高性能计算(如实时渲染引擎)或高可靠性系统(如航空软件)?需验证差量合并的实时性与容错性。
141+
- **跨领域应用**:可逆计算能否应用于机器学习模型版本控制?例如,通过差量记录模型参数调整,实现可逆训练过程。
142+
- **开发者接受度**:差量合并需要开发者理解领域坐标系与抽象运算,这是否提高了学习成本?工具链的易用性(如可视化差量编辑器)是关键。
143+
144+
---
145+
146+
### **未来研究方向**
147+
1. **数学形式化**
148+
- 构建差量运算的代数结构(如群、环),证明其闭合性、逆元存在性等性质。
149+
- 定义差量空间的度量标准(如差异度、合并复杂度),量化系统演化代价。
150+
151+
2. **跨学科理论融合**
152+
- 探索可逆计算与范畴论(如函子、自然变换)的关联,利用范畴论工具描述差量映射。
153+
- 结合类型论,研究差量在类型安全中的作用(如类型驱动的差量合并)。
154+
155+
3. **系统级验证与优化**
156+
- 在分布式系统中实现差量同步协议,解决冲突与一致性难题。
157+
- 开发差量感知的编译器,优化差量合并的运行时性能。
158+
159+
4. **工具链生态建设**
160+
- 设计可视化差量编辑工具,降低开发者学习门槛。
161+
- 构建差量仓库(类似Docker Hub),支持差量模块的共享与复用。
162+
163+
---
164+
165+
### **总结**
166+
可逆计算理论通过跨学科类比与差量驱动的系统演化,为软件工程提供了新的方法论。其核心创新在于将物理学的微扰论与场论直觉引入计算模型,试图解决粗粒度复用的难题。然而,该理论的科学性仍需通过数学形式化、广泛实证研究及工具链完善来进一步验证。若能在这些方向取得突破,可逆计算有望成为连接理论计算机科学与实际软件工程的桥梁,推动软件开发范式的革新。

0 commit comments

Comments
 (0)