Monday, July 28, 2008

Going with the data-flow

I've just been reading articles in Wikipedia on dataflow programming. This programming paradigm captures what I think is the greatest need we face to built the multi-threaded applications of the future. It also explains where a lot of the concepts in UML Actions and Activities come from.

From what I understand most of the dataflow languages are visual languages. The SynthMaker tool that came with my Fruity Loops is like that. The page also lists the hardware description languages, Verilog and VHDL, in this category. I think they've left out SystemC since it fits into that mould as well.

But even if dataflow programming is the big new paradigm, I firmly believe that any new paradigm will only be mainstream if it's familiar to developers. There's been some great programming languages over the years that you would swear are much better than C (Ada comes to mind, Pascal was really good too), but if you look at the most popular languages in use today, C-like languages, and C++, Java, and C# in particular, win by a land slide.

So it comes back to what I was mentioning earlier. SystemC is a great example of a C++ library and run-time that implement a different programming paradigm but let you reuse all the skills you've learned with other C++ applications. And, it's an example of a language that supports dataflow programming which we need for massively multiprocessing applications. It's definitely a source of inspiration.

4 comments:

  1. We totally agree with you on two counts: dataflow and familiarity to developers. As do others:
    "The technical problems were all solved long ago with the invention of dataflow programming. What remains is to educate programmers and to bring dataflow ideas into mainstream languages."

    Peter Van Roy - co-author "Concepts, Techniques, and Models of Computer Programming."


    Pervasive DataRush is a Java implementation of the dataflow approach. More at www.pervasivedatarush.com

    Thanks!
    steveh

    ReplyDelete
  2. Excellent. There has been a lot of work in this area. Which leads me to think it'll be more easily accepted by the masses. It's a good idea that's been used in the past and shown to work well. The challenge is to bring it more mainstream with C-like languages, just as we did with object-oriented programming.

    ReplyDelete
  3. You have written a lot about many core and how it is coming and the need for the new language to do the hard work. Having written some high performance code with MPI (using eclipse CDT) I agree it is coming and we need a new tool. I just don't know how it is going to work. In the problems I was solving to get the best performance I had to work at a low level and know all the details of the problem. It is somewhat like writing assembly for parallel processing. It would be nice to have a high level language for parallel processing, but so many of the problems are so depend on one approach or the other that a signal approach seems impossible. It is going to take some new thinking a clever approach and perhaps to some degree some people already know like you say. Lastly I like you reading you thoughts and love cdt eclipse. Thanks so much and keep up the good work!

    ReplyDelete
  4. Eclipse data binding is basically a data flow library for Eclipse.

    ReplyDelete