【问题标题】:The tool for visual programming可视化编程工具
【发布时间】:2008-12-02 16:59:39
【问题描述】:

我需要用于图形表示程序中工作流程的工具(就像用图形表示来描述电子电路一样)。表示必须如下所示:函数是框,框之间的箭头是“消息”。像这样:

alt text http://img372.imageshack.us/img372/8471/functionsqv0.png

这张图片显示以下内容:(c (a) (b))
其中 c() 的参数命名为 d 和 e。在 C 上是

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

所以我认为我需要这样的工具来操作和可视化 s 表达式:

(a (b c d) e)  

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

这不是关于链表,而是关于函数之间的逻辑连接。
该工具只需从图形生成文本表示。
好吧,我在 Wiki 页面上找到了很多关于“可视化编程”和“图形化编程”等的内容。大多数描述的工具都很酷,但有些复杂。而且这个列表很长,所以要花很多时间来测试所有这些。所以我需要一个真实的、活着的人的意见。

要求是:

  • 免费
  • 简单
  • 可以导出到至少一个真实的 语言,如 XML 或 C++ 或 LISP 或任何 其他。

如果这个工具是可配置的,那就太好了。

我喜欢 FlowDesigner 工具:它似乎几乎是我需要的东西,但它无法导出到任何语言......唉。

UPD:我提到的 wiki 页面:Graphical Programming
UPD2:好吧,我决定编写自己的工具...

【问题讨论】:

  • 提供“维基页面”的链接,我有兴趣
  • 我正在学习 Lisp。您提供的第二个 S-expr 包含“x,y”,由于逗号,我觉得这很奇怪。 Lisp 通常使用空格,就像在你的第一个 S-expr 中一样。
  • 我不明白。答案似乎是“键盘”和“屏幕”。
  • 2Mark Stock:这只是 (f (+ (g (z x y)) 5)) 的不同语法。这不是太特别或太有趣。 2Harleqin:那么,为什么电子电路是用符号绘制的,而不是以文本形式表示的呢?我的意思不是物理的,而是逻辑的。
  • 我不太明白你的问题。您想要一个可以绘制的工具吗?方框和指针图 (xcf.berkeley.edu/~jmacd/envdraw/node2.html)?

标签: lisp visual-programming graphical-programming


【解决方案1】:

查看 Microsoft DSL 工具 - http://msdn.microsoft.com/en-us/library/bb126259.aspx

它是一个“设计器生成器” - 允许您定义自己的图表格式、指定形状、箭头、颜色等,并为您生成能够编辑此类图表并导出有关图表的任何文本工件的设计器(例如 XML 或代码)。

【讨论】:

  • 有任何工作示例吗?该解决方案似乎对我的任务来说有点通用。
  • 抱歉,我无法阅读这些文档:这是一个压倒性的数量,它似乎是某些任务 (DSL) 的一些解决方案的中间...
  • 这可能是一个更好的起点:code.msdn.microsoft.com/DSLToolsLab
  • 必须支持这个。 DSL 工具非常棒。很难开始,但一旦你开始滚动......好吧......乐趣永无止境。
【解决方案2】:

使用Graphviz 之类的东西怎么样?

【讨论】:

    【解决方案3】:

    警告:无耻插件

    看到Memention Designer

    它是围绕一个可配置的引擎构建的,几乎可以输出任何语言。

    但是,我很抱歉。它并不是真正免费的。


    (来源:memention.com

    上面的示例按照 c 代码导出,但可以通过一些重新配置生成其他语言。

    #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;
    }
    

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        如何使用基于 .net 和 WPF 的库 TUM.CMS.VPLControl

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-22
          • 2011-05-15
          相关资源
          最近更新 更多