Friday, March 4, 2011

The tool for visual programming

I need the tool for graphical representing of work flow in a program (like electronic circuits are described with graphical representation). The representation has to be like the following: functions are boxes and arrows between boxes are "messages". Like this:

alt text

This picture shows the following: (c (a) (b))
Where parameters of c() are named as d and e. On C it would be

void c( someType1 d, someType2 e );
someType1 a( void );
someType2 b( void );
....
c( a(), b() );

So I think that I need the tool for manipulation and visual representation of s-expressions like these:

(a (b c d) e)

or

f(g(z(x,y))+5)

It is not about linked lists, it is about logical connections between functions.
The tool has only to generate the textual representation from graphical one.
Well, I've found a lot of stuff on the Wiki page about the "Visual programming" and "Graphical programming" and so on. Mostly all described tools are cool, but somewhat complicated. And the list is pretty long, so it would take a lot of time to test all of them. So I need an opinion of real, alive people.

Requirements are:

  • Free
  • Simple
  • Can export to at least one real language like XML or C++ or LISP or any other.

And it would be really good if this tool were configurable.

I like the FlowDesigner tool: it seems to be almost the thing I need, but it cannot export to any language... Alas.

UPD: The wiki page I mentioned: Graphical Programming
UPD2: well, I decided to write my own tool...

From stackoverflow
  • Check out Microsoft DSL Tools - http://msdn.microsoft.com/en-us/library/bb126259.aspx

    It is a "designer generator" - allows you to define your own diagram format, specify shapes, arrows, colors, etc. and generates a designer for you that is able to edit such diagrams and export any textual artifacts about your diagram (e.g. XML or code).

    avp : Is there any working example? The solution seems to be kinda general for my task.
    avp : Sorry, I just cannot get through these docs: it's an overwhelming volume and it seems to be a middle of some solution of some task (DSL)...
    Kirill Osenkov : This might be a better starting point: http://code.msdn.microsoft.com/DSLToolsLab
    Dmitri Nesteruk : Gotta second this. DSL tools just rock. Difficult to get started, but once you start rolling... well... the fun never ends.
  • What about using something like GraphWiz?

  • http://www.graphviz.org/

    HTH

  • Warning: Shameless plug

    Seen Memention Designer?

    It's built around a configurable engine and can output in almost any language.

    But, I'm sorry. It's not really free.

    alt text

    Above example exports following c-code, but could with some re-configuration generate some else language.

    #include <stdio.h>
    
    /* there are 8 blocks */
    int running;
    /* there are 1 out blocks */
    int state_curr_1;
    int state_next_1;
    
    int main(int argc, char *argv[]) {
      running = 1;
      state_curr_1 = 0;
      while (running) {
        state_next_1 = (state_curr_1 + 19);
        running = (state_curr_1 != (19 * 12));
        state_curr_1 = state_next_1;
        printf("out = %d\n", state_curr_1);
      }
      return 0;
    }
    
    Dmitri Nesteruk : Looks cool, but we've got MS DSL Tools already...

0 comments:

Post a Comment