一、核心概念对比特性数据流Data Flow控制流(Control Flow)关注点数据如何产生、转换、传递指令执行的顺序和条件核心元素数据、数据依赖关系指令、顺序、分支、循环方向数据从生产者流向消费者控制权从一个指令传递给下一个执行触发数据可用时自动触发程序计数器/指令指针决定并行性天然并行数据就绪即可执行通常顺序执行代表模型数据流编程、函数式编程命令式变成结构化编程二、数据流Data Flow是什么数据流关注的是数据本身的流动和变换。每个节点接收输入数据经过处理产生输出数据然后传递给下一个节点。整数节点加法器结果输出整数节点数据数据变换两数相加的数据依赖输出必须等待加法器计算加法后才能工作自动传播当整数节点数值变化所有下游节点自动更新数据流的特点# 数据流节点的典型实现 func execute(inputs): if inputs.size() 2: push_error(add node need two input) return 0 return inputs[0] inputs[1]关键原则无副作用节点只根据输入产生输出不修改外部状态确定性相同输入总是产生相同输出数据驱动有数据输入才执行无数据则等待三、控制流Control Flow怎么做控制流关注的是执行顺序和决策。它决定哪些节点在什么条件下执行以及执行的次数。控制流的典型元素# 命令式编程中的控制流 if condition: 条件分支 do_something() else: do_something_else() for i in range(10): #循环 repeat_action() function_call() 函数调用 return value # 返回四、逻辑门数据流与控制流的完美结合数据流视角开关亮开关数据流动布尔值从开关流向门再流向数据变换门执行布尔运算if (开关 and 开关 ): LED 亮 else: LED 暗条件判断根据输入值决定输出执行路径两条可能的执行路径func execute(inputs): var a inputs[0] var b inputs[1] return [a and b]五、总结方面数据流控制流问题计算什么何时/如何计算表示数据连线控制连线、事件触发数据就绪条件满足、事件发生状态无状态纯函数可以有状态并行天然并行通常串行在实际系统中两者缺一不可数据流告诉你如何从输入得到输出控制流告诉你什么时候做这件事以及做多少次