我了解数据流编程的基础知识,并且在Clojure API http://richhickey.github.com/clojure-contrib/dataflow-api.html, 乔纳斯·博纳的演讲 http://www.slideshare.net/jboner/state-youre-doing-it-wrong-javaone-2009, GPars http://gpars.codehaus.org/Dataflow我知道它在像 Io 这样的语言中很流行(虽然我没有研究过 Io)。
我缺少的是在构建并发程序时关心数据流作为范例的令人信服的理由。为什么我要使用数据流模型而不是可变状态+线程+锁模型(常见于 Java、C++ 等)或参与者模型(常见于 Erlang 或 Scala)或其他模型?
特别是,虽然我知道上述语言(以及 Scala 和 Ruby)的库支持,但我不知道有哪个程序或库是该模型的典型用户。谁在使用它?为什么他们发现它比我提到的其他模型更好?
我也有一个错误的例子。它没有实现干净的actor模型,并且没有并发问题,但它使用DF架构,并且extremly流行:任何电子表格软件(例如 MS Excel)。
当您修改单元格时,它会向引用它的单元格发送“重新计算”信号。不过,当您处理的工作表变得越来越大时,您可以感受到数据流编程的真正味道 - 工作的重点会发生变化:
- 创建的公式失去了最初的重要性(您会发现自己只是克隆相同的 3-4 个公式),
- 布局变得更加重要:重新组织引用,将长公式拆分为较短的公式,隐藏参数,最后根据数据形成图表。
如果我们意识到公式是组件,引用是消息,那么我们就得到了数据流编程的常用方法:首先,我们创建一些组件,然后用它们构建数据流图。如果组件太大,我们会将它们分成更小的组件。最后,我们选择一个可视化组件来呈现令人赏心悦目的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)