基于流程编程

计算机编程中,基于流程(flow-based)编程,缩写为FBP,是一种编程范型,它将应用定义为黑箱进程的网络,它们经过预先定义的连接,通过消息传递来交换数据,而这里的连接是在“外部”指定给进程的。这些黑箱进程不需要更改内部,就可以无尽的重新连接而形成不同的应用。FBP因而是天然基于构件的。

FBP是一种特殊形式的数据流程编程,它基于了有界缓冲区,带有确定生存时间的信息包,命名端口,和独立的连接的定义[1]

历史

基于流程编程由J. Paul Morrison在1970年代前期发明,最初实现于为加拿大银行开发的软件中[2]。FBP在初起阶段受到同期的一些IBM模拟语言英语Simulation language的强烈影响,特别是GPSS英语GPSS,但是它的根基完全一致于康威关于协程的开创性论文[3]

概念

下列框图展示了FBP框图的主要实体(信息包除外)。这种框图可以直接转换成一个连接的列表,接着它们可以在适当的引擎(软件或硬件)上执行:

 
简单的FBP框图

A、B和C是执行代码构件的处理器。O1、O2和两个IN是端口,它们将连接M和N链接到与它们有关的处理器上。允许处理器B和C执行相同的代码,每个处理器必须有自己的工作存储、控制块等的集合。不管它们共享代码与否,B和C自由的使用相同的端口名字,因为端口名字只在引用它们的构件内有意义(当然是在网络层面上)。

M和N经常被称为“有界缓冲区”,在任何时间点上能持有的信息包(IP)的数目方面,它们有着固定的能力。

“端口”的概念是为允许同一个构件在一个网络上用在多于一个位置上。结合了叫做初始化信息包(IIP)的参数化能力,端口向FBP提供了构件重用功能,使得FBP成为基于构件的架构。FBP从而展示了IBM研究院的Raoul de Campo和Nate Edwards英语Nate Edwards所称谓的“可配置的模块化”。

参见

引用

  1. ^ Flow-based Programming. [2020-05-02]. (原始内容存档于2021-01-20). 
  2. ^ Gabe Stein. How an Arcane Coding Method From 1970s Banking Software Could Save the Sanity of Web Developers Everywhere. August 2013 [24 January 2016]. (原始内容存档于2020-11-11). 
  3. ^ Conway, Melvin E. Design of a separable transition-diagram compiler. Communications of the ACM. 1963, 6 (7): 396–408. doi:10.1145/366663.366704. 

外部链接