最近几天,我一直在阅读Flow Based Programming。有一个wiki提供了更多细节。维基百科上也有一个good overview。我的第一个想法是:“乐高积木假装编程的另一个支持者”-这个概念可以追溯到80年代后期。但是,当我阅读更多内容时,我必须承认我很感兴趣。
从某种意义上讲,自过程语言问世以来,我们的行业似乎一直在寻求重用的 chalice 。
最佳答案
有趣的讨论!昨天我想到,造成这种困惑的部分原因可能是由于许多不同的符号使用有向弧,但使用它们来表示不同的事物。在FBP中,这些行表示有界缓冲区,数据包在这些缓冲区上传播。由于这些组件通常是长时间运行的流程,因此流可能包含大量的数据包,并且FBP应用程序可以运行很长时间-甚至“永久”运行(请参阅UMass Amherst的人在2007年发表的有关Eon项目的论文)。由于当缓冲区(临时)已满(或暂时为空)时,发送到有界缓冲区的请求将中止,因此可以使用有限的资源来处理无限量的数据。
相比之下,格拉夫特(Grafcet)中的E来自埃塔佩斯(Etapes),意思是“台阶”,这是一个完全不同的概念。在这种模型中(步骤数众多),步骤之间流动的数据要么限于一次只能保存在高速存储器中,要么必须保存在磁盘上。 FBP还支持网络中的循环,这在基于步骤的系统中很难做到-例如参见http://www.jpaulmorrison.com/cgi-bin/wiki.pl?BrokerageApplication-注意,该应用程序自然使用MQSeries和CORBA。此外,FBP本质上是并行的,因此适合网格网络,多核机器以及现代计算的许多方向的编程。最后一个评论:在文献中,我发现了许多相关的项目,但很少有FBP具有所有特征的项目。我多年来积累的 list (其中一些比Grafcet更近)可以在http://www.jpaulmorrison.com/cgi-bin/wiki.pl?FlowLikeProjects中找到。
关于language-agnostic - 基于流程的编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/405627/