基于流程编程

在计算机编程中，基于流程（flow-based）编程，缩写为FBP，是一种编程范型，它将应用定义为黑箱进程的网络，它们经过预先定义的连接，通过消息传递来交换数据，而这里的连接是在“外部”指定给进程的。这些黑箱进程不需要更改内部，就可以无尽的重新连接而形成不同的应用。FBP因而是天然基于构件的。 FBP是一种特殊形式的数据流程编程，它基于了有界缓冲区，带有确定生存时间的信息包，命名端口，和独立的连接的定义。 基于流程编程由J. Paul Morrison在1970年代前期发明，最初实现于为加拿大银行开发的软件中。FBP在初起阶段受到同期的一些IBM模拟语言（英语：Simulation language）的强烈影响，特别是GPSS（英语：GPSS），但是它的根基完全一致于康威关于协程的开创性论文。 下列框图展示了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）所称谓的“可配置的模块化”。 演员模型 通信顺序进程 并发计算 数据流程 数据流程图 数据流程编程 函数式响应式编程 Linda (协作语言)（英语：Linda (coordination language)） 低程式碼開發平台 MapReduce Node-RED 管道编程 杰克逊结构化编程 Flow-based Programming. [2020-05-02]. （原始内容存档于2021-01-20）.  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）.  Conway, Melvin E. Design of a separable transition-diagram compiler. Communications of the ACM. 1963, 6 (7): 396–408. doi:10.1145/366663.366704.  Razdow, Allen. Building Enterprise Data Refineries. DMReview. December 1997 [2006-07-15]. （原始内容存档于2005-03-15）.  Mayer, Anthony; McGough, Stephen; Gulamali, Murtaza; Young, Laurie; Stanton, Jim; Newhouse, Steven; Darlington, John. Meaning and Behaviour in Grid Oriented Components (PDF). London e-Science Centre, Imperial College of Science, Technology and Medicine. 2002 [2020-05-02]. （原始内容存档 (PDF)于2012-02-04）.  Black, Andrew P.; Huang, Jie; Koster, Rainer; Walpole, Jonathan; Pu, Calton. Infopipes: An abstraction for multimedia streaming (PDF). Multimedia Systems (Springer-Verlag). 2002, 8 (5): 406–419 [2006-08-10]. doi:10.1007/s005300200062. （原始内容存档 (PDF)于2017-08-12）.  Kra, David. zSeries and iSeries servers in the grid domain. IBM DeveloperWorks. October 2004 [2006-07-13]. （原始内容存档于2005-03-13）.  Ludäscher, Bertram; Altintas, Ilkay; Berkley, Chad; et al. Scientific Workflow Management and the Kepler System (PDF). San Diego Supercomputer Center. September 2004 [2006-07-14]. （原始内容存档 (PDF)于2017-09-22）.  Bickle, Jerry; Richardson, Kevin; Smith, Jeff. OMG Software Radio Specification Overview for Robotics (PDF). Object Management Group - Software-Based Communications. 2005 [2006-07-15]. （原始内容存档 (PDF)于2006-07-14）.  Blažević, Mario. Streaming Component Combinators. Proceedings of Extreme Markup Languages. 2006 [2006-11-09]. （原始内容存档于2007-09-18）.  Kauler, Barry. Flow Design for Embedded Systems, 2nd Edition. R&D Books/Miller Freeman. 1999. ISBN 978-0-87930-555-0.  US patent 5204965,Guthery, Scott B.; Barth, Paul S. & Barstow, David R.,「Data processing system using stream stores」,发行于1993-04-20,指定于Schlumberger Technology Corporation  Morrison, J. Paul. Flow-Based Programming. Application Developers' News. March 2013, (1) [2014-05-25]. （原始内容存档于2014-08-08）.  Staplin, George Peter. Tcl Flow-Based Programming - TFP. 2006 [2010-10-07]. （原始内容存档于2020-11-27）.  Johnston, Wesley M.; Hanna, J. R. Paul; Millar, Richard J. Advances in dataflow programming languages. ACM Computing Surveys. March 2004, 36 (1): 1–34. doi:10.1145/1013208.1013209.  Koster, Rainer; Black, Andrew P.; Huang, Jie; Walpole, Jonathan; Pu, Calton. Thread transparency in information flow middleware. Software: Practice and Experience. April 2003, 33 (4): 321–349 [2006-12-05]. doi:10.1002/spe.510.  Stevenson, Tony. Review of "Flow-Based Programming". PC Update, the magazine of Melbourne PC User Group, Australia. February 1995 [2006-12-06]. （原始内容存档于2006-09-25）.  Lea, Doug. Composing Oneway Messages. May 2001 [2006-12-06]. （原始内容存档于2006-09-07）.  Bowers, Shawn; Ludäscher, B.; Ngu, A.H.H.; Critchlow, T. Enabling Scientific Workflow Reuse through Structured Composition of Dataflow and Control-Flow (PDF). SciFlow '06. [2006-12-06]. （原始内容存档 (PDF)于2007-02-05）.  Sorber, Jacob; Kostadinov, Alexander; Garber, Matthew; Brennan, Matthew; Corner, Mark D.; Berger, Emery D. Eon. Eon: a language and runtime system for perpetual systems. Proceedings of the 5th international conference on Embedded networked sensor systems - Session: Power management. 2007: 161. ISBN 9781595937636. doi:10.1145/1322263.1322279.  Fiedler, Lars; Dasey, Timothy. Systems and Methods for Composable Analytics. National Technical Information Service. 2014 [2014-04-01]. （原始内容存档于2014-08-26）.  Matt, Carkci. Dataflow and Reactive Programming Systems: A Practical Guide. CreateSpace Independent Publishing Platform. 2014. ISBN 978-1497422445.  Lampa, Samuel; Dahlö, Martin; Alvarsson, Jonathan; Spjuth, Ola. SciPipe - A workflow library for agile development of complex and dynamic bioinformatics pipelines. bioRxiv. 2018: 380808 [2018-08-02]. doi:10.1101/380808. （原始内容存档于2018-08-03）.