DRAKON.SU

Текущее время: Четверг, 01 Декабрь, 2022 13:41

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




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

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

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

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


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

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


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

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

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

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


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

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

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


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

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

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


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

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


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

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

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

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

Изображение

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


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

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

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

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

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


Вложения:
ошибка.PNG
ошибка.PNG [ 37.86 КБ | Просмотров: 911 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 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, нет- будет очередная рисовалка картинок с функцией генерации никому не нужного Си-файла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: два сообщения
СообщениеДобавлено: Вторник, 04 Октябрь, 2022 23:07 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5511
Откуда: Москва
Алексей, когда вы откроете свой редактор, чтобы другие люди могли начать его тестировать и использовать?
https://drakon-c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 05 Октябрь, 2022 05:52 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 77
Откуда: Томск
Владимир Паронджанов писал(а):
Алексей, когда вы откроете свой редактор, чтобы другие люди могли начать его тестировать и использовать?

Проект нуждается в многочисленных доработках, чем я активно занимаюсь в свободное от учёбы время.
Из перечня задач на сегодня были выполнены следующие:
1. Удалено шифрование дракон-схем
2. Изменена концепция валентных точек на "традиционную", описанную в литературе по ДРАКОНу
3. Добавлена возможность поменять Да и Нет в иконе "вопрос"
4. Панель создания была убрана и наверх перемещена панель редактирования иконы
5. В панели редактирования добавлен раздел задания фрагментов программы
6. Изменён принцип отображения иконы "адрес". Теперь он также как и иконы "имя ветви" лежит на точках слияния в петле силуэта. Понимаю, от меня наверное хотели другого - чтобы эти иконы лежали только на вертикалях, но лично меня такие детали не запутывают и дракон-схема всё равно смотрится компактно и ясно.
Вложение:
Выполнение лабораторной работы.png
Выполнение лабораторной работы.png [ 45.99 КБ | Просмотров: 412 ]


Ранее подобные задачи были описаны в этой теме: viewtopic.php?f=143&t=7151

Кроме шести перечисленных выше задач были решены побочные задачи:
7. Созданы вспомогательные средства для заполнения фрагмента программы в иконе
8. Созданы кнопки, позволяющие делать иконы шире или уже, независимо от ширины других икон

На сегодняшний день поставлены задачи:
1. Реализовать пересадку и заземление лиан. Я этим сейчас занимаюсь активно, задет пласт моей же концепции представления соединительных линий. Идёт размышление и составление алгоритмов работы новых функций.
2. Решить вопрос удаления циклов, развилок и переключателей. Эта задача связана от части с предыдущей. При пересадке лианы необходимо удалять старый путь и строить новый.
3. Выделить нижнюю панель для истории действий пользователя. Это позволит возвращать дракон-схемы к предыдущим состояниям. Особенно это важно, если при редактировании обнаружился какой-то баг, который я не смог предусмотреть. Допустим, у пользователя возникла ошибка, которая испортила вид дракон-схемы, а предварительно эта схема не была сохранена. С помощью истории пользователь возвращает дракон-схему до момента совершения губительного действия и сохраняет её или делает другое действие. В жизни так нельзя, а в редакторе было бы неплохо.
4. Реализовать возможность создания нескольких листов с возможностью переключения между ними. Зачастую программные проекты не состоят из одной-единственной функции main. Даже, если брать в пример алгоритм быстрой сортировки, который я приводил ранее. Для полной демонстрации сортировки было создано 3 дракон-схемы. В связи с этим появляется потребность интерпретировать в текст программы целый проект. Если в проекте уже >5 дракон-схем, пользователь устанет переключаться между листами и сохранять каждую схему по отдельности.
5. Встроить компилятор. Признаться, эта задача не зря поставлена в конец списка, так как на текущий момент она представляет для меня наименьший интерес.

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

Дракон-Си будет развиваться дальше и стремиться к тому, чтобы им пользовались люди.


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 3


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

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