小智 103
在控制流语言中,您有一组操作外部数据的指令.条件执行,跳转和过程调用会更改要执行的指令流.这可以看作是流经数据的指令(例如,指令对通过指令加载数据的寄存器进行操作 - 除非指令流移动数据,否则数据是静态的).控制流"if"语句跳转到指令流中的正确分支,但数据不会被移动.
在数据流语言中,您有一个数据流,它从指令传递到要处理的指令.条件执行,跳转和过程调用将数据路由到不同的指令.这可以被视为数据流过其他静态指令,例如电信号如何流过电路或水流过管道.数据流"if"语句将数据路由到正确的分支.
数据流功能和语言的一些示例:
文本语言
视觉语言
嵌入可视数据流语言的产品:
Ant*_*ton 26
数据流编程语言是关注程序状态并根据状态的任何变化导致操作发生的语言.数据流编程语言本质上是并行的,因为操作依赖于满足的输入将导致操作执行.这意味着与普通的程序,其中一个操作之后的下一个操作,在数据流程序的操作,只要该输入被满足,因此不存在设定次序将被执行.
数据流编程语言通常使用大型哈希表,其中键是程序的数据,表的值是指向程序操作的指针.这使得多核程序更易于在数据流编程语言创建,因为每个核心只需要哈希表的工作.
数据流编程语言的一个常见示例是电子表格程序,其中包含受其他数据列影响的数据列.如果一列中的数据发生变化,其他列中的其他数据可能会随之改变.虽然电子表格程序是数据流编程语言最常见的例子,但大多数都是图形语言.
数据流编程语言建议在所谓的" 参与者 "中隔离一些本地行为,这些行为应该并行运行并通过点对点通道交换数据.与Von Neumann计算机模型不同,没有中央存储器(代码和数据)的概念.
这些参与者在其输入上使用数据令牌并在其输出上生成新数据.
该定义并未强制实施此方法.但是,需要谨慎分析数据的生成/消耗:例如,如果一个actor B没有以与生成数据的actor A相同的速度消耗,那么它们之间需要一个潜在的无限存储器(fifo) .许多其他问题可能会像死锁一样出现.
在许多情况下,这种分析会失败,因为内部行为的交错是难以处理的(超出当今正式方法的范围).
尽管如此,数据流编程语言在许多领域仍然具有吸引力:
Excel(和其他电子表格)本质上是数据流语言.数据流语言很像函数式编程语言,除了整个程序图的叶子上的值根本不是值,而是变量(或值流),因此当它们发生变化时,变化会波动并向上流动图形.
归档时间: |
|
查看次数: |
35352 次 |
最近记录: |