how "FBP" (or dataflow programming as we call it) works in practice.
A meeting is called of all the people involved - not just programmers and analysts, but users and operations personnel as well. The essential logic of the program is put up on the wall, and the program designers walk through the program structure with the group. During the ensuing discussion, they realize that two new modules have to be written and some other ones have to change places. Total time to make the changes - a week!
Hi Morgan and Ged, Interesting discussion! A couple of quick comments as I'm reading this at the airport: Although DrawFBP is just the diagramming tool, it can actually generate runnable Java, C#, or NoFlo program. Now a DrawFBP diagram can always be expressed using Wayne Stevens' notation, e.g. proc1(comp1) OUT -> IN proc2(comp2), proc2 OUT2 -> IN proc3(comp3), [etc.].. so the diagram and the text are exactly equivalent - except of course for xy coordinates... Henri Bergius has suggested that we add a generator for this notation to DrawFBP - any other interested parties? Some of the discussion seems to bear on whether diagrams or text are easier to edit. Granted text is easier to move around, so we have to balance that facility with a sophisticated graphical editor. On the other other hand, for me the text is harder to grok. When you come down to it, visual vs. text is a personal preference: most of the people I meet lean to visual, but I agree that a visual editor needs powerful visual transformation capabilities... We have made a start on that with the Enclosure feature of DrawFBP (thanks, Bob!), but we could certainly go further. I also have a simple multiplexing feature, but totally agree that it needs to be made more powerful! As against that, I have told the story of Chuck before - who built a 200-node network, using the stepwise refinement function in FBP (the DFDM implementation specifically) without ever drawing a single picture! That's just the way his mind works! BTW IMO there hasn't been enough discussion about stepwise refinement and how it ties in with FBP... Happy Easter, everyone! Paul PS Ged, I need to study your answer more carefully - hopefully early next week.
Ged has just answered your post, and I agree that I also would like to
see the official definition of dataflow. If we use it to denote all
approaches in which data can be said to "flow", it has to include
hardware, software, and indeed a sizable chunk of the real world. If
someone wants to try to untangle all the different dataflow paradigm
variations, s/he is welcome to try! I think Ged's dimensions of
comprehensibility and describility could be a useful way to organize
the concept space, but I wouldn't know how to position different
systems within that space. If you read my book, esp. Chap. 27 of the
new edition, you will realize that I essentially just threw up my
hands, and settled for giving thumbnail sketches of a number of what I
considered related systems. I have been told that I missed a lot, and
of course more are sprouting every week!
That said, 1) I don't believe I ever tried to separate FBP from
dataflow - in fact the oldest implementations that I worked on used the
term "dataflow" (with or without a separating blank), but we later
switched to "FBP" just because "dataflow" was so broad. I believe the
term is used nowadays more to describe hardware implementations - but I
may be wrong...?
2) I started with IBM in England, and once heard Hoare speak (it must
have been before 1964, as I left the UK then), but IIRC it was about
functional programming, not CSP. CSP was one of the concepts I ran
across _after_ I "discovered" FBP, and then started searching the
literature for similar concepts. My strongest influence in the very
early days was my experience with simulation languages - again described
in my book - the early descriptions of CSP seemed to me to be less
powerful than FBP - but I may have been wrong about that too :-)
2a) I have a couple of terminology quibbles: a) CSP apparently stands
for "Communicating Sequential Process_es_", so I have a little trouble
with "DAG of CSP_s_". Do you mean "DAG of Sequential Processes"? b)
FBP graphs can be, and often are, cyclic, so I guess we would have to
say "Directed Graph of Sequential Processes" - do the other Group
members think this is a helpful/useful description?
3) Can't say I understand this one - is it covered by the above points?
Regards,
Paul