There are times when I read a book and have this
Aha! moment, when everything seems to fall into
place. Like when you've been staring at one of these
random dot stereograms
and suddenly you see the hidden picture.
Flow-Based Programming
by J. Paul Morrison, published in 1994 by Van Nostrand Reinhold, is such a book.
It reminded me of
Superdistribution
by Brad Cox (inventor of Objective-C) and of the
Mirror Worlds
by
David Gelernter
(inventor of the
LINDA
system).
With the emergence of a web services infrastructure I expect FBP
to gain wider acceptance in the coming years.
If you have ever been in the position to design a complex networked system with a focus on data throughput and robust performance, FBP will give you a new perspective and new insights into this problem domain. I wish I had known about
FBP when I was designing IPgoo and IPmeter
[1]
[2]
as a
IPDR
collection product for
IP23.
J. Paul Morrison made the full text of FBP available
online. Quoting from it:
In "Flow-Based Programming" (FBP), applications are defined as networks of "black box" processes, which exchange data across predefined connections. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. It is thus naturally component-oriented. To describe this capability, the distinguished IBM engineer, Nate Edwards, coined the term "configurable modularity", which he calls the basis of all true engineered systems.
When using FBP, the application developer works with flows of data, being processed asynchronously, rather than the conventional single hierarchy of sequential, procedural code. It is thus a good fit with multiprocessor computers, and also with modern embedded software. In many ways, an FBP application resembles more closely a real-life factory, where items travel from station to station, undergoing various transformations. Think of a soft drink bottling factory, where bottles are filled at one station, capped at the next and labelled at yet another one. FBP is therefore highly visual: it is quite hard to work with an FBP application without having the picture laid out on one's desk, or up on a screen! For an example, see Sample DrawFBP Diagram.