Indeed. Many, lacking compiler research know-how, just make it a graph-encoding language, which is really not the point of dataflow. Any language trivially mapping to SSA semantics is already a dataflow language, essentially.
SISAL isn't all that bad, ignoring the 80's syntax:
function BottlesOfBeer(i : integer returns array[string])
let
s,bottles,preface,n,nextbottles :=
if i = 1 then
"1"," bottle","If that bottle","No more"," bottles"
elseif i = 2 then
itoa(2)," bottles","If one of those bottles",itoa(1)," bottle"
else
itoa(i)," bottles","If one of those bottles",itoa(i-1)," bottles"
end if;
in
array[1:
s || bottles || " of beer on the wall",
s || bottles || " of beer!",
preface || " should happen to fall... ",
n || nextbottles || " of beer on the wall!",
""
]
end let
end function
Look for the term "streaming". My project is distributed, asynchronous streaming (research name "System S", product name "InfoSphere Streams") which uses a dataflow language called SPL (Streams Processing Language). However, it allows imperative code at the vertices in the dataflow graph. It's appropriate for large scale streaming across whole clusters. The StreamIt project at MIT is not distributed and is synchronous, which maps to single chips much better. In fact, it grew out of making DSPs (digital signal processors) more programmable.
Working with a couple IBM consultants, I had just gotten an MVP of InfoSphere Streams running at a supermajor oil company before I left the job last year :)
We built a dataflow system for Complex Event Processing (CEP) at one of my previous startups. It included both a visual programming GUI and a non-hideous programming language called SPLASH that allowed one to code nodes of the dataflow graph. The product is now known as the SAP Sybase Event Stream Processor, and this page has an example of SPLASH:
http://www.sybase.com/products/financialservicessolutions/co...
You mentioned in your original post that pure visual programming languages have issues, and having a ton of experience with one (Simulink), I wouldn't disagree - especially as the 'codebase' size increases. However a hybrid visual/code approach can work quite well, in my experience; see Stateflow and MATLAB Coder, which are embedded within the graphical Simulink environment.
Very interesting track for somebody eager to learn. May I consider Alice ML and Mozart Oz to be examples of textual data-flow languages. I wonder why these research projects have obv. slowed down resp. never really took off.
P.S.: I was fascinated after reading Peter van Roys book some time ago and still wonder about this a bit disappointed.
SISAL isn't all that bad, ignoring the 80's syntax: