DRAKON.SU

Текущее время: Вторник, 09 Август, 2022 10:35

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 15 Июнь, 2022 08:06 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 17
Здравствуйте, я студент ТУСУРа Стецко Алексей. Мы вместе с Владимиром Гойником занимались разработкой графической среды программирования "Дракон-Си". Сейчас это тема наших бакалаврских работ. Недавно все завершающие штрихи были выполнены и проект опубликован по адресу:
https://drakon-c.ru/
Возможности среды:
1. Создание дракон-схемы с нуля или редактирование схемы, созданной ранее и сохранённой в этой же среде.
2. Сохранение дракон-схемы в виде PNG-изображения
3. Интерпретация дракон-схемы в текст программы на ЯП Си

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

Тем не менее с общими задачами "Дракон-Си" справляется, и, думаю, будет интересна школьникам/студентам, начинающим изучать программирование. "Дракон-Си" предлагалось опробовать, протекстировать в четырёх учебных заведениях. Школьники (8-11 классы) дали положительные отзывы (средняя оценка - 9 из 10 баллов).
Не запрещается использовать среду всем желающим, заинтересованным в алгоритмизации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Июнь, 2022 10:49 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5460
Откуда: Москва
Алексей, нужны иллюстрации.
1. Выложите дракон-схему в формате png
2. Ваша ссылка не работает. Я исправил ваше сообщение.
Теперь работает.
https://drakon-c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Июнь, 2022 11:10 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 17
Владимир Паронджанов писал(а):
Алексей, нужны иллюстрации.
1Выложите дракон-схему в формате png

Пожалуйста. Это дракон-схема программирования. Стояла следующая задача:
- пользователю предлагается ввести число, кратное трём. Затем пользователю выводится факториал введённого числа.
- после этого число увеличивается до ближайшего, кратного пяти.
- если найденное число совпало с исходным, делается вывод, что введённое число кратно пятнадцати.
- при нормальной работе программа возвращает код 0. Если введённое число имеет остаток от деления на 3 равный единице – код ошибки -1, если остаток равен двум – код ошибки -2.

На картинке показана основная часть алгоритма решения. Есть ещё дракон-схема для написания функции вычисления факториала, но она довольно простая. Так как можно прикрепить одну картинку, я прикрепляю картинку побольше.


Вложения:
Пример.png
Пример.png [ 106.91 КБ | Просмотров: 521 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Июнь, 2022 12:33 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5460
Откуда: Москва
Цитата:
Так как можно прикрепить одну картинку

Почему одну?
Это не так. Можно несколько картинок.
Если будут трудности, вы всегда можете выкладывать картинки в разных сообщениях.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Июнь, 2022 12:36 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 17
Владимир Паронджанов писал(а):
Можно несколько картинок.

Странно, не заметил. Хорошо. Прикрепляю ещё одну дракон-схему. Её упоминание можно увидеть в схеме, присланной ранее, в иконе "вставка".


Вложения:
Пример2.png
Пример2.png [ 15.84 КБ | Просмотров: 520 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Июнь, 2022 20:41 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5460
Откуда: Москва
От модератора. Два сообщения отделены и перенесены в другую тему viewtopic.php?p=106447#p106447


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Июль, 2022 07:25 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1261
Сайт: https://drakon-c.ru/ не открывается.
Почему и надолго ли?

Логика построения схем в браузере была неочевидной для пользователя!

Сами схемы содержали программный код, т.е. самую последнюю стадию разработки.
Алгоритма внятного для непрограммиста, т.е. посыл (целевое описания икон) для написания программного кода отсутствует.

Изображение

В начертании схем имеется ряд отступлений от исходного Дракона.
Некоторые иконы похожи на пауков, имеют до 4-х выводов.
При этом, нанизаны на горизонтальные соединительные линии.
Нет единства принципа в начертании схемы Силуэт, т.к. иконы Ветка нанизаны по горизонтали, а иконы Адрес не нанизаны по горизонтали.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Июль, 2022 08:17 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 17
Спасибо за ваши замечания. Сейчас постараюсь ответить на все вопросы.
LKom писал(а):
Сайт: https://drakon-c.ru/ не открывается.
Почему и надолго ли?


Пробный период хостинга сайта окончился и мы всё собирались с коллегой внести оплату за год. Но у редактора кроме всего прочего я нашёл ещё много моментов, нуждающихся в до(-раз)работке. Могу огласить недоработки, это не секрет:
1. Убрать шифрование дракон-схем в формате JSON. Мы сочли его лишним и к тому же это замедляет процесс загрузки дракон-схемы. А безопасность файла уже ляжет на плечи пользователя.
2. Пересмотреть идею валентных точек. Изменить подсветку ячеек на добавление строк и столбцов с привычным представлением точек в теории ДРАКОНа - круги, лежащие на соединительных линиях.
3. Встроить компилятор (подробнее эту тему поднимал пользователь tonyk viewtopic.php?f=211&t=7146). Внедрение компилятора позволит наглядно показывать принцип работы алгоритма и отмечать ошибки. Пока мысль такая: компилятор выдаёт сообщение об ошибке в N строке кода, скрипт ищет икону, которая интерпретирована на этой строке кода, обращается к ней и подсвечивает ячейку с иконой красным цветом. В общем необходимо движение в сторону наглядности.
4. Улучшить удаление. Решить проблему непустых циклов, развилок, переключателей. Если пользовать удаляет эти атомы, но они содержат блоки, удалять ли их вместе с атомом или перенести на ту же ветвь/линию, на которой лежал атом? Конечно, я склоняюсь к первому варианту и вопрос опять же в программировании этих функций.
5. Перенести панель редактирования наверх, а низ использовать для истории (3 предыдущих действия пользователя, как минимум).
6. Для схем программирования отменить перенос текста во всех иконах, кроме "комментария"
7. Дополнить редактирование иконы "вопрос" возможностью поменять местами Да и Нет.

LKom писал(а):
Сами схемы содержали программный код, т.е. самую последнюю стадию разработки.
Алгоритма внятного для непрограммиста, т.е. посыл (целевое описания икон) для написания программного кода отсутствует.


Согласен с вами, дополню список восьмым пунктом. Такая идея мне тоже приходила во время изучения ИС Дракон Геннадия Тышова. Дракон-схемы программирования имеют два текстовых окна. В одном программный код пользователя, а в другом его общепонятное назначение. Например, "int score = 0" и "инициализация счётчика".

LKom писал(а):
В начертании схем имеется ряд отступлений от исходного Дракона.
Некоторые иконы похожи на пауков, имеют до 4-х выводов.

Я здесь вас немного не понимаю. Расскажите поподробнее, каких "пауков" вы встретили. Успокоим всех арахнофобов.
Если вы говорите о силуэте, я не вижу в этом проблемы. Дракон-схема должна при добавлении ветви расшириться по горизонтали. Так куда добавлять ветвь если не справа от другой ветви?
LKom писал(а):
Нет единства принципа в начертании схемы Силуэт, т.к. иконы Ветка нанизаны по горизонтали, а иконы Адрес не нанизаны по горизонтали.

Здесь тоже соглашусь с вами. Принцип рисования иконы Адрес был взят из редактора "Фабула" Эдуарда Ильченко. Но я не заметил, что и икона Ветка там нанизана тоже по вертикали. Исправим.

Спасибо вам за сообщение. Наш список доработок дополнился:
8. Дополнить панели создания/редактирования полями подобно текстовым окнам ИС Дракон
9. Изменить принцип рисования иконы "Адрес"
Как вы видите список дел довольно велик, поэтому лучше будет выполнить его и опубликовать новую версию приложения. Могу сказать, что в связи с окончанием учёбы мы не ограничены в сроках выполнения. Лучше качественно выполнить работу, чем быстро.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Июль, 2022 07:30 

Зарегистрирован: Пятница, 01 Апрель, 2022 12:31
Сообщения: 25
Alex_st_Tomsk писал(а):
Встроить компилятор

Тут есть два путЯ.

Вариант 1. Создать байт-код, система команд которого максимально упрощает трансляцию в него Дракон-схем. Для понимания посмотрите на язык IL для ПЛК и посмотрите в какие команды преобразуются в него диаграммы, нарисованные на LD. Если ваши команды будут делать внутри себя много работы, то особой разницы в скорости работы по сравнению с компиляцией в машинный код не будет.

Вариант 2. Компиляция в С. Рекомендую использовать GCC. У С, поскольку он изначально рассматривался как язык, в который будут транслироваться другие языки, есть для этого кое-что. Например, используя директивы С-компилятора, можно ставить соответствие номеров строк в исходном языке номерам строк в С-программе. Это нужно для того, чтобы под отладчиком команда, например, "сделать шаг" выполняла один шаг в программе на исходном языке, которому могут соответствовать много строк на С. Но тут надо подумать как это использовать, потому что у Дракона нет формального текстового языка с привязкой к его графическим объектам.

И ещё. Ни в коем случае не встраивайте компилятор! Редактор- отдельно, компилятор- отдельно. Связь между ними через текстовый файл с описанием Дракон-диаграммы, раз уж создатели Дракона не удосужились созданием его текстового описания. Так вы получите два проекта, каждый из которых сможете развивать более-менее независимо один от другого.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Июль, 2022 16:50 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 17
Спасибо, tonyk, за участие в судьбе приложения. Кажется, я писал ранее, что мы придерживаемся второго варианта:
tonyk писал(а):
Вариант 2. Компиляция в С. Рекомендую использовать GCC. У С, поскольку он изначально рассматривался как язык, в который будут транслироваться другие языки, есть для этого кое-что. Например, используя директивы С-компилятора, можно ставить соответствие номеров строк в исходном языке номерам строк в С-программе. Это нужно для того, чтобы под отладчиком команда, например, "сделать шаг" выполняла один шаг в программе на исходном языке, которому могут соответствовать много строк на С. Но тут надо подумать как это использовать, потому что у Дракона нет формального текстового языка с привязкой к его графическим объектам.

Пошаговое исполнение программы тоже интересная идея, постараемся исследовать этот вопрос. Могут ли соответствовать одной ячейке несколько строк кода? Могу сказать, не могут. Причина: текстовые поля веб-страницы не восприимчивы к переносам строк, они заменяют их пробелами. Если пользователь захочет инициализировать три переменные "int a=0; int b=0; int c=0;", то ему придётся записать эти три операцию в одну строку иконы Действие либо использовать три иконы Действие для каждой переменной. В этом плане очевидно "прикрытие" таких строк текстом, понятным "непрограммистам" по типу "объявление трёх чисел". Проблему в этой теме уже поднимал пользователь LKom.
Пока я предлагаю отображать на дракон-схеме ошибки и предупреждения. Принадлежность строки кода какой-либо ячейке определяется индексами в конце этой строки в виде комментария. Учитывая, что код для пользователя помещён в чёрный ящик, считаю это возможным. Пример такой взаимосвязи я показал на картинке в этом сообщении.

tonyk писал(а):
И ещё. Ни в коем случае не встраивайте компилятор! Редактор- отдельно, компилятор- отдельно <...> Так вы получите два проекта, каждый из которых сможете развивать более-менее независимо один от другого.

Этот тезис мне не совсем понятен. Пока описание "редактор-отдельно, компилятор-отдельно" соответствует текущей версии приложения. Но вы ведь сами поднимали вопрос наглядности. У нас - редактор, у пользователя - компилятор. А мы хотели бы, чтобы всё было у нас и пользователь не жонглировал своими средствами.
Можно смешать муку, яйца, дрожжи в миске, потом переложить тесто в корытце, погрузить в духовку и испечь хлеб. А можно закинуть те же ингредиенты в хлебопечь и не использовать другую утварь. Мы стремимся к хлебопечи.
Если вы имеете ввиду, что компилятор вместе с редактором не должны быть на странице, да ещё и так, чтобы экран делился пополам, я с вами согласен. Пользователь не должен догадываться о компиляторе. Единственное, что будет его связывать с ним - кнопка Play, которая интерпретирует схему и подаст код компилятору. Ошибки, предупреждения и консольный ввод-вывод будут скорее всего во всплывающем окне. Можно, конечно, не особо заморачиваться и сообщения компилятора погружать в скрипт и выводить простым алертом (alert) - вот вам и всплывающее окно) Но лучше это выполнить ... "со вкусом".


Вложения:
ошибка.PNG
ошибка.PNG [ 37.86 КБ | Просмотров: 129 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Июль, 2022 06:49 

Зарегистрирован: Пятница, 01 Апрель, 2022 12:31
Сообщения: 25
Alex_st_Tomsk писал(а):
Но вы ведь сами поднимали вопрос наглядности. У нас - редактор, у пользователя - компилятор. А мы хотели бы, чтобы всё было у нас и пользователь не жонглировал своими средствами.

Посмотрите, как это сделано в Экслипсе в свете концепции перспектив. Впрочем, скорей всего, пример консольного gdb будет понятней и проще реализуем. Окно приложения одно, но в нём отображается или редактор, или отладчик.

Если Дракон-редактор отделён от Дракон-компилятора, то нет разницы в какой язык транслировать Дракон, и на каком языке его отлаживать. Тут, по-моему, сложнее будет придумать, как настроить взаимодействие Дракона и целевой платформы. В идеале модуль привязки к целевой платформе должен быть отделён от редактора. На выходе модуля привязки make-файл для GCC. Кстати, я не увидел в Дракон-редактора явно функции создания модулей программы и многолистовых схем. Про отсутствие нормальной печати с разбивкой на листы, на которых автоматически расставлены межлистовые ссылки, уже писал тут: https://forum.drakon.su/viewtopic.php?f=62&t=6996&start=160.

Сейчас ваша цель- это получить Си-файл с привязкой к Дракон-схеме и научиться синхронно "шагать" по Дракон-схеме и Си-файлу. Научитесь- получите основу для создания полноценной DragonIDE, нет- будет очередная рисовалка картинок с функцией генерации никому не нужного Си-файла.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

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


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

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


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

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