我已经做了一点读 流动基础的方案拟订 在过去的几天。还有一个 维基 它提供了进一步的详细说明。和维基百科有一个 很好的概述 在这一点。我首先想到的是,"伟大的另一个支持者的乐高积木-土地假装编程"-一个概念,回溯到上世纪80。但是,正如我了解更多,我必须承认我变得好奇。

  1. 你有没有用FBP为一个真正的项目?
  2. 什么是你的意见FBP?
  3. 不FBP有未来?

在某种意义上,它似乎是圣杯的重用,我们业已奉行以来出现的程序的语言。

有帮助吗?

解决方案

有趣的讨论!我昨天想到,部分混乱可能是由于许多不同的符号使用有向弧,但使用它们来表示不同的东西。在FBP中,线代表有界缓冲区,数据包的传输流在这些缓冲区之间。由于组件通常是长时间运行的进程,因此流可以包括大量的分组,并且FBP应用程序可以运行很长时间 - 甚至可以“永久地”运行。 (参见2007年关于Eon项目的论文,主要是麻省大学阿默斯特分校的人们)。由于当缓冲区(暂时)满(或暂时为空)时,发送到有界缓冲区会暂停,因此可以使用有限资源处理无限量的数据。

相比之下,Grafcet中的E来自Etapes,意思是“步骤”,这是一个相当不同的概念。在这种模型中(并且存在许多这样的模型),步骤之间流动的数据要么限于一次可以保存在高速存储器中,要么必须保存在磁盘上。 FBP还支持网络中的循环,这在基于步骤的系统中很难做到 - 例如参见 http://www.jpaulmorrison.com/cgi-bin/wiki.pl?BrokerageApplication - 请注意,此应用程序以自然的方式同时使用MQSeries和CORBA。此外,FBP本身是并行的,因此它适用于网格网络,多核机器以及现代计算的许多方向的编程。最后一条评论:在文献中我发现了许多相关项目,但很少有FBP的所有特征。我可以在 http://www.jpaulmorrison.com/cgi-bin/wiki.pl?FlowLikeProjects

其他提示

1.你有没有用FBP为一个真正的项目?

我们已经设计并实施了一个DF服务器对于我们的自动化项目(调度员、部件iterface,一堆部件,DF语言,DF编译器,UI)。它是写在赤C++和运行在几个类Unix系统(Linux x86、MIPS,avr32等, Mac OS x).它缺少的几个特点,例如复杂的流动控制、复杂线控制(只有一个不太先进的组件),所以这只是一个原型,即使它的工作。我们现在正在一个功能齐全的服务器。我们已经学会了许多在实施和使用原型。

此外,我们会做一些编辑的某一天。

2.什么是你的意见FBP?

2.1.首先,数据流节目 最终的乐趣

当我见到的数据流程,我感觉就像20年前,当我遇到编程的第一个。虽然,DF编程的不同程序/面向对象的节目,这是一种编程。有很多事情要发现,即使sooo简单的人!这是非常有趣,当时,作为一个有经验的程序员,你见过一个DF问题,这是一个非常非常基本的事情,但这是完全不知道你之前。所以,如果你跳进DF编程中,你会感觉像一个新秀的程序员,他第一次见到"循环"或者"条件"。

2.2.它只能用于特定的体系结构

这只是一把锤子,敲钉子。DF不适合于用户界面,网络服务器等。

2.3.数据流结构是最佳的,对于一些问题

数据流的框架,可以让魔法的事情。它可以paralellize程序,这不是最初设计为paralellization.部件都是单程的,但是当它们组织成DF图,他们成了多的螺纹。

例如:你知道, 是DF系统?尝试 让-j (见的人,是什么-j用)。如果你有多核心机、编制项目以及没有-j,并比较倍。

2.4.最佳的分裂的问题

如果你写的程序,经常分手的问题,对于较小的子问题。还是平常的分点众所周知的子的问题,这你不需要实施,只要使用现有的解决方案,如SQL数据库,或者照片的图形/动画等。

DF建筑分割问题的一个非常有趣的方式:

  • 该数据框架,它提供了架构(仅使用现有的一),
  • 的组成部分:程序员创建的组成部分;该部件是简单的,以及分开的单位-这很容易使组成部分;
  • 配置:a.k.a.数据流程序:该配置将使该数据图表(方案)一起使用的组件提供的程序员。

如果您的组件的设置是精心设计、配置程序可以建立这样的系统,该系统程序员甚至从来没有梦想。配置可以实施新的 功能 没有令人不安的程序员。客户满意,因为他们的个性化解决方案。软件制造商也是幸福,因为他/她不需要维持几个客户特定的分支机构的软件,只是特定客户的配置。

2.5.速度

如果系统是建立在本机组件,DF的程序是快速的。唯一的时间损失的消息分派之间的分比作一个简单的面向对象的节目,它也是最小的。

3.不FBP有未来?

是的,肯定的。

主要原因是,它可以解决大规模的多处理问题没有引入全新奇怪软件架构,奇怪的语言。数据流程是容易的,我的意思是:组件编程和数据流结构建设。(即使数据的框架编写是不是火箭科学。)

此外,它很经济。如果你有一个很好的设置的组件,你只需要把乐高积木在一起。DF程序易于维护。DF配置的建筑需要,没有经验的程序员,只是一系统集成商。

我会很乐意,如果当地的系统传播,敞开大门对于定义成分的创造。还应有一个标准的DF语言,这意味着它可以用独立于平台的视觉的编辑和几个DF服务器。

