Skip to content

Commit dfc8723

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

File tree

9 files changed

+531
-48
lines changed

9 files changed

+531
-48
lines changed
34.2 KB
Loading

src/compare/mps/mps-concept.png

58.2 KB
Loading

src/compare/mps/textgen-aspect.png

46.2 KB
Loading

src/compare/nop-vs-mps.md

Lines changed: 347 additions & 47 deletions
Large diffs are not rendered by default.

src/faq/faq-about-nop-design.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# 1. 关于差量化推理管线的问题
2+
3+
![](../theory/nop/delta-pipeline.png)
4+
5+
问题: **每一层为什么要设计其他层用的信息?是delta部分吗?**
6+
7+
回答:每一层向下一层推导得到的信息只是备选的,每一层都有自己独特的诉求和抽象,这些信息并不要求都在上一层存在。通过这种方式,可以保证每一层既是独立的,有是相互关联的。独立性体现在最终控制权在本层,不会损失任何能力。可以从本层开始,完全忽略前一层推导的来的信息。每一层设计有其他层的信息这有两个原因:1. 本来各层之间就存在隐含的关系,比如数据层的类型是整数,最外层的界面层显示的时候应该是一个整数输入控件,这个信息应该可以跨层保持 2. 为了统一配置方便,一些UI层的信息虽然数据层用不上,也可以暂存在数据层。比如orm.xml中字段上可以配置`ui:show`来控制字段在增删改查哪些页面中显示。ui:show是一个扩展属性,并不是orm模型的一部分,但是作为扩展属性保存在ORM模型中,在推导过程中先是传播到XMeta模型中继续作为扩展属性,推导到XView层的时候才起作用。在Excel模型中就可以配置`ui:show`属性。
8+
9+
问题:`ui:show`这种扩展属性的存放规则有相应的文档吗 或者是可定制的,所以使用者也得额外规定哪些属性可以存放在上层?
10+
11+
回答:使用者可以自由定制,额外选择哪些属性可以放在上层,但是如何向下传播是自己在代码生成器里自行控制的。Nop平台的所有DSL的所有节点缺省都允许保存扩展属性。NopORM中的实体对象同样允许保存任意扩展属性。在Nop平台中永远采用`(data, metadata)`配对设计,确保在最细的粒度处,在信息的近旁总是可以找到一个地方保存Delta信息。
12+
13+
问题: 这图是单向的,有没有可能是双向的。理论上,前端交互体验上的一些数据,比如微信发现页面的配置,或者输入对应的快捷键,也可能需要保存到数据库。
14+
15+
回答:需要区分编译期和运行时。本质上从DataModel到UiModel,这是在编译期构造的信息推导管道。在运行时,推导之后建立的运行时的信息传输管道自然是双向的。从更大的视角去考虑,对比前端Redux框架的单项数据流(数据驱动),你可以将这个推理管线看作是编译期的一种单向模型驱动。UI层如果有新的需求,那么会导致从最基础的数据模型那里可能发生修改,再传播到UI模型。如果不涉及到存储数据,则也可以导致在更高层模型修改。

src/theory/ecs-explained.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# 从可逆计算看ECS架构
2+
3+
[游戏开发中的 ECS 框架](https://zhuanlan.zhihu.com/p/20056728243)
4+

src/theory/next-generation-lang.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,18 @@
4040
### 二、**意图导向编程(Intent-Oriented Programming)**
4141

4242
- **创新点**
43+
4344
1. 显式分离**程序意图**(What)和**实现细节**(How)
4445
2. 内置自然语言注释层与机器可解析的意图标记(如`@optimize_for_latency`
46+
4547
- **案例**
4648

4749
```plaintext
4850
#intent: 实现一个快速排序算法,优先内存效率
4951
#constraint: 输入规模可能达到10^6级别
5052
[AI生成或推荐的实现代码]
5153
```
54+
5255
- **解决问题**:让AI更精准理解需求,减少"代码正确但不符合意图"的错误
5356

5457
---
@@ -77,28 +80,34 @@
7780
### 四、**概率化编程原语(Probabilistic Primitives)**
7881

7982
- **创新点**
83+
8084
- 原生支持概率分布类型(如`Gaussian(μ=0, σ=1)`
8185
- 内置贝叶斯推理引擎
86+
8287
- **应用场景**
8388

8489
```python
8590
sensor_data ~ Normal(mean=ground_truth, sd=0.1) # 自动生成概率模型
8691
```
92+
8793
- **解决问题**:简化机器学习模型的实现,使AI能直接操作概率语义
8894

8995
---
9096

9197
### 五、**自省与可解释性增强**
9298

9399
- **创新点**
100+
94101
1. 代码执行过程自动生成解释轨迹(Explanation Trace)
95102
2. 决策链的因果标记(`becauseof`关键字)
103+
96104
- **示例**
97105

98106
```python
99107
if x > threshold: # @becauseof(input_statistics.summary())
100108
trigger_alert()
101109
```
110+
102111
- **解决问题**:解决AI生成代码的"黑箱"问题,增强调试和审计能力
103112

104113
---
@@ -115,15 +124,18 @@
115124
### 七、**伦理约束内嵌(Ethical Constraints as First-Class Citizen)**
116125

117126
- **创新点**
127+
118128
- 类型系统扩展支持伦理属性(如`PersonalData @encrypted`
119129
- 资源访问的合规性验证前置
130+
120131
- **示例**
121132

122133
```python
123134
def process(data: UserProfile @GDPR_Compliant) ->
124135
@Fairness(metric=demographic_parity):
125136
# 代码逻辑
126137
```
138+
127139
- **解决问题**:在语言层面确保AI生成代码符合伦理规范
128140

129141
---
@@ -342,7 +354,7 @@
342354
- **草图识别**:绘制UI草图即时生成前端框架代码
343355
- **AR编程辅助**:通过Hololens等设备三维可视化数据流
344356
- **技术栈整合**
345-
357+
346358
```mermaid
347359
graph LR
348360
A[语音输入] --> B(意图识别引擎)

src/theory/thinking-in-functional-programming.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,120 +7,149 @@
77
## 三. 从函数到函子
88

99
## 一. 引言
10+
1011
### 1.1 函数式编程的兴起
12+
1113
- 函数式编程的历史背景
1214
- 为什么函数式编程在现代开发中越来越重要
1315
- 实用主义视角下的函数式编程:从理论到实践
1416

1517
### 1.2 文章目标
18+
1619
- 探讨函数式编程的核心思想
1720
- 从实用主义角度分析函数式编程的优势与挑战
1821
- 提供实际案例,帮助读者理解如何将函数式编程应用于现实问题
1922

2023
---
2124

2225
## 二. 函数式编程的核心思想
26+
2327
### 2.1 纯函数与不可变性
28+
2429
- 纯函数的定义与特性
2530
- 不可变数据结构的优势
2631
- 纯函数在实践中的应用场景
2732

2833
### 2.2 高阶函数与函数组合
34+
2935
- 高阶函数的概念与作用
3036
- 函数组合:将小函数组合成复杂逻辑
3137
- 实际案例:使用高阶函数简化代码
3238

3339
### 2.3 声明式编程
40+
3441
- 声明式编程与命令式编程的对比
3542
- 如何通过声明式编程提高代码可读性
3643
- 实际案例:使用声明式风格处理数据
3744

3845
---
3946

4047
## 三. 函数式编程的核心工具
48+
4149
### 3.1 函子(Functor)
50+
4251
- 函子的定义与基本操作(`fmap`
4352
- 函子的实际应用:处理容器中的值
4453
- 实际案例:使用函子处理可选值(`Maybe`
4554

4655
### 3.2 单子(Monad)
56+
4757
- 单子的定义与核心操作(`return``bind`
4858
- 单子的实际意义:处理副作用与计算顺序
4959
- 实际案例:使用单子处理异步操作(`Promise`
5060

5161
### 3.3 应用函子(Applicative Functor)
62+
5263
- 应用函子的定义与操作
5364
- 应用函子与函子、单子的关系
5465
- 实际案例:使用应用函子处理多个上下文中的函数
5566

5667
---
5768

5869
## 四. 函数式编程的实用价值
70+
5971
### 4.1 代码的可维护性
72+
6073
- 纯函数与不可变性如何提高代码的可维护性
6174
- 实际案例:重构命令式代码为函数式风格
6275

6376
### 4.2 并行与并发编程
77+
6478
- 函数式编程如何简化并行与并发编程
6579
- 实际案例:使用函数式编程处理多线程任务
6680

6781
### 4.3 测试与调试
82+
6883
- 纯函数如何简化单元测试
6984
- 实际案例:为函数式代码编写测试
7085

7186
### 4.4 函数式编程的局限性
87+
7288
- 函数式编程的学习曲线
7389
- 性能问题与优化策略
7490
- 何时选择函数式编程,何时选择其他范式
7591

7692
---
7793

7894
## 五. 函数式编程在现代开发中的应用
95+
7996
### 5.1 前端开发
97+
8098
- 函数式编程在前端框架中的应用(如React、Redux)
8199
- 实际案例:使用函数式编程构建UI组件
82100

83101
### 5.2 后端开发
102+
84103
- 函数式编程在服务器端开发中的应用(如Node.js、Scala)
85104
- 实际案例:使用函数式编程处理API请求
86105

87106
### 5.3 数据处理与机器学习
107+
88108
- 函数式编程在数据处理中的应用(如MapReduce)
89109
- 实际案例:使用函数式编程处理大规模数据集
90110

91111
---
92112

93113
## 六. 函数式编程的未来
114+
94115
### 6.1 函数式编程与新兴技术
116+
95117
- 函数式编程在区块链、物联网等领域的应用
96118
- 函数式编程与人工智能的结合
97119

98120
### 6.2 函数式编程的普及与教育
121+
99122
- 如何降低函数式编程的学习门槛
100123
- 函数式编程在计算机教育中的角色
101124

102125
### 6.3 函数式编程的社区与生态
126+
103127
- 函数式编程语言的发展趋势(如Haskell、Elm、Clojure)
104128
- 函数式编程工具与库的生态系统
105129

106130
---
107131

108132
## 七. 结论
133+
109134
### 7.1 函数式编程的核心价值
135+
110136
- 从实用主义角度总结函数式编程的优势
111137
- 函数式编程如何改变开发者的思维方式
112138

113139
### 7.2 如何开始学习函数式编程
140+
114141
- 推荐学习资源与路径
115142
- 实践建议:从小项目开始,逐步深入
116143

117144
### 7.3 函数式编程的未来展望
145+
118146
- 函数式编程在软件开发中的长期影响
119147
- 开发者如何拥抱函数式编程的思想
120148

121149
---
122150

123151
## 参考文献
152+
124153
- 相关书籍、论文与在线资源
125154
- 函数式编程语言与工具的官方文档
126155

0 commit comments

Comments
 (0)