DRAKON.SU

Текущее время: Четверг, 06 Август, 2020 05:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 280 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 03:18 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
DRAKON Editor теперь позволяет программировать на С/С++, Python, Tcl.
Из диаграмм генерируется код на этих языках.
http://sourceforge.net/projects/drakon-editor/files/

Причём та часть редактора, которая генерирует код, сама нарисована в редакторе. (Поднимает себя за волосы из болота.)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 12:51 

Зарегистрирован: Вторник, 15 Декабрь, 2009 11:43
Сообщения: 83
То, что генерится код - это понятно.
ИС Дракон уже давно это умеет.

Вопрос в том, какой именно код генерится и как - при помощи операторов безусловных
переходов, как в ИС Дракон, или структурированный код без использования goto.

И есть ли возможность считывания уже сгенерированного кода обратно в среду.

Ответьте пожалуйста, а то фраза "мы можем генерить код из ДРАКОН-редактора
является слишком общей и нуждается хотя бы в кратких пояснениях, прежде чем
разбираться более подробно, а что там и как.

А чтобы было более наглядно выложите, пожалуйста, текст какой-нибудь сгенерированной
вашим ДРАКОН-редактором процедуры (метода) на С++ .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 23:05 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
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 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Страничка проекта здесь:
http://drakon-editor.sourceforge.net/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 12 Декабрь, 2011 08:54 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Степан Митькин писал(а):
...
2) В Питоне и Tcl goto нет, поэтому приходится его эмулировать.
Чем?.. :)
Степан Митькин писал(а):
...
3) Дисассемблера из C++ в ДРАКОН нет и не будет. :)
...
Ну и не надо... :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 13 Декабрь, 2011 15:25 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
В DRAKON Editor'е редактировать сгенерённые исходники тоже не нужно. Можно подглядывать в них иногда для целей отладки. Генератор расставляет в коде метки, чтобы было ясно, откуда что в нём взялось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 13 Декабрь, 2011 16:33 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Для эмуляции 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 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ага... типа "зацикливание кейса", как в /Поликарпова, Шалыто, 2010, Гл. 2/ для кодирования автоматов... Можно реальный ЦД сделать - типа показанного на схеме в этом посте.
Практически это делается "по методу" вкладыванием простых циклов друг в друга всегда перед условием предыдущего. Обсуждалось здесь - наглядно на картинке.
Сам порядок вложения можно обеспечивать "организационно" - чисто действиями сочинителя "по инструкции", а можно "технически" - реализовав в редакторе атом "цикл Дейкстры" и операцию "Добавление ветви в ЦД", по образцу описанного здесь. Метка не нужна, но надо правильно формулировать условия входа в ветки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 18 Декабрь, 2011 12:19 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 143
Откуда: Россия, Орёл
По предложению Владимира Паронджанова важное замечание Петра Приклонского выделено в отдельную тему viewtopic.php?f=79&t=3723


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Январь, 2012 01:23 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Вышла новая версия редактора - 1.8

Реализован новый, продвинутый режим редактирования. Теперь, если взять мышкой икону и передвинуть её, вместе с иконой потянется её шампур и всё, что на нём сидит. Движущиеся иконы и линии будут толкать перед собой другие элементы диаграммы. Целостность диаграммы при этом не нарушается - линии не пересекаются, а иконы не наезжают друг на друга.

Таким же образом можно передвигать и линии.

Вставлять иконы посередине больших шампуров теперь гораздо удобнее. Так же легко можно "расчистить" место в любом месте диаграммы под новый шампур.

Для активации продвинутого режима нужно удерживать кнопку Shift.

Скачать можно здесь:
http://drakon-editor.sourceforge.net/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Автоперечерчивание дракон-схем
СообщениеДобавлено: Понедельник, 02 Январь, 2012 13:38 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ну наконец-то есть, видимо, обсуждавшееся здесь в правиле ДЗ.
А почему бы этот режим не сделать основным/единственным? Ещё руку задействовать не очень удобно...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Январь, 2012 14:50 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Владислав Жаринов писал(а):
А почему бы этот режим не сделать основным/единственным?

Сделать "продвинутый" режим единственным нельзя. Дело в том, что работа в этом режиме оставляет топологию диаграммы без изменений. С его помощью можно как угодно "мять" геометрическую форму диаграммы, но логические связи между иконами остаются, как были.

Зачем этот "продвинутый" режим нужен:
1) Чтобы освободить место в диаграмме для новых икон или шампуров.
2) Чтобы, наоборот, "сжать" диаграмму, устранив ненужное свободное место.
3) (Самое главное!) Чтобы навести в диаграмме красоту и эстетический порядок.

И всё это - с минимальным количеством действий.

Владислав Жаринов писал(а):
Ещё руку задействовать не очень удобно...

Согласен. Что-то надо делать. Но другие альтернативы ещё хуже:
1) Переключение режимов специальной кнопкой на панели инструментов (далеко тянуться).
2) Одномоментное переключение на манер CapsLock (легко забыть, в каком режиме находишься).

Может, можно задействовать WSAD для выбора текущего режима использования мыши?

А то сейчас так:
Ctrl - выбор нескольких объектов
Shift - "продвинутый" режим.
Средняя кнопка мыши - перемотка (скроллирование) холста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Январь, 2012 14:58 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
А, я имел в виду "режим" как перечерчивания. Т.е. всегда, когда по результатам редактирования изменяется пространство, занимаемое хоть одним видимым элементом представления (текстом, фигурой/линией) - перечерчиваем. Ну а как отдельная от изменений содержания возможность "перетаскивать выделение" - это само по себе...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 02 Январь, 2012 17:50 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 4807
Откуда: Москва
Дополнительно о Степане Митькине см. здесь
viewtopic.php?f=62&t=3743


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Январь, 2012 00:36 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Сделал видео процесса редактирования. Версия редактора - 1.8
При просмотре можно выбрать высокое разрешение.
http://www.youtube.com/watch?v=_4PV78oSdwk


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Январь, 2012 09:03 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Ух ты... какое "интуитивное редактирование"... Сборка из фигур и линий как из "кубиков" - тоже ничего... :)
Хорошо, что можно перетаскивать вершины, как говорил Станислав, "с отпихиванием" части содержания, в которую упирается перетаскиваемое. Конечно, отдельное окно для текста снова... но хоть не закреплённое на экране... и рисуется вблизи соответствующей вершины...
Перечерчивается вроде бы нормально.
В общем, чисто "технологически" - вроде как ура Степану! :)

Вопросы (м.б. для будущих демок):
1) Если не туда ребро/вершину поставил - как убирать?
2) Есть копипаст по выделению?
3) Как готовится к трансляции?
4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)?
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?

М.б. есть смысл давать также текстовый вариант, как у Ефанова - если есть желание/возможность делать... ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Январь, 2012 11:23 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 549
Спасибо за отзыв!

Владислав Жаринов писал(а):
1) Если не туда ребро/вершину поставил - как убирать?

Просто взять икону или линию "за тушку" и перетащить. Чтобы икона толкала другие элементы, нужно держать Shift.

Владислав Жаринов писал(а):
2) Есть копипаст по выделению?

Есть. Можно также выделить несколько элементов.

Владислав Жаринов писал(а):
3) Как готовится к трансляции?

Никакая особенная подготовка не требуется. Язык программирования только надо выбрать.

Владислав Жаринов писал(а):
4) Как со многими схемами работать (скажем, с "дракон-моделью")? Есть ли понятие проекта, для которого можно посмотреть содержание (в т.ч. связи схем, если имеются)?

В одном файле может быть много схем. Внутри проекта можно создать дерево папок и хранить схемы внутри них.
Связь между схемами поддерживается через элементы контекстного меню "Find all references" и "Go to definition".

Владислав Жаринов писал(а):
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?

А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования.
ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос.
Есть старые наработки, например http://knarvik.sourceforge.net/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 18 Январь, 2012 10:31 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Степан Митькин писал(а):
...
Владислав Жаринов писал(а):
5) Как с визуализацией типов? И структуры программы - модульной или ещё какой (тех же классов в "объектных" языках, если будут поддерживаться)?
А вот этого нет совсем. Декларативная часть программы (название и поля класса, например) помещается в описание файла в текстовом виде на выбранном языке программирования.
ДРАКОН хорошо отражает динамическую сторону программы, а для "анатомии", описания структуры данных требуется что-то ещё. Изучаю этот вопрос.
А, нет, значит, и того, что у Ярослава в ДРОНе (D2O)... когда объявления помещаются в вершину как особый текст (у него в комментарий)?..
Собственно, оно, может, и лучше - изучить вопрос и дать что-то... ну, перспективные предложения Ярослава вы, наверное, видели... как и мои... :)
Степан Митькин писал(а):
...
Владислав Жаринов писал(а):
3) Как готовится к трансляции?

Никакая особенная подготовка не требуется. Язык программирования только надо выбрать.
Значит, просто "мысленно отбрасываем" от полного исхтекста на языке всё, кроме арифметических и логических выражений - и их пишем в релевантные вершины схемы? А редактор при трансляции всё добавит точно по стандарту выбранного языка?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 03 Февраль, 2012 09:55 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
Очень понравился DRAKON Editor. Спасибо Вам за его создание.
При использование столкнулся с одним багом. При экспортировании дракон-схемы в png выдает изображение с дефектами (см. приложенные файлы).
Также было бы хорошо реализовать функцию drag and drop. То есть чтобы была возможность перетаскивать иконы прямо на дракон-схему. При этом было бы хорошо, если при перетаскивании икон учитывалось зажат shift или нет, и соответственно работал обычный или продвинутый режим. То есть при зажатом shift, когда мы берем из панели инструментов икону и располагаем ее на дракон-схеме, но не отпускаем пока левую кнопку мышки, эта икона прикреплялась к остальной дракон-схеме и вся дракон-схема действовала как в продвинутом режиме. А когда мы не зажимая shift, берем из панели инструментов икону и располагаем ее на дракон-схеме, она автоматически не присоединялась бы к дракон-схеме и перемещалась отдельно от дракон-схемы.


Вложения:
Цикл ДЛЯ_2.png
Цикл ДЛЯ_2.png [ 27.94 КБ | Просмотров: 19774 ]
Цикл ДЛЯ.png
Цикл ДЛЯ.png [ 15.6 КБ | Просмотров: 19774 ]
Цикл ДЛЯ.rar [2.02 КБ]
Скачиваний: 259
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 03 Февраль, 2012 13:50 

Зарегистрирован: Вторник, 13 Декабрь, 2011 15:31
Сообщения: 113
В иконе "Loop end" невозможно вводить текст. Это баг или фитча?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 280 ]  На страницу 1, 2, 3, 4, 5 ... 14  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2020, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB