@
Isuxiz 感谢你的回复!你说得对,DAG 理论上确实表达能力更强,但我想从另一个角度来看这个问题。
响应式编程本身就是一种编程范式,FEL 使用响应式流来描述。就好比面向过程什么都能写,为什么要面向对象?面向对象并不是没有存在的必要,理论上图灵完备的语言都能实现相同功能,但不同范式解决的是开发效率和代码质量问题。
从实际开发体验看:
响应式流天然支持编译时类型检查,链式调用的上下游类型必须匹配才能编译通过。而 DAG 的节点连接往往依赖字符串 ID ,类型错误要到运行时才能发现。
语法验证:
``` java
// FEL - 编译时就知道类型不匹配
flow.prompt(xxx).generate(model).reduce(stringReducer).someIntMethod() // 编译报错
// DAG - 运行时才发现节点名写错了
graph.AddEdge("node_model", "nod_log") // 拼写错误,运行时才报错
```
然后是认知的问题,我觉得大家的确都学过图,但在日常业务开发中,我们更习惯"数据流转换"的思维模式。响应式编程让代码读起来更像业务描述:"接收请求 → 处理 prompt → 调用模型 → 处理结果"。我不知道大家怎么看?
我们并不反对 DAG 设计,而是认为 **不同的工具应该匹配不同的场景**。就像 SpringMVC 的注解式编程和传统 servlet ,理论能力差不多,但开发体验天差地别。
还是非常感谢你的讨论~