DRAKON.SU https://forum.drakon.su/ |
|
DRAKON Editor: генерация кода из диаграмм https://forum.drakon.su/viewtopic.php?f=145&t=3716 |
Страница 1 из 15 |
Автор: | Степан Митькин [ Воскресенье, 11 Декабрь, 2011 03:18 ] |
Заголовок сообщения: | DRAKON Editor: генерация кода из диаграмм |
DRAKON Editor теперь позволяет программировать на С/С++, Python, Tcl. Из диаграмм генерируется код на этих языках. http://sourceforge.net/projects/drakon-editor/files/ Причём та часть редактора, которая генерирует код, сама нарисована в редакторе. (Поднимает себя за волосы из болота.) |
Автор: | Дмитрий_ВБ [ Воскресенье, 11 Декабрь, 2011 12:51 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
То, что генерится код - это понятно. ИС Дракон уже давно это умеет. Вопрос в том, какой именно код генерится и как - при помощи операторов безусловных переходов, как в ИС Дракон, или структурированный код без использования goto. И есть ли возможность считывания уже сгенерированного кода обратно в среду. Ответьте пожалуйста, а то фраза "мы можем генерить код из ДРАКОН-редактора является слишком общей и нуждается хотя бы в кратких пояснениях, прежде чем разбираться более подробно, а что там и как. А чтобы было более наглядно выложите, пожалуйста, текст какой-нибудь сгенерированной вашим ДРАКОН-редактором процедуры (метода) на С++ . |
Автор: | Степан Митькин [ Воскресенье, 11 Декабрь, 2011 23:05 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
1) При генерации кода на C и C++ используются goto. 2) В Питоне и Tcl goto нет, поэтому приходится его эмулировать. 3) Дисассемблера из C++ в ДРАКОН нет и не будет. 4) Примеры диаграмм и код, который из них получается, расположены в папке examples внутри drakon_editor1.5.zip Его можно взять здесь: http://sourceforge.net/projects/drakon-editor/files/drakon_editor1.5.zip/download |
Автор: | Степан Митькин [ Воскресенье, 11 Декабрь, 2011 23:08 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Страничка проекта здесь: http://drakon-editor.sourceforge.net/ |
Автор: | Владислав Жаринов [ Понедельник, 12 Декабрь, 2011 08:54 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Степан Митькин писал(а): ... Чем?.. 2) В Питоне и Tcl goto нет, поэтому приходится его эмулировать. Степан Митькин писал(а): ... Ну и не надо...
3) Дисассемблера из C++ в ДРАКОН нет и не будет. ... |
Автор: | Степан Митькин [ Вторник, 13 Декабрь, 2011 15:25 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
В DRAKON Editor'е редактировать сгенерённые исходники тоже не нужно. Можно подглядывать в них иногда для целей отладки. Генератор расставляет в коде метки, чтобы было ясно, откуда что в нём взялось. |
Автор: | Степан Митькин [ Вторник, 13 Декабрь, 2011 16:33 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Для эмуляции goto в Python и Tcl используется вечный цикл, переменная со следующей меткой и конструкции if внутра цикла. Кто-нибудь знает другие способы? eval/exec не подходят, так как делают генерируемый код ещё более трудночитаемым. Вот пример расчёта последовательности Фибоначчи. Переменная с меткой называется _next_item_. Код: def fibonacci(n):
_next_item_ = 153 while True: if _next_item_ == 153: _sw_153 = n if _sw_153 == 0: #item 157 result = [0] _next_item_ = 168 elif _sw_153 == 1: #item 158 result = [0, 1] _next_item_ = 168 else: #item 159 result = [0, 1] #item 1630001 i = 2 _next_item_ = 1630002 if _next_item_ == 1630002: if i <= n: #item 164 f2 = result[i - 2] f1 = result[i - 1] fib = f1 + f2 #item 165 result.append(fib) #item 1630003 i += 1 _next_item_ = 1630002 continue else: _next_item_ = 168 if _next_item_ == 168: return result |
Автор: | Владислав Жаринов [ Воскресенье, 18 Декабрь, 2011 12:04 ] |
Заголовок сообщения: | Re: DRAKON Editor: эмуляция силуэта без явных БП |
Ага... типа "зацикливание кейса", как в /Поликарпова, Шалыто, 2010, Гл. 2/ для кодирования автоматов... Можно реальный ЦД сделать - типа показанного на схеме в этом посте. Практически это делается "по методу" вкладыванием простых циклов друг в друга всегда перед условием предыдущего. Обсуждалось здесь - наглядно на картинке. Сам порядок вложения можно обеспечивать "организационно" - чисто действиями сочинителя "по инструкции", а можно "технически" - реализовав в редакторе атом "цикл Дейкстры" и операцию "Добавление ветви в ЦД", по образцу описанного здесь. Метка не нужна, но надо правильно формулировать условия входа в ветки. |
Автор: | Евгений Темиргалеев [ Воскресенье, 18 Декабрь, 2011 12:19 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
По предложению Владимира Паронджанова важное замечание Петра Приклонского выделено в отдельную тему viewtopic.php?f=79&t=3723 |
Автор: | Степан Митькин [ Понедельник, 02 Январь, 2012 01:23 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Вышла новая версия редактора - 1.8 Реализован новый, продвинутый режим редактирования. Теперь, если взять мышкой икону и передвинуть её, вместе с иконой потянется её шампур и всё, что на нём сидит. Движущиеся иконы и линии будут толкать перед собой другие элементы диаграммы. Целостность диаграммы при этом не нарушается - линии не пересекаются, а иконы не наезжают друг на друга. Таким же образом можно передвигать и линии. Вставлять иконы посередине больших шампуров теперь гораздо удобнее. Так же легко можно "расчистить" место в любом месте диаграммы под новый шампур. Для активации продвинутого режима нужно удерживать кнопку Shift. Скачать можно здесь: http://drakon-editor.sourceforge.net/ |
Автор: | Владислав Жаринов [ Понедельник, 02 Январь, 2012 13:38 ] |
Заголовок сообщения: | Автоперечерчивание дракон-схем |
Ну наконец-то есть, видимо, обсуждавшееся здесь в правиле ДЗ. А почему бы этот режим не сделать основным/единственным? Ещё руку задействовать не очень удобно... |
Автор: | Степан Митькин [ Понедельник, 02 Январь, 2012 14:50 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Владислав Жаринов писал(а): А почему бы этот режим не сделать основным/единственным? Сделать "продвинутый" режим единственным нельзя. Дело в том, что работа в этом режиме оставляет топологию диаграммы без изменений. С его помощью можно как угодно "мять" геометрическую форму диаграммы, но логические связи между иконами остаются, как были. Зачем этот "продвинутый" режим нужен: 1) Чтобы освободить место в диаграмме для новых икон или шампуров. 2) Чтобы, наоборот, "сжать" диаграмму, устранив ненужное свободное место. 3) (Самое главное!) Чтобы навести в диаграмме красоту и эстетический порядок. И всё это - с минимальным количеством действий. Владислав Жаринов писал(а): Ещё руку задействовать не очень удобно... Согласен. Что-то надо делать. Но другие альтернативы ещё хуже: 1) Переключение режимов специальной кнопкой на панели инструментов (далеко тянуться). 2) Одномоментное переключение на манер CapsLock (легко забыть, в каком режиме находишься). Может, можно задействовать WSAD для выбора текущего режима использования мыши? А то сейчас так: Ctrl - выбор нескольких объектов Shift - "продвинутый" режим. Средняя кнопка мыши - перемотка (скроллирование) холста. |
Автор: | Владислав Жаринов [ Понедельник, 02 Январь, 2012 14:58 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
А, я имел в виду "режим" как перечерчивания. Т.е. всегда, когда по результатам редактирования изменяется пространство, занимаемое хоть одним видимым элементом представления (текстом, фигурой/линией) - перечерчиваем. Ну а как отдельная от изменений содержания возможность "перетаскивать выделение" - это само по себе... |
Автор: | Владимир Паронджанов [ Понедельник, 02 Январь, 2012 17:50 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Дополнительно о Степане Митькине см. здесь viewtopic.php?f=62&t=3743 |
Автор: | Степан Митькин [ Вторник, 17 Январь, 2012 00:36 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Сделал видео процесса редактирования. Версия редактора - 1.8 При просмотре можно выбрать высокое разрешение. http://www.youtube.com/watch?v=_4PV78oSdwk |
Автор: | Владислав Жаринов [ Вторник, 17 Январь, 2012 09:03 ] |
Заголовок сообщения: | DRAKON Editor: генерация кода из диаграмм |
Ух ты... какое "интуитивное редактирование"... Сборка из фигур и линий как из "кубиков" - тоже ничего... Хорошо, что можно перетаскивать вершины, как говорил Станислав, "с отпихиванием" части содержания, в которую упирается перетаскиваемое. Конечно, отдельное окно для текста снова... но хоть не закреплённое на экране... и рисуется вблизи соответствующей вершины... Перечерчивается вроде бы нормально. В общем, чисто "технологически" - вроде как ура Степану! Вопросы (м.б. для будущих демок): 1) Если не туда ребро/вершину поставил - как убирать? 2) Есть копипаст по выделению? 3) Как готовится к трансляции? 4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)? 5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)? М.б. есть смысл давать также текстовый вариант, как у Ефанова - если есть желание/возможность делать... |
Автор: | Степан Митькин [ Вторник, 17 Январь, 2012 11:23 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Спасибо за отзыв! Владислав Жаринов писал(а): 1) Если не туда ребро/вершину поставил - как убирать? Просто взять икону или линию "за тушку" и перетащить. Чтобы икона толкала другие элементы, нужно держать Shift. Владислав Жаринов писал(а): 2) Есть копипаст по выделению? Есть. Можно также выделить несколько элементов. Владислав Жаринов писал(а): 3) Как готовится к трансляции? Никакая особенная подготовка не требуется. Язык программирования только надо выбрать. Владислав Жаринов писал(а): 4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)? В одном файле может быть много схем. Внутри проекта можно создать дерево папок и хранить схемы внутри них. Связь между схемами поддерживается через элементы контекстного меню "Find all references" и "Go to definition". Владислав Жаринов писал(а): 5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)? А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования. ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос. Есть старые наработки, например http://knarvik.sourceforge.net/ |
Автор: | Владислав Жаринов [ Среда, 18 Январь, 2012 10:31 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
Степан Митькин писал(а): ... А, нет, значит, и того, что у Ярослава в ДРОНе (D2O)... когда объявления помещаются в вершину как особый текст (у него в комментарий)?..Владислав Жаринов писал(а): 5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)? А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования.ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос. Собственно, оно, может, и лучше - изучить вопрос и дать что-то... ну, перспективные предложения Ярослава вы, наверное, видели... как и мои... Степан Митькин писал(а): ... Значит, просто "мысленно отбрасываем" от полного исхтекста на языке всё, кроме арифметических и логических выражений - и их пишем в релевантные вершины схемы? А редактор при трансляции всё добавит точно по стандарту выбранного языка?
Владислав Жаринов писал(а): 3) Как готовится к трансляции? Никакая особенная подготовка не требуется. Язык программирования только надо выбрать. |
Автор: | vasili111 [ Пятница, 03 Февраль, 2012 09:55 ] | ||||
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм | ||||
Очень понравился DRAKON Editor. Спасибо Вам за его создание. При использование столкнулся с одним багом. При экспортировании дракон-схемы в png выдает изображение с дефектами (см. приложенные файлы). Также было бы хорошо реализовать функцию drag and drop. То есть чтобы была возможность перетаскивать иконы прямо на дракон-схему. При этом было бы хорошо, если при перетаскивании икон учитывалось зажат shift или нет, и соответственно работал обычный или продвинутый режим. То есть при зажатом shift, когда мы берем из панели инструментов икону и располагаем ее на дракон-схеме, но не отпускаем пока левую кнопку мышки, эта икона прикреплялась к остальной дракон-схеме и вся дракон-схема действовала как в продвинутом режиме. А когда мы не зажимая shift, берем из панели инструментов икону и располагаем ее на дракон-схеме, она автоматически не присоединялась бы к дракон-схеме и перемещалась отдельно от дракон-схемы.
|
Автор: | vasili111 [ Пятница, 03 Февраль, 2012 13:50 ] |
Заголовок сообщения: | Re: DRAKON Editor: генерация кода из диаграмм |
В иконе "Loop end" невозможно вводить текст. Это баг или фитча? |
Страница 1 из 15 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |