Pull to refresh
5
Karma
0
Rating
Владимир Паронджанов @Parondzhanov

Разработчик Автор книг

  • Followers 19
  • Following

Умеет ли человечество писать алгоритмы? Безошибочные алгоритмы и язык ДРАКОН

Nehc Вы правильно поняли многие особенности ДРАКОНа. Но насчет «ДРАКОН как средство против ошибок» — эту важнейшую функцию ДРАКОНа вы не поняли. Вы перечисляете известные средства борьбы с ошибками. Но все это (и многое другое) хорошо известно и приносит несомненную пользу.
Все известные человечеству средства не решают проблему ошибок, которая по-прежнему приводит к переделкам, потере времени и приносит человечеству большой экономический ущерб.

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

Для этого используется сложный комплекс мер (а не визуальная проверка как вы предположили). ДРАКОН подавляет ошибки в зародыше (хотя и не все).

Вот один из примеров из статьи Сергея Ефанова, написанной 10 лет назад.
Переписал на ДРАКОНе довольно запутанную функцию из реального проекта.

Функция заработала сразу! Более того, при переносе алгоритма в дракон-схему, я обнаружил, что у меня в ней была ошибка! Эта функция работала уже довольно давно, не в одной сотне изделий. Ошибка не была фатальной, она возникала редко, и компенсировалась переподключением к серверу. Но она была!

В тексте на Си её было незаметно. А при попытке перенести алгоритм на дракон-схему, ошибка стала не просто заметной — алгоритм в этом месте «не вырисовывался»!

С тех пор прошло чуть больше года. Я программирую только на ДРАКОНе.
Сергей Ефанов описывает случай, когда ДРАКОН не позволяет совершить ошибку. Физически не позволяет. Слова Ефанова
алгоритм в этом месте «не вырисовывался»
означают, что алгоритм с ошибкой на ДРАКОНе невозможно нарисовать (в данном конкретном случае).

Умеет ли человечество писать алгоритмы? Безошибочные алгоритмы и язык ДРАКОН

Nehc
Но… Блин… Безошибочность кода достигается только покрытием тестами. Визуальная проверка общей логики может выявить только совсем уж грубые нарушения СМЫСЛА ТЗ, а не сложно выявляемые баги. Ну не предназначен ДРАКОН для этого. Совсем.
ДРАКОН… это упрощение, визуализация кода. Но никак не средство написания «безошибочных алгоритмов»

Спасибо за очень интересный, содержательный комментарий. Меня особенно заинтересовали и удивили эти две цитаты.
Пожалуйста, скажите ваше мнение, что ДРАКОН не является средством для сокращения числа ошибок на чем основано? Это чисто теоретическое умозаключение? Или вы опираетесь на реальную практику использования ДРАКОНа? Если на практику, то нельзя ли рассказать подробнее? Спасибо.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

То есть вы хотите сказать, что дошкольнику понятно условие «красный — нет», но не понятно условие «не красный»?
Я этого не говорил.
Логические связки обозначаются специальными знаками, которые надо изучать и запоминать.

Многим людям это не под силу, они ошибаются. Они боятся формул и избегают их.

Надо помочь таким людям, что я и делаю.
Особенно это важно для врачей.
Логические операции спрятаны в графическом чертеже и становятся невидимыми. Графика языка ДРАКОН хороша тем, что позволяет полностью отказаться от логических математических
формул (стр. 141).
Строгость алгоритмов полностью обеспечивается, но не формулами, а приятной графикой, которая не создает никаких трудностей для врачей.

Подробнее об этом можно прочитать в моей книге для врачей
Глава 8. Логика в медицине и невидимая математика… 122
см. здесь стр. 122-151

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Стало лучше.
И вот почему.
Да и Нет — простые слова, понятные даже ребенку, даже дошкольнику.
А логические связки — вещь сложная. Они под силу только студенту, после изучения логики.
Нельзя сравнивать простые слова с логическими операциями. Это несопоставимые по сложности вещи.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Язык ДРАКОН в военно-патриотическом парке «Патриот»
на военно-техническом форуме «АРМИЯ-2021»


В рамках форума 26 августа 2021 состоялся Круглый стол:
«Актуальные вопросы развития и применения автоматизированных систем управления комплексом технических средств жизнеобеспечения объектов военной инфраструктуры»

Ссылка на Круглый стол

Цель круглого стола:
— обмен опытом и информацией о новых научно-технических разработках в области создания и развития автоматизированных систем управления, мониторинга и контроля комплексов технических средств,
— объединение ведущих научных школ,
— поиск партнёров и установление деловых контактов.

Организатор Круглого стола:
9-е Управление Министерства обороны Российской Федерации

Модератор:
начальник 43 кафедры Военно-космической академии имени А.Ф.Можайского, доктор технических наук, доцент, полковник Абсалямов Дамир Расимович.

На круглом столе представлен доклад И.Е. Ермакова и А.М. Муравицкого:
Русский визуальный язык ДРАКОН — инструмент для быстрой и надёжной разработки алгоритмов систем управления
ie@iermakov.ru
a_muravitsky@okbamur3.ru

Краткое содержание доклада:
В ОКБ АМУР 3 разрабатывается широкий спектр управляющих алгоритмов для ПЛК, для разнообразных промышленных, инфраструктурных и коммунальных объектов.

По нашему опыту, все языки МЭК мало приспособлены для быстрой и надёжной разработки алгоритмов управления.

Они не отображают наглядно состояния управляющей системы, переходы между ними, различные сценарии и исходы каждого логического блока. Управление через дополнительные логические переменные ещё сильнее снижает наглядность.

Как следствие – разработка ведется «методом проб и ошибок», с последующей «агонией отладки».

Мы постоянно встречаем в открытых библиотеках на языке ST пропуски целых логических веток, игнорирование особых случаев – а ведь эти библиотеки используются на тысячах реальных объектов.

Как выход мы применили визуальный язык ДРАКОН (https://drakon.su/), который выводит на другой уровень наглядность и проверяемость алгоритмов управления, улучшает повторное использование логических блоков.

Становится возможной визуальная верификация алгоритма (это не исключает интерактивную отладку как дополняющий инструмент).

Ключевая особенность языка – двумерное структурное программирование, дающее большую свободу управляющих структур, чем классическое структурное программирование (см. И. Е. Ермаков, Н. А. Жигуненко. Двумерное структурное программирование; класс устремлённых графов. – drakon.su/_media/biblioteka_1/ermakov_zhigunenko.pdf).

ДРАКОН определяет однозначное размещение схем на плоскости, для автоматической реализации редакторами. Схема не рисуется, а быстро набирается блоками.

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

Кроме того, ДРАКОН непосредственно поддерживает программирование на основе конечно-автоматной модели.

Опыт ОКБ АМУР 3 по разработке систем управления на основе ПЛК ОВЕН, с генерацией кода на ST из ДРАКОН-схем:
— насосные станции;
— станции высокого давления СОЖ;
— станции поддержания пластового давления;
— тепловые пункты и вентиляционные установки;
— водозаборно-очистительные узлы;
— туннельные водооткачивающие установки;
— сверлильные станки;
— гибочные прессы;
— координатно-режущие станки;
— пищевые производства (пивзаводы и др.);
— процессы взаимодействия ПЛК с базами данных SQL.

Мы использовали ДРАКОН-редактор предыдущего поколения (ИС ДРАКОН), который позволял чертить схемы и в полуручном режиме генерировать ST-код.

В настоящее время мы ведём разработку новой интегрированной среды программирования ПЛК на основе ДРАКОН-схем.

Её преимущества: поддержка проекта ПЛК в целом, высокопродуктивный ДРАКОН-редактор с быстрым вводом схем, поддержка сильной инкапсуляции и повторного использования блоков, экспорт проекта в формате PLCopenXML.

Результатом нашего проекта должна стать отечественная универсальная визуальная система программирования ПЛК нового поколения.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Уважаемые коллеги!

Благодарю всех, кто принял участие в обсуждении моей статьи.
Я учел ряд замечаний, переработал статью и послал ее в медицинский журнал «Виртуальные технологии в медицине». Переработанная статья называется:
Медицинский алгоритмический язык ДРАКОН и программа ДРАКОН-конструктор для создания и применения клинических алгоритмов
«Виртуальные технологии в медицине» — это рецензируемый журнал, в котором используется двойное слепое рецензирование.
Рукопись статьи можно прочитать здесь.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Специалисты по безопасности ПО используют ДРАКОН в методологии, позволяющей:
«создавать ПО, которое с большой вероятностью не будет содержать никаких ошибок и уязвимостей, что критично для систем управления движением».
В статье Защита программного обеспечения системы управления магнитолевитационным транспортом, в частности, сказано:
«На следующем этапе проводится поиск низкоуровневых уязвимостей в полученном коде с помощью существующих методов. Для обеспечения большего процента покрытия возможно совместное использование нескольких методов. Далее выполняется алгоритмизация кода с использованием языка ДРАКОН – визуального алгоритмического языка программирования и моделирования, обеспечивающего большую наглядность [3, 7].

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

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

Обычно блок-схемы позволяют графически отобразить логику
программы, но при достаточно большом объеме программного кода они становятся громоздкими и теряют наглядность.

В отличие от классических блок-схем в дракон-схеме выход влево от
условия запрещен, а маршруты рисуются по принципу «чем правее, тем хуже», т. е. чем правее в алгоритме находится какой-либо блок, тем более неприятную ситуацию он описывает. Это позволяет упростить понимание готовой схемы. Кроме того, дракон-схемы охватывают большую часть популярных высокоуровневых языков программирования.

Таким образом, полученная на третьем этапе алгоритма схема позволит получить наглядное представление исследуемого ПО».

Античность против Средневековья. Чьи армии сильней?

С большим интересом прочитал. Спасибо.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Luke Alan использует Drakon при программировании игр. Вот что он пишет здесь:
Game modeled in Drakon diagrams
I use Drakon daily to work on a game mod which has complicated logic. It is a turn based game in development (but works) which is similar in some ways to chess. Therefore, it has many complicated objects, states, and mechanics to code in. Because of this, I found drakon to be very helpful in writing the game logic.

This was my first time using drakon practically and it taught me a lot. I'm currently in the process of completely rewriting it in drakon again applying what I learned the first time. The main takeaways were to keep diagrams short enough that they fit on a screen, and to abstract away as much as possible in smaller diagrams.

The code base has two .drn files, one is for the lua server side of the game logic (DrakonLua), and the other is for the javascript client side UI logic (DrakonJS), such as what happens when buttons are clicked.

Before I used drakon, I attempted to create this same game using a normal code editor Visual Studio Code, but I kept getting stuck. Drakon enabled me to get to a working alpha version with full gameplay implemented.

See below for a video of the game functionality to get some idea of what was coded. The code base was relatively small for such a mechanically rich game, coming in around 15,000 lines of code.

For me, Drakon is not a toy or experiment, it is the main tool I use to actually make progress in this game development domain.

www.youtube.com/watch?v=qNeu_0d6LRk

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Myclass
Безопасность приходит не от визуальности, а от функтиональных возможностях редактора, который разрешает/запрещает те или иные действия… Т.е. безопасность не от блоков или реализации тех или иных синтаксических конструкций языка, а именно от того, как это всё в редакторе организовано.
В языке ДРАКОН безопасность обеспечивается комплексом мер, в частности, использованием аксиоматического метода, визуального логического исчисления (исчисления икон).

Имеются две визуальные аксиомы (аксиома-силуэт и аксиома-примитив). Из аксиом с помощью правил визуального логического вывода выводятся визуальные теоремы, каковыми являются дракон-схемы силуэт и примитив соответственно. Проще говоря, используется специальный математический аппарат для построения графики дракон-схем.
Аппарат описан здесь, стр. 306-315. Глава 32. Исчисление икон — новый метод предотвращения ошибок.
Буду благодарен за ваши критические замечания.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

unsignedchar
где выпускник вуза сможет применить свои умения в Drakon? Нигде. Зачем тогда его учить?
  • По моим данным, для программирования народ использует программу ИС Дракон Геннадия Тышова. Она имеет лучшую функциональность (но неудобный интерфейс).
  • Для рисования и моделирования используют DrakonHub. Хороший интерфейс user-friendly, но без программирования.
  • Программа Drakon.Tech хороша, но она умеет программировать только на JS, а народ хочет Си.

Говоря народ, я имею в виду программистов ПЛК и микроконтроллеров — это область промышленной автоматики, где ДРАКОН уже практически применяется в мелких объемах.

В подтверждение приведу ссылку, где практики резко критикуют ДРАКОН.
За что критикуют? За отсутствие графической отладки!
Это правильная критика и развитие дракон-инструментов должно идти в этом направлении тоже.

Практики советуют:
Будь симулятор и графическая отладка, Дракон можно было бы встраивать в микроконтроллер, получая полноценный ПЛК.
Правильный совет.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

sk220976
статью я читал очень внимательно
Спасибо. Я рад слышать мнение и критические замечания профессионального врача.
про язык «ДРАКОН» я знаю давно и слежу за развитием, мало того, одно время использовал его в работе
Скажите, а как вы его использовали? Вы рисовали дракон-схемы карандашом на бумаге?
Или использовали универсальный графический редактор типа Visio или CorelDRAW?
Или использовали ДРАКОН-конструктор DrakonHub? Сегодня это наилучший инструмент для изображения клинических алгоритмов.
с этим я не спорю, методически ДРАКОН весьма хорошая штука, я вообще с института все пытался загонять в схемы и таблицы
Понимаю.
даже по МР ковидным для себя схемы рисовал
Что такое MP? Как расшифровать?
хороший алгоритм учит думать, не более. в практике он не особо применим
Я имею в виду вот что. Ко мне обратился Павел врач невролог, рефлексотерапевт, стаж 13 лет из Самарской области,
Он попытался самостоятельно освоить программу «ИС Дракон» Геннадия Тышова, но у него возникли трудности.
Павел попросил меня провести с ним занятие по ДРАКОН-алгоритмам.

Я провел занятие по скайпу, научив его пользоваться программой DrakonHub в режиме Скайпа Демонстрация экрана. Под моим руководством на сайте DrakonHub он нарисовал дракон-схему силуэт — простейший диагностический алгоритм по неврологии. Он освоил идею за час времени, а затем (уже после занятия) стал доводить алгоритм до кондиции. Мы договорились, что он пришлет алгоритм мне на проверку.

В моем представлении желательно сделать единый обширный алгоритм, разбитый с помощью иконы Вставка на множество обозримых взаимосвязанных частей. А в элетронном виде при нажатии на Вставку мы автоматически переходим в нужный алгоритм-процедуру. Программа DrakonHub всё это обеспечивает.
наличие ОДНОГО противопоказания в критической точке — новый алгоритм
Я бы эту мысль выразил чуть иначе. Наличие ОДНОГО противопоказания в критической точке означает, что надо добавить развилку (икону Вопрос), и к правому выходу прицепить икону Вставка (подразумевающую уход в новый алгоритм).
Приглашаю вас на форум ДРАКОНа forum.drakon.su

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

unsignedchar
популярность языка около 0.
Вы правы, согласен с вами.
А нулевая популярность — в том числе и потому что инструментария нет.
Нельзя сказать, что инструментария совсем нет. Кое-что есть.
Зайдите в Википедию статья DRAKON
В карточке языка смотрим
Website drakon-editor.sourceforge.net
Major implementations
GRAFIT-FLOKS (1996),
IS Drakon (2008),
DRAKON Editor (2011),
DrakonHub (2018),
Drakon.Tech (2019)

На github, например, я не нашел ни одного проекта на Драконе.
Есть там два проекта на Drakon.

Какие инструментальные ДРАКОН-программы
имеют открытый исходный код?


Открытый исходный код имеют три программы Степана Митькина.
  1. Программа DRAKON Editor имеет открытый исходный код. sourceforge.net/projects/drakon-editor/files
  2. Исходный код DrakonHub.com выложен на GitHub. Приложение написано на языках ДРАКОН-JavaScript и ДРАКОН-Lua в среде DRAKON Editor. github.com/stepan-mitkin/drakonhub
  3. Исходный код среды разработки Drakon.Tech выложен на GitHub Drakon.Tech написан (нарисован) на языке ДРАКОН в среде DRAKON Editor
    github.com/stepan-mitkin/drakon.tech

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Ну да, она является IDE.
Нет, IDE для ДРАКОНа не существует, это дело будущего.
IDE текстового программирования создавались десятилетиями. Накоплен огромный опыт.

IDE визуального программирования начали создавать с огромным отставанием, намного позже. Они очень слабые. Может быть, LabView чего-то достиг.
т.е., внезапно, «безошибочность» гарантирует не ДРАКОН, а конструктор?
Конечно. ДРАКОН — это книжки на полке и память человека, который их прочел (если прочел). Но память может подвести.
А конструктор — это реальность, его можно пощупать, оценить, пустить в дело, получить отзывы, доработать и т.д.
Успех ДРАКОНа целиком завивисит от успехов ДРАКОН-конструктора.

Я подробно описал ДРАКОН-конструктор, предъявил требования к нему и опубликовал их.
Разработка ДРАКОН-конструктора — не мое дело. Это дело добровольцев, которые читают мои книги и понимают их.

Кстать, я сейчас жду известий о появлении еще одного, новейшего ДРАКОН-конструктора. Двигатель прогресса и центр силы — предприниматель Алексей Муравицкий (ОКБ АМУР №3), о котором я вам говорил.
Он сам (без моего участия) составил требования к ДРАКОН-конструктору, который ему отчаянно нужен для работы.
Я уверен, что Алексей своего добьется.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Myclass
Вы не правы. Программа ДРАКОН-конструктор не является аналогом компилятора. Сходство в том, что ДРАКОН-конструктор содержит транслятор (конвертор) в исходный код целевого языка, например Си или JavaScript.

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

В ДРАКОНе пользователю запрещено рисовать соединительные линии от слова совсем. Линии автоматически без пересечений и без ошибок создает ДРАКОН-конструктор. Для этого придуман институт валентных точек (точек ввода) и макроикон.
Посмотрите в статье gif-анимации на рис. 5, 6, 7.

ДРАКОН-конструктор в целях безошибочности обязан реализовать аксиоматический метод: графика дракон-алгоритма математически строго выводится из двух визуальных аксиом: аксиомы-силуэт и аксиомы-примитив методом визуального логического вывода. Использование визуального логического исчисления — это элементы искусственного интеллекта.

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

Вы говорите, что человек должен знать правила. Вы правы, но это трудно и человеку (пользователю) надо помочь. Только об этом и идет речь.

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

unsignedchar
И сложных условий не люблю
Вы правы, сложные условия — потенциальный источник ошибок.
Эдвард Йодан советует:
«Избегайте без нужды использования сложных булевых выражений… Даже если нет неоднозначностей, такие выражения обычно с трудом понимают все, за исключением их автора» [10]
. ДРАКОН позволяет упростить сложные условия и полностью удалить логические связки из логических выражений. См. мою книгу
стр. 124-183, рис. 68-112
Часть 3. Алгоритмическая логика. Математическая логика в алгоритмах. Визуальная алгебра логики
  • Глава 12. Логические операции И, ИЛИ, НЕ
  • Глава 13. Логическая функция И
  • Глава 14. Логическая функция ИЛИ
  • Глава 15. Как удалить логические связки из логических выражений
  • Глава 16. Канонические логические схемы
  • Глава 17. Логическая функция «исключающее ИЛИ»
  • Глава 18. Сложные логические функции

Медицинский алгоритмический язык ДРАКОН против пандемии и не только. Статья для профессиональных врачей

Клинические алгоритмы в графическом виде (диаграммы) должны разрабатывать именно врачи, но никак не программисты.
Какие врачи? Опытные и знающие специалисты, которые обладают глубокими знаниями, ученые, преподаватели. Или под руководством ученого, его помощники, молодые врачи, владеющие графическим редактором.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity