|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|
Дракон - визуальный алгоритмический язык программирования и моделирования26.04.2018, 21:12. Показов 9743. Ответов 65
Метки dragon, алгоритм, блок схема, визуализация разработки, дракон, программа, среда программирования (Все метки)
Приветствую
Дракон - https://ru.wikipedia.org/wiki/... 0%9E%D0%9D Захотел найти на вашем форуме информацию по данному языку и понял что тут его особо не жалуют, только кое где он пришелся по душе при программировании пик-контроллеров. Вот что мне удалось найти: Неклассическая теория алгоритмов и язык ДРАКОН По теме микроконтроллеров: Обсуждение ИС Дракон ИС Дракон. Вопрос - ответ. Приручить Дракона Графический язык ДРАКОН для программирования микроконтроллеров Алгоритм работы датчика температуры и влажности DHT11 AVR Dragon и PDI интерфейс Дракон на Андроиде ...если что пропустил, извините, что google накопал. Кроме того я читал на других форумах, в частности специализирующихся на Драконе, так что кое какие представления имею, но думаю ситуация такова, что специалистам он уже не нужен а новичкам, для кого он и создавался, создать нормальную программу не по силам. Конечно есть три более менее рабочие версии Дракона, да и тут я нашел ветку с драконоподобной средой разработки - Легкий путь к созданию блок-схем: Diagram Designer но все же хотелось бы обсудить причины по которым данная идея так и не получила широкого распространения. Так-же хотелось бы все-же обсудить саму идею и поделиться своими соображениями почему верхи не хотят а низы не могут... Я предлагаю всем желающим тезисно высказаться что именно им не нравится и что нравится в Драконе, плюс хотелось бы услышать идеи как все же вдохнуть жизнь в Дракона. Просьба излагать свои мысли понятно для всех. Добавлено через 24 минуты Изложу некоторые свои соображения по поводу визуального представления алгоритмов. Конечно это не ново но хочу подытожить. Итак, блок схемы принято составлять из отдельных фрагментов - иконок (графических единиц, блоков программы) наглядно отображающих элементарные ячейки программы, подробнее Вы можете прочитать в Википедии, ссылка в первом посте темы. Достоинства блочного программирования (имхо): 1. Быстрое восприятие информации и ориентирование в блок схеме программы. 2. Легкое понимание алгоритма для тех, кто с ними знаком вообще, но не знаком с программированием в частности. 3. Блочное трансформирование алгоритма, что уменьшает вероятность ошибок части кода при изменении программы так как сам код внутри блока скрыт и не может быть изменён случайно. 4. Экономия времени при изучении блок схем чужих программ или их фрагментов. 5. Возможность закрепления за каждым блоком фрагментов кода программ из разных языков программирования, да и не только кода но и любых самостоятельно заданных процедур или других данных включая специализированные команды обращения к аппаратной части. (Возможно поэтому он оказался наиболее удобен для программирования пикконтроллеров.) Возможно Вы назовете еще некоторые существенные для вас достоинства, но я перейду к недостаткам. Добавлено через 29 минут Недостатки вообще и существующих реализаций в частности (имхо): 1. Отсутствие возможности автоматического импорта программного кода из других языков программирования в формат блок схем. Это является на мой взгляд самым основным недостатком из-за которого не развивается Дракон. Данный недостаток свойственен всем существующим версиям программ (имхо - возможно я ошибаюсь?). Этот же фактор затрудняет отладку программ созданных в Драконе с помощью других программ. 2. Усложненный просмотр фрагментов кода и отсутствие подсветки синтаксиса, это то-же свойственно практически всем существующим версиям. Да, посмотреть код конечно можно, иначе было бы невозможным вобще составление программного кода, только алгоритма, но реализация на мой взгляд неудобна. Подсветки синтаксиса я не видел ни у кого, возможно ошибаюсь? 3. Компиляция конечной программы и отладка, тут тоже пусто, в лучшем случае есть простая проверка на отсутствие закрывающих тегов или явно отсутствующих частей кода. 4. Работа с VCL то-же нигде не реализована, а это основная проблема уже для новичков. 5. Интеграция в другие программы, например то-же Делфи, что то-же могло бы быть полезно для начинающих. 6. Реализация построения сложных блок схем перечеркивает изначальное удобство в визуальном восприятии, так как на некотором этапе мишура из линий и икон становится не разборчивой а попытки навести порядок приводят к еще большему хаосу. Некоторые решения (костыли) были придуманы, а именно запрет на пересечение лиан (линий соединяющих блоки), вынесение фрагментов блок схем в отдельные модули, уменьшение количества текстовой информации на теле иконок и тому подобное. Данные действия приводят к тому, что пользователь вынужден ориентироваться не в основном окне алгоритма а то и дело перескакивать по под-окнам, что перечеркивает все 4 первых пункта достоинств Дракона. 7. Увеличивается время на построение программы за щет того, что необходимо изучить и сам Дракон, и конечный язык программирования, пусть и менее детально чем это требовалось бы при программировании без вспомогательных средств визуализации. Это возможно то-же не все, но на что хотелось бы обратить внимание в первую очередь, дополните если что. Добавлено через 50 минут Пути устранения недостатков, опять же по моему скромному мнению: 1. Вероятно подход к визуальному представлению блок-схем стоит изменить. а) Исключить возможность перетаскивания блоков вручную. Для этого нужно отойти от существующих гостов на построение подобных схем как устаревших полностью или частично. Под частичным я понимаю сохранение самих иконок для быстрого распознавания блоков но они не должны быть заодно и телом блока. Сама структура блоков должна быть более упорядоченная и выстраиваться самой программой по строгим законам. Варианты таких структур я приведу позже. Это как раз одна из тем обсуждения. б) Конечный пользователь должен иметь возможность самостоятельно создавать как сами блоки так и назначать соответствующий программный код каждому блоку. Хотя конечно изначально программа должна содержать базовые наборы как блоков так и возможность добавлять нужный программный код. Думаю нормальным будет если пользователь будет иметь возможность опционально подгружать нужный программный код по желанию и дополнять его своими наборами фрагментов кода но при этом основной пакет кода будет защищен от редактирования. Возможны варианты. в) Возможность автоматического сопоставления импортируемого кода с имеющимися заготовками для данного конкретного языка и заготовками самого пользователя и представление результата в виде графической блок-схемы Дракон. Само такое графическое представление будет возможным и удобным только при выполнения пункта а, а именно наличия механизма размещения блоков автоматически и строго по определенным законам. При этом не распознанные фрагменты можно то-же представлять графически в виде не распознанных блоков с возможностью их дальнейшей ручной идентификации. г) Отображение содержимого (фрагмента кода программы) блока в постоянно присутствующем окне с кодом всей программы и разумеется с поиском и подсветкой синтаксиса. Сам механизм такой реализации придуман (то-же FireBug для Mozilla или встроенный анализатор кода Хромоногого), то есть при клике или наведении мыши на блок - выделение кода в теле программы соответствующего данному блоку. При этом для редактирования самого пользовательского кода фрагмента или его комментирования должно вызываться отдельное окно. Таким образом будет возможным одновременно видеть и код самой основной программы и блок схему. д) Перемещение по лианам (линиям соединения блоков) по клику по лиане не требуется, для быстрого перемещения по линиям достаточно клика по точкам входа в два соединяемых блока, в конечном итоге нужно начало и конец лианы а не где и как она петляет. Кроме того случайный клик по блок схеме в токе прохождения другой лианы приведет к перемещению к не интересующему блоку. е) При наличии постоянно присутствующего она программы желательно вести проверку кода на лету, насколько это возможно и реализовано в других редакторах кода. ж) Максимально освободить основное окно программы от лишних элементов управления а управление реализовать через контекстное меню. з) Реализация обмена данными с внешними аппаратными устройствами, такими как микроконтроллеры например через блоки управления драйверами реализуемыми самим пользователем а не жестко заданными программой. Очевидно в таком случае нужно создать наборы заготовок таких блоков. и) Ну и само собой возможность распечатки блок схем в бумажном виде для изучения без компьютера. Конечно этот список можно продолжать, но как мне видно требуется комплексный пересмотр подхода к реализации Дракона, существующие варианты показали свою малую жизнеспособность. Это был список основных тезисов, каковы мне видятся на момент написания, идеи по детальной реализации некоторых этих пунктов я изложу позже (у меня их есть немного), кроме того хотелось бы услышать и ваши идеи и замечания. Позже я постараюсь графически изобразить как должна на мой взгляд строиться блок-схема и по каким алгоритмам, ведь и тут нужен алгоритм), а пока, пока.
0
|
|
| 26.04.2018, 21:12 | |
|
Ответы с готовыми решениями:
65
Графический язык ДРАКОН для программирования микроконтроллеров Алгоритмический язык
|
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
||
| 04.05.2018, 15:45 [ТС] | ||
|
Добавлено через 7 минут У меня то-же есть косячек в алгоритме, состояние когда нажимается кнопка 4 лучше перенести в начало опроса на случай если оператор решит, что для включения всех светодиодов лучше нажать все кнопки) Добавлено через 21 минуту Тут я обратил внимание, что есть еще один недостаток существующих реализаций Дракона - нет возможности замораживать ненужные участки алгоритма на случай если они могу понадобиться в дальнейшем, а это бывает нужно довольно часто (то-же что и закомментировать часть кода программы).
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 04.05.2018, 16:35 | ||
|
Впрочем, мой код подходит и для независимых кнопок.
0
|
||
|
|
|||||||||
| 04.05.2018, 16:51 | |||||||||
|
Заметьте такую важную вещь: в каждом состоянии при нажатии одной и той же кнопки осуществляются разные действия. Например при нажатии на кнопку "выключить оба светодиода" в первом состоянии выполнится действие "выключаем синий". Во-втором состоянии действие "выключаем красный". В третьем состоянии действие "выключаем оба светодиода", а в четвёртом "остаёмся в этом же состоянии." Это не просто так. Просто примите это к сведению, и когда горят например оба светодиода, выполните определённые действия. Конкретно мой алгоритм не реализован. Попробую сам реализовать его в традиционном стиле при помощи флагов. Без флагов реализовать невозможно. А потом сравним, что легче для понимания и обьём кода.
0
|
|||||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||||||||||
| 04.05.2018, 17:35 | ||||||||||
|
ИМХО грамотно написанный код на нормальном ЯП гораздо наглядней, чем какая-то схема. И если мне нужны, например, зависимости какого-то метода, то мне удобнее в два клика получить их в виде списка строк кода, в которых он вызывается (с возможностью кликом перейти к любой из этих строк в коде). Например, у меня в основном Сольюшене 50 проектов, всего в приложении около 100 проектов. В самом большом проекте 500 классов, но обычно около 50. Теперь представьте, что я оформил всё это в виде диаграммы классов и пытаюсь найти, куда ведёт вот эта стрелочка зависимости. Как в детской задаче "проведи колобка по лабиринту". Добавлено через 36 минут Зайдите на какой-нибудь сайт с вакансиями и увидите, что на 1 вакансию "программист микроконтроллеров" приходится 10 вакансий "программист 1С". Хотя очень небольшой процент программистов занимается 1С, микроконтроллерами занимается в 10 раз меньше. Для добавления состояния Вам нужно добавить блок кода и внести изменения во все остальные блоки кода. Мне нужно добавить новые функции для новых состояний и изменить инициализацию массива. Так что у меня рефакторинг проще.
0
|
||||||||||
|
|
|||||||
| 04.05.2018, 18:18 | |||||||
|
0
|
|||||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|||||
| 04.05.2018, 19:17 | |||||
|
И обратите внимание, что в основной ветке (которая исполняется чаще всего) у меня нет вызовов функций.
0
|
|||||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
||
| 05.05.2018, 09:02 [ТС] | ||
|
Правда стрелочку забыл нарисовать с "a=в, включить синий" на условие "в-б>Х?"
0
|
||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
||
| 05.05.2018, 09:22 [ТС] | ||
|
Впрочем если случае ошибки оператора предпочтительнее выключать а не включать то последовательность опросов можно сохранить начальную (не 1,2,4,3 а 1,2,3,4) в теле алгоритма.
Добавлено через 10 минут Это конечно уже будет отступлением от стандартов начертания алгоритмов но суть останется Драконовская, то есть создание алгоритма понятным языком и в структурированном виде с последующей компиляцией в машинный код.
0
|
||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|
| 05.05.2018, 10:18 [ТС] | |
|
Приведу данный алгоритм в виде таблицы в первом приближении, что бы понятнее было.
Одна запись (строка) - один блок Я вижу как можно еще упростить, но пока что бы было понятнее покажу так. При чем, если использовать подстановки как это задумано, то вместо надписей действий и условий в таблице алгоритма будет видно не их номера а сами действия.
0
|
|
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|
| 05.05.2018, 12:13 [ТС] | |
|
Там есть ошибки, например по действию 4 вместо Нет нужно назначить Да, и кроме того инициализация переменных и назначение портов можно вынести в отдельную таблицу, но тот рисунок что бы иметь представление о чем я вообще говорю.
Ну и можно назначить столбцы Да/Нет параллельно с условиями и выделять их чекбоксами как активный/неактивный, в общем есть над чем подумать.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
|
| 05.05.2018, 15:41 | |
|
0
|
|
|
8 / 8 / 1
Регистрация: 18.03.2018
Сообщений: 26
|
||||||||
| 06.05.2018, 02:31 | ||||||||
|
Блок-схемой можно определить схематично общий процесс, крупноблочно. Это как ехать по навигатору с закрытыми глазами, который не может показать ни ям, ни пешеходов, переходящих дорогу, ни дураков за рулём. Блок-схемное «программирование» это исключительно монопольная процедура, без права на ошибку. ![]() Любые теории проверяются временем. Время решило, что графические блок-схемы для программирования, это полный провал, и никому не нужно. Никаких преимуществ у такого подхода нет и быть не может. Хотя попытки были, и много. Очень много. Добавлено через 7 минут Поговорим о художественной литературе? Герой будет иконкой человечка. Герой пошёл -- линия -- куда пошёл. Герой думает -- блок в виде облачка. И т.д. Существуют комиксы, но это не то, они не являются другой формой книги, это совершенно другой формат, другое искусство. Речь идёт именно о том, как передать содержание книги в виде блок-схем и ничего не потерять. Возможно ли это? Я думаю, да. Это возможно. Просто другой язык, графический. Разумно ли это? Нет. Не разумно. Но вполне разумно использовать блок-схем, а также инфографики, для обобщения и выражения информации в общем виде. Например, кто кому кем приходится. Кто когда родился/умер, при каких обстоятельствах. И т.д. и т.п. Все инструменты хороши. Вместе, каждому инструменту своя ниша. Заявить, ну а чем молоток не замена микроскопу? Можно. Но зачем людей смешить?
2
|
||||||||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|||||
| 06.05.2018, 23:50 [ТС] | |||||
|
0
|
|||||
|
8 / 8 / 1
Регистрация: 18.03.2018
Сообщений: 26
|
||||
| 07.05.2018, 00:00 | ||||
|
Код программы так-то тоже по сути компилируется в машинные инструкции для процессора, только там это настолько сложно, что не выразить никакой блок-схемой в мире. Но. https://ru.wikipedia.org/wiki/... 0%B8%D1%8F)
0
|
||||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|
| 07.05.2018, 08:36 [ТС] | |
|
А что АДАhttps://ru.wikipedia.org/wiki/... %B8%D1%8F)?
То-же язык программирования, а тема про построение алгоритмов. То, что этот алгоритм впоследствии можно будет преобразовать в код программы или наоборот, это уже функционал самой программы.
0
|
|
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|
| 15.05.2018, 08:00 [ТС] | |
|
Кстати примером блочного моделирования есть LabVIEW от National Instruments.
https://ru.wikipedia.org/wiki/LabVIEW И очень интенсивно развивается между прочим. Дракону просто не дали шанса.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 15.05.2018, 09:29 | ||
|
А Дракон пытается кодировать императивные блок-схемы - с циклами и переменными. Такое проще на Си написать.
0
|
||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|||
| 15.05.2018, 12:10 [ТС] | |||
|
Но суть та, что и дракона, есть блоки которые выполняют разные функции и делятся на классы, причем эти блоки как в виде готовых заготовок так и с возможностью модификации по собственному желанию. Так что я пока её изучаю. Добавлено через 6 минут
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
|
||
| 15.05.2018, 16:22 | ||
|
Добавлено через 13 минут Компьютеры становятся мощнее. У людей становится больше опыта в написании программ. В результате компиляторы становятся всё более умными. Рано или поздно императивное программирование утратит своё единственное преимущество - более высокое качество получаемых машинных инструкций. Раньше было ещё одно преимущество - большая база готового кода. Но сейчас современные языки предоставляют возможность "бесшовно" совместно использовать классы и модули, написанные на разных языках.
0
|
||
|
40 / 40 / 6
Регистрация: 12.01.2016
Сообщений: 406
|
|||
| 16.05.2018, 08:18 [ТС] | |||
|
0
|
|||
| 16.05.2018, 08:18 | |
|
алгоритмический язык Алгоритмический язык! алгоритмический язык и С++ Что мощнее язык программирования Perl или язык программирования PHP Школьный алгоритмический язык Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|