计算机编程中,基于流程(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. 

外部链接

编辑


📚 Artikel Terkait di Wikipedia

非基于英语的编程语言

非基于英语的编程语言(英語:Non-English-based programming languages)是指不使用源自英語或與英語詞彙有關的關鍵字的程式語言。這些程式語言可能用源自其他語言的詞彙來表達程式邏輯。 中文編程語言 SAKO information page at HOPL – By

概率编程

概率编程(PP:Probabilistic programming)是一种编程范型,在其中指定了概率模型并自动进行这些模型的推断。它代表了统一概率模型和传统通用编程的一种尝试,使前者更加容易并更广泛的应用。它可以用于建立系统帮助在面对不确定时作出决定。 用于概率编程的编程语言被称为“概率编程语言”(PPL)。

頭等物件

比之下,Scheme中的函數是頭等物件,因為可以用lambda表达式來創造匿名函數並作為頭等物件來操作。 Scott, Michael. Programming Language Pragmatics. San Francisco, CA: Morgan Kaufmann Publishers. 2006:

强函数式编程

Turner, D.A. Elementary Strong Functional Programming. First International Symposium on Functional Programming Languages in Education. Springer LNCS 1022:

代数数据类型

纪70年代在爱丁堡大学开发的小型函数式编程语言。 许多编程语言将代数数据类型作为一等类型概念,包括: Ceylon(英语:Ceylon (programming language)) Clean Coq C++ Elm F# F* Free Pascal Haskell Haxe Hope Idris

面向特性编程

Modeling Turnpike Project Fraclet (页面存档备份,存于互联网档案馆): An annotation-based programming model for the Fractal (页面存档备份,存于互联网档案馆) component model Attribute

非結構化程式設計

使用的,但是在将流数据处理前要注意先对数组定义进行声明。 William W. Cobern. A positive albeit ambiguous case for BASIC programming in secondary science teaching. 非结构化程序设计语言的结构测量

列表推导式

SIGPLAN international conference on Functional programming. International Conference on Functional Programming: 1–10. 2000.  Haskell The Haskell 98 Report