我不得不不同意关于FBP只是实现FSM的一种方式的评论:我认为FSM很整洁,我相信它们在构建应用程序方面有一定的作用,但FBP的核心概念是多个组件流程运行异步,通过数据流进行通信,这些数据块运行在现在称为有界缓冲区的数据块上。是的,肯定FSM是构建组件流程的一种方式,实际上我的FBP专门讨论了这个想法,以及相关的一个PDA( 1 ) - http://www.jpaulmorrison.com/fbp/compil.htm - 但在我看来,实施一个非平凡的FBP网络的FSM将是不可能复杂的。作为示例,图中显示了 大约是在大型机上运行的单个批处理作业的1/3。这些块中的每一个都与所有其他块异步运行。顺便说一下,我很想在第一篇文章中听到更多问题的答案!

1 http://en.wikipedia.org/wiki/Pushdown_automaton 下推式自动机

每当我听到基于流程编程的术语时,我都会从概念上考虑LabView。即,调度的组件进程主要由其输入数据的更改驱动。这是一个真正的乐高编程,因为labview平台被用于最新一批的心灵风暴产品。但是我不同意这使得它成为一种不太有用的编程模型。

对于通常涉及数据收集,控制和自动化的工业系统,它非常适合。如果不将数据转换为数据,那么任何控制系统是什么?即如果你可以这样做,你的控制方案中的哪个组件你不喜欢在更大的图片中表示为黑盒子。要使用其他方法实现该级别的体系结构清晰度,您可能必须绘制数据域类图,然后是问题域运行时类关系,然后在用例图之上,并在它们之间来回切换。使用流量驱动系统,您可以非常精确地将大量此类信息合并到一起,以便在构建和定义组件后,您可以直观地设计系统。

在查看用labview编写的应用程序时,我从来没有问过的一个问题是“什么代码设置了这个值?”,因为它是固有的,很容易从数据中向后追溯,还有像多个错误一样的错误无意识的作家是不可能错误地创造出来的。

如果只有那种以更典型的程序方式编写的代码才是真的!

1)我为异常检测项目构建了一个小型FBP框架,结果证明这是一个好主意。

您还可以查看一些 KNIME视频,这些视频可以很好地了解基于流程的框架感觉就像一个伟大的团队将框架组合在一起。不可否认,它是基于批处理的,不是为连续操作而创建的。

到目前为止,基于流程编程的最佳示例是 UNIX管道,这是最古老,最容易被忽视的FBP框架之一。我认为我不必详细说明nix管的力量......

2)FBP是一个非常强大的工具,可以解决大量问题。内在并行性是一个很大的优势,任何FBP框架都可以通过使用适配器模块完全实现网络透明。智能框架也具有荒谬的容错能力,并且能够在必要时动态地重新加载崩溃的模块。概念简洁性还允许与项目中涉及的每个人进行更清晰的沟通,以及更清晰的代码。

3)绝对!管道就在这里,并且是unix最强大的功能之一。与静态程序相比,FBP框架中固有的功能很多,并且可以轻微改变,以至于某些框架可以在运行时重新配置,而无需特殊措施。

FBP FTW! ; - )

在汽车开发领域,他们拥有与语言无关的消息传递协议,该协议是MOST规范(面向媒体的系统传输)的一部分,旨在通过网络或同一设备在组件之间进行通信。系统通常具有真实和可视化的消息总线 - 因此您实际上有一种基于流的编程形式。

这就是几年前让灯泡继续播放并将我带到这里的原因。它真的是一种很棒的工作方式,比传统的编程更有趣。消息目录构成了中央规范和参考点。它适用于开发人员和管理人员。即管理能够浏览消息目录而不是查看源。

通过集成日志记录,还可以引用目录以生成可理解的分析,因此可以提高效率。我有以这种方式开发商业产品的现实经验。我有兴趣进一步研究,特别是在工具和IDE方面。不幸的是,我认为汽车行业的许多人都错过了关于这是多么伟大并且未能在此基础上建立起来的观点。他们现在被其他时尚注意力分散了注意力,并没有意识到,除了物理总线之外,还有更多的发展。

我使用了 Spring Web Flow 广泛地在Java Web应用程序中建模(通常)应用程序进程,这往往是复杂的向导式事务,有许多条件逻辑可以显示哪些页面。它非常强大。添加了一个新产品,我设法在一两个小时内将现有的碎片重新制作成一个全新的应用程序(添加了几个新的视图/状态)。

我还考虑使用操作系统工作流程对业务流程进行建模,但该项目已针对各种工具进行了封装的原因。

在Microsoft世界中,您有 Windows Workflow Foundation (“WWF”),这是变得更受欢迎,特别是与 Sharepoint 结合使用。

FBP只是实现有限状态机的一种方式。这不是什么新鲜事。

我意识到它并不完全相同,但这种模型已经在PLC编程中使用了多年。 ISO称之为顺序流程图,但许多人在流行的实现后称之为Grafcet。它提供并行处理并定义状态之间的转换。

如今,它正在商业智能世界中用于混搭和处理数据。 ETL,查询,加入和生成报告等数据处理步骤可由最终用户完成。我是开放系统的开发人员 - ComposableAnalytics.com 在CA中,基于流的应用程序可以通过以下方式共享和执行浏览器。

这就是MQ Series,MSMQ和JMS的用途。

这是Web服务和企业服务总线实施的基石。

像TIBCO和Sun的JCAPS这样的产品基本上是基于流的,而不使用这个特定的流行语。

应用程序的大部分工作都是使用通过处理网络传递消息的小模块完成的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top