我理解数据流编程的基础知识,并在Clojure APIs、talks from Jonas Boner、Groovy中的GPars等语言中遇到过它。我知道它在Io这样的语言中很流行(尽管我还没有研究过Io)。
我缺少的是一个令人信服的理由,在构建并发程序时,需要将数据流作为一个范例。为什么我要使用数据流模型而不是可变的state+threads+locks模型(在Java、C++等中常见)或角色模型(在Erlang或Scala中常见)或其他模型?
特别是,虽然我知道上述语言(以及Scala和Ruby)中的库支持,但我不知道有哪一个程序或库是这种模型的典型儿童用户。谁在使用它?为什么他们发现它比我提到的其他模型更好?
发布于 2010-06-18 20:07:16
我也有一个错误的例子。它没有实现干净的角色模型,也没有并发问题,但它使用了DF架构,并且非常流行:任何电子表格软件(例如MS Excel)。
当你修改一个单元格时,它会向引用它的单元格发送“重新计算”信号。尽管如此,当你处理一个越来越大的工作表时,你可以感受到数据流编程的真正滋味--工作的重点将会改变:
如果我们意识到,公式是组件,引用是消息,我们就会得到数据流编程的常用方法:首先,我们创建一些组件,然后用它们构建一个数据流图。如果组件太大,我们会将它们拆分成较小的组件。最后,我们选择一个可视化组件来呈现令人眼花缭乱的结果。
发布于 2010-06-07 05:39:45
我有一个很好的“海报孩子”(我喜欢这个术语)给你。我猜想,你以前从未见过它,但你可能听说过。
我认为,几乎所有的现代数字同步器和采样器都有某种数据流架构。让我来告诉你它们是如何工作的。
我不确定是否罗兰JV-1080是第一个,但它是最著名的4层声音发生器方案的合成器。当您按下键盘上的某个键时,会启动一个补丁程序。它由1.4个发音器组成。声音发生器是一系列部件:振荡器、滤波器、信封、放大器。JV-1080能够一次播放64个声音发生器。活动声音生成器的输出进入效果配置。声音发生器路径是“硬连线”的,您可以选择效果总线的入口点和数量。
罗兰JV-1080的效果总线有4个入口点:干,自定义效果,唱诗班,混响,并有主要的输出。effect总线是固定的,但所有effects的输出都连接到所有其他effects,这些effects位于它的最右边,所以您可以通过将数量设置为零来“删除连接”。
Alesis 系列(QuadraSynth,QS6-7-8-R和x.1版本)具有类似的音响架构,效果系统类似...除了,您可以从3 FX配置中选择一个。一个FX配置是为管风琴(QS有令人难以置信的Leslie仿真):Leslie,合唱团,混响;另一个FX配置有两个混响。在如何利用齿轮的马力方面,你有更多的自由。
这些合成器很棒,但当你遇到Clavia Nord模块化时,你会忘记它们。它没有4层架构,也没有FX配置。它附带了一个win32程序,一个数据流编辑器。有各种组件:振荡器,滤波器,包络发生器等,您可以绘制您的配置。你应该画一个传统的4层声音发生器,但如果你愿意,你甚至可以画一个99层的声音发生器。它只是简单的摇滚乐。(不得不说,DF并不是一切:罗兰合资公司有44.1 kHz样本频率,QS有48k,模块化有96k。)
Clavia有另一条合成线路: Nord Lead。内部有Modular的引擎(参数和声音是完全相同的),但你不能使用数据流编程器来实现这些模型。它们有一个固定的路径,有很多参数,但你不能改变路由。此外,还有针对模块化的Nord Lead补丁集:编辑器中的所有路径看起来都是相同的,只是参数不同。
下面是一个模块化补丁示例http://www.clavia.se/pictures/nordmodular/patchwindowlarge.jpg
如果您对synth示例不满意,例如,因为您是C程序员,下面是另一个更熟悉的示例:
make -j
令我惊讶是,make是一个数据流系统,所以它可以同时运行“组件”,这意味着在多核机器上更快地编译。试试看!
发布于 2010-09-04 06:37:43
看看这个:http://www.synthedit.com/
它是一个用于VSTi的音频相关框架和组件集。我不知道它到底是怎么回事,但看起来作者用自己的一堆标准组件发布了软件,然后其他人可以通过编译DLL来附加他们的组件。
另外,我刚刚在附近抓到了一个家伙,我们在同一个邮件列表上,他创建了一个很好的TB303模拟器(著名的模拟老式synth),他使用SynthEdit作为框架创建了它。因此,如图所示,它可以用作框架,不存在技术(也不是bizmodel)困难。
所以,它值得一看,我在浏览文档时发现了很好的实现实践。尽管该网站不包含dataflow一词,而且文档应该进行更好的编辑,但该项目的精神是OK的。也有一些“第三方”组件开发人员。它有很好的GUI前端,至少是这样。
https://stackoverflow.com/questions/2937785
复制相似问题