Инструмент для визуального программирования

Мне нужен инструмент для графического представления рабочего процесса в программе (например, электронные схемы описаны в графическом представлении). Представление должно быть таким: функции - это прямоугольники, а стрелки между прямоугольниками - это «сообщения». Нравится:

альтернативный текст 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)  

or

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

Речь идет не о связанных списках, а о логических связях между функциями.
Инструмент должен только сгенерировать текстовое представление из графического.
Что ж, на странице Wiki я нашел много информации о «Визуальное программирование» и «Графическое программирование» и так далее. В основном все описанные инструменты классные, но несколько сложные. И список довольно длинный, поэтому на их тестирование уйдет много времени. Так что мне нужно мнение реальных, живых людей.

Требования:

  • Бесплатно
  • Простой
  • Можно экспортировать как минимум на один реальный язык, например XML, C ++, LISP или любой другой.

И было бы действительно хорошо, если бы этот инструмент можно было настраивать.

Мне нравится инструмент FlowDesigner: вроде бы почти то, что мне нужно, но он не может экспортировать ни на один язык ... Увы.

UPD: упомянутая мною вики-страница: Графическое программирование
UPD2: ну я решил написать свой инструмент ...


person avp    schedule 02.12.2008    source источник
comment
предоставьте ссылку на страницу Wiki, мне интересно   -  person Mark Stock    schedule 02.12.2008
comment
Я изучаю Лисп. Второй S-expr, который вы предоставляете, содержит x, y, что мне интересно из-за запятой. Lisp обычно использует пробелы, как и в вашем первом S-expr.   -  person Mark Stock    schedule 02.12.2008
comment
Я не понимаю. Ответ вроде клавиатуры и экрана.   -  person Svante    schedule 03.12.2008
comment
2Mark Stock: это просто другой синтаксис для (f (+ (g (z x y)) 5)). В этом нет ничего особенного или интересного. 2Harleqin: ну почему тогда электронные схемы нарисованы символами, а не представлены в виде текста? Я имею в виду не физические, а логические вещи.   -  person avp    schedule 03.12.2008
comment
Я не совсем понимаю твой вопрос. Вам нужен инструмент, в котором можно рисовать, например диаграммы в виде прямоугольников и указателей (xcf.berkeley.edu/~jmacd/envdraw /node2.html)?   -  person Jonas    schedule 03.12.2008
comment
2Jonas: спасибо за вопрос, я попытался уточнить вопрос.   -  person avp    schedule 04.12.2008


Ответы (5)


Как насчет использования чего-то вроде Graphviz?

person leppie    schedule 04.12.2008

Ознакомьтесь с инструментами Microsoft DSL - http://msdn.microsoft.com/en-us/library/bb126259.aspx

Это «дизайнерский генератор» - позволяет вам определять ваш собственный формат диаграммы, указывать формы, стрелки, цвета и т. Д. И генерирует для вас дизайнер, который может редактировать такие диаграммы и экспортировать любые текстовые артефакты о вашей диаграмме (например, XML или код).

person Kirill Osenkov    schedule 04.12.2008
comment
Есть какой-нибудь рабочий пример? Решение кажется довольно общим для моей задачи. - person avp; 04.12.2008
comment
Извините, я просто не могу разобраться в этих документах: это огромный объем, и кажется, что это середина какого-то решения какой-то задачи (DSL) ... - person avp; 04.12.2008
comment
Это может быть лучшей отправной точкой: code.msdn.microsoft.com/DSLToolsLab - person Kirill Osenkov; 06.12.2008
comment
Должен повторить это. Инструменты DSL просто потрясают. Трудно начать, но как только ты начинаешь катиться ... ну ... веселье никогда не заканчивается. - person Dmitri Nesteruk; 07.12.2008

Предупреждение: бессовестная затычка

Вы видели Memention Designer?

Он построен на настраиваемом движке и может выводить сообщения практически на любом языке.

Но мне очень жаль. Это не совсем бесплатно.

alt text
(источник: 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;
}
person epatel    schedule 04.12.2008

http://www.graphviz.org/

HTH

person plan9assembler    schedule 04.12.2008

Что насчет использования библиотеки на основе .net и WPF TUM.CMS.VPLControl?

введите описание изображения здесь

person vplmaster    schedule 14.08.2015