Sunday, May 3, 2015

This blog will be about flow-based programming (FBP) and, in particular, about an implementation of this programming paradigm using a language whose design closely matches FBP's goals. FBP has its origin in the 1970's and its designer, J. Paul Morrison, has championed it ever since. Recently, NoFlo with its browser-based diagramming tool has sparked renewed interest in FBP.

In the words of Morrison:

"Flow-Based Programming is an approach to developing applications, not in terms of the old von Neumann paradigm, but based on the concept of multiple asynchronous processes communicating by means of streams of data InformationPackets passing over BoundedBuffer connections."

Several languages - Java, C++, C#, Python and, most recently, JavaScript (Node.js) - have been used in support of an FBP style of programming. Given these implementations, it is somewhat ironic that there have been no implementations (AFAIK) of FBP in languages that match the inherent characteristics of FBP even though these languages exist. Notably, there is Erlang and its new incarnation Elixir, both of which have the linguistic facilities for creating processes that communicate via asynchronous message passing. Moreover, these processes are easily and cheaply created and the underlying system - the Erlang virtual machine - can support literally hundreds of thousands of concurrent processes. Importantly, these processes are not operating system threads.

In subsequent posts, I'll talk about the design and the implementation of FBP using the Elixir language. Erlang could have been used as well, but I wish to also explore the use of Elixir's macro facilities.

No comments:

Post a Comment