数据流编程 - 模式和框架

16

我刚接触到提议中的Boost::Dataflow库。这似乎是一种有趣的方法,我想知道是否还有其他类似的C++框架,以及是否有任何相关的设计模式。

我并没有排除Boost::Dataflow,只是正在寻找任何可用的替代方案,以便更好地了解领域和我的选项(或者如有必要,开发自己的)。


1
请注意,这是一个建议的库,尚未成为 Boost 的一部分。 - Adam Mitz
C++基于模板的单子。他们从FP语言中复制了这个概念,甚至使用了类似Haskell的符号。不过他们似乎避免了使用“单子”这个名称。有人知道这是否是有意为之吗? - André Caron
1
我知道这已经有点老了,但如果你仍然对此感兴趣,基于流程的编程是数据流范例的一个非常有趣的变体。关于替代的C++框架,我开发了一个名为“DSPatch”的框架,你可能想要查看一下:http://flowbasedprogramming.com - Marcus Tomlinson
11个回答

5

维基百科

维基百科上有几篇关于数据流编程理论的好文章:

这些文章是由不同的作者编写的,因此存在一些重叠和一些重要内容缺失,但这是一个非常好的起点。

TinyOS

这是一个基于数据流原理的开源操作系统。我对此有些不满:他们甚至没有提到“数据流”这个术语。虽然如此,它确实是值得研究的(链接)


感谢您的编辑!现在有一本很有前途的书,将在几个月内发货:http://dataflowbook.com/ 推广视频也是该主题的非常好的介绍。 - ern0

4
你还可以查看两个主要的开源机器人框架ROSOrocos。还有Rock,但它是基于Orocos的,所以如果你只是想要一个C++组件框架,那么它是等效的。

4

我发现了一些与数据流有关的C++库:

  • cellspp - 允许使用电子表格评估模型。
  • DSPatchRoute11 - C++ 数据流框架。允许以数据流的方式编写程序。看起来很有趣。

4

2

2

如果您需要进行图像处理或可视化设计,可以在itk找到一个好的资源。如果您需要一个(data/work)flow的GUI界面,可以使用devide

以上为个人见解, Johan


1

数据流编程是一直潜伏在计算机领域几十年的技术,但却从未真正起飞……至少在软件领域是这样;在VHDL/Verilog世界中,你会自然而然地采用数据流思维方式。但在软件领域中,它似乎永远无法超越玩具系统的规模,也许是因为人们坚持将其与可视化编程结合在一起(我看到Boost Dataflow 也走了这条路)。有些人寄希望于通过数据流编程来解决软件危机,使其更像硬件设计,具有可插拔组件和可互连引脚……但是,请注意,硬件设计也非常困难!(有趣的是,在硬件领域中,虽然存在可视化编程系统,但没有人实际使用它们来构建大型项目)。

我所知道的最有趣、最活跃的现代数据流编程实例是PureData音频-视觉编程环境。


2
数据流编程在国家仪器的Labview(http://www.ni.com/labview/)上取得了相当成功的应用。我几乎不会把Labview称为“玩具系统”。;-P 我很惊讶没有人提到它。 - Emile Cormier
我忘记了LabView,谢谢,是个不错的例子。我看到它被TIOBE注册了,尽管只在未排名的#51-100之间。我很好奇使用它构建的最复杂系统是什么? - timday
1
我从经验中知道,在Labview中编写复杂算法行为是很痛苦的。在我看来,它最适合用于适合数据流范例的问题。对于非程序员(科学家、工程师)来说,它非常适合快速实现实验、原型和测试平台的信号处理、可视化和控制。不幸的是,视觉编程范式使得许多人难以使用现有的软件版本控制工具并行工作。 - Emile Cormier

1

1

我在这里实现了数据流,你可以查看:http://ambient.comp-phys.org

它支持MPI和线程,并基于自定义的数据流类型(即ambient::vector),通过运行时对象版本控制系统工作。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接