ДРАКОН - Википедия - DRAKON

ДРАКОН
Парадигмавизуальный
Впервые появился1996
Печатная дисциплинаопределяется вторым языком, который является частью выбранного гибридного языка
Интернет сайтдракон-редактор.sourceforge.сеть
Основной реализации
ГРАФИТ-ФЛОКС (1996), IS Drakon (2008), Редактор ДРАКОН (2011), DrakonHub (2018), Drakon.Tech (2019)
Под влиянием
ПРОЛ2, ДИПОЛЬ, ЛАКС
Под влиянием
Платформа QReal DSM[1]
Выполнение алгоритма ДРАКОН анимируется выделением элементов диаграммы в порядке их выполнения.
Внешняя часть алгоритм быстрой сортировки в ДРАКОН-С
Схема ДРАКОН, описывающая транспортировку крионированного пациента

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

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

В отличие от UML Философия языка DRAKON основана на том, что ее можно при необходимости дополнить с помощью гибридного языка, который можно проиллюстрировать как «включение фрагментов кода из текстового языка, используемого в форму, требуемую DRAKON». Таким образом, DRAKON всегда остается простым визуальным языком, который можно использовать в качестве дополнения для программиста, который заинтересован в упрощении поддержки собственного кода проекта или в других долгосрочных потребностях, например, в улучшении эргономики процесса кодирования или в создании код легче просматривать и понимать.

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

Язык ДРАКОН можно использовать как язык моделирования / «разметки» (который считается отдельной программой «ДРАКОН») и как язык программирования (как часть гибридного языка).

Интеграция более строгого, «академического» варианта языка разметки в программирование, например, предоставляемого DRAKON, добавляет синтаксический сахар позволяя пользователям разных языков программирования понимать вклад друг друга в общий проект и даже при необходимости давать комментарии.

История

Разработка ДРАКОН началась в 1986 году с целью устранения возникающего риска недопонимания - и последующих ошибок - между пользователями разных языков программирования в российской космической программе. Его разработкой руководил Владимир Паронджанов при участии Федеральное космическое агентство России (Академик Пилюгин Центр, Москва ) и Российская Академия Наук (Институт прикладной математики им. М.В. Келдыша ).

Язык был построен путем формализации, эргономизации и неклассической структуризации блок-схемы описанный в ISO 5807-85 и ГОСТ «Гост 19.701-90».[2][3]

Целью было заменить специализированные языки, используемые в Буран проект с одним универсальным язык программирования. А именно ПРОЛ2 (ПРОЛ2), используемый для разработки программного обеспечения бортовых систем компьютерной системы Бисер-4 (Бисер-4),[4] ДИПОЛЬ (ДИПОЛЬ), используется для разработки программного обеспечения для компьютерных систем наземного обслуживания)[4] и ЛАКС (ЛАКС), используемые для моделирования.

Работы были завершены в 1996 году (через 3 года после официального закрытия проекта «Буран»), когда автоматизированный ДЕЛО Разработана система программирования «Графит-Флокс».[5]

Этот CASE используется с 1996 года во многих крупных космических программах: международный проект Морской старт, Русский выведение на орбиту верхняя ступень Фрегат (Русский: Фрегат, фрегат),[6] модернизированный тяжелый ракета-носитель (ракета-носитель) Протон-М и т. д. Однако точную роль ДРАКОН в этих проектах определить невозможно. Реальный опыт построения систем с помощью DRAKON остается крайне скудным, так как публично доступны лишь несколько очень коротких фрагментов кода.

Семья ДРАКОН-языков (гибридные языки)

Иконки языка ДРАКОН
Макроиконы языка ДРАКОН.

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

ДРАКОН используется не как отдельный автономный язык, а как семейство гибридных языков, таких как ДРАКОН-C, ДРАКОН-ASM, ДРАКОН-Java и др. Все гибридные языки семейства ДРАКОН имеют единый графический синтаксис, основанный на на блок-схемах. Стандартный графический синтаксис обеспечивает сходство дракон-диаграмм для разных гибридных языков. Используемый текстовый язык использует собственный синтаксис.

Строгое различие графического и текстового синтаксиса наряду с богатой графикой улучшает гибкость и разнообразие выразительных средств языка. Унификация правил графического синтаксиса гибридных языков обеспечивает их концептуальное единство.

Основа графического синтаксиса - графический алфавит. Графические элементы (графические буквы) алфавита ДРАКОН называются иконки (не символы). В графическом алфавите ДРАКОН 27 иконок.

В ДРАКОНЕ есть не только иконки, но и макроиконы. Макроиконы - это графические слова языка ДРАКОН. Так же, как слова состоят из букв, макросы (графические слова) состоят из значков (графических букв). В языке ДРАКОН 21 макроконус.

Иконки и макросы - это строительные блоки для построения дракон-карт.

Важными частями макроунов являются точки валентности. (на иллюстрации справа они изображены в виде маленьких черных кружков). В эти точки можно последовательно вводить значки или микрофоны и размещать их в редакторе драконов в аккуратные, упорядоченные вертикальные ряды.

Дизайн

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

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

Правила DRAKON для создания диаграмм когнитивно оптимизированы для облегчения понимания, что делает его инструментом для увеличение интеллекта.[2][7][8][9]

Дракон-диаграммы больших многоцелевых программ могут быть сложными и трудными для понимания. Набор небольших программ, которые вместе служат одной цели, часто легче понять, если они изображены в виде драконовых диаграмм. Аналогичная проблема существует при сопровождении кода больших программ. Программисты иногда называют эту проблему «правилом 30 [строк кода]».

Другие цели и использование

Хотя DRAKON в первую очередь разработан как инструмент для понимания компьютерных программ, диаграммы drakon также можно использовать для иллюстрации процессов в областях, не связанных с вычислениями.

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

Визуальный синтаксис

Полнотекстовая статья с описанием визуального синтаксиса языка ДРАКОН на английском языке, 12 страниц, скачать бесплатно, pdf.[10]

Руководство

Полное описание языка ДРАКОН представлено в русской книге. Книга состоит из 520 страниц, и ее можно скачать бесплатно.[9]

Примеры

Разветвление

В ДРАКОН менее желательный путь идет вправо.

Алгоритм выхода из квартиры:

  • Наденьте одежду.
  • Если идет дождь, возьмите зонт.
  • Покинуть дом.

Цикл проверки (пока)

Сначала проверьте условие выхода. Затем выполните действие.

Алгоритм тренировки:

  • Разогрев.
  • Пока вы не устали, поднимите вес и отдохните.
  • Повторение.

Цикл do-check (do-while)

Сначала выполните действие. Затем проверьте условие выхода

Другой алгоритм обучения:

  • Разогрев.
  • Поднимите вес.
  • Отдых.
  • Если устали, брось.
  • Повторение.

Примеры программирования на языке ДРАКОН

Эти примеры представляют собой реальный код из реализации Тетрис игра. Примеры написаны на языке DRAKON-JavaScript. Иконки (визуальные примитивы) языка ДРАКОН определяют общую структуру алгоритмов. Фрагменты кода внутри значков (примитивов) написаны на JavaScript.

advanceStep

В advanceStep функция реализует основную логику игры. advanceStep это Государственный аппарат представлен как Древо решений.[11] Игровой движок зовет advanceStep периодически. Этот конечный автомат имеет три состояния: «воспроизведение», «сброс» и «завершение». В зависимости от текущего состояния игра выполняет разные действия. Например, в "игровом" состоянии, когда снаряд падает и снаряд может двигаться вниз, он перемещается на один шаг вниз.

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

Основная логика игры Тетрис на языке DRAKON-JavaScript

Код JavaScript, сгенерированный из ДРАКОН-диаграммы:

функция advanceStep() {    вар _sw_8;    _sw_8 = модуль.государственный;    если (_sw_8 === "игра") {        если (модуль.снаряд) {            если (canMoveDown()) {                moveDown()                возвращаться getStepPeriod()            } еще {                заморозить снаряд()                возвращаться noProjectile()            }        } еще {            возвращаться noProjectile()        }    } еще {        если (_sw_8 === "падение") {            если (canMoveDown()) {                moveDown()                возвращаться DropPeriod            } еще {                заморозить снаряд()                модуль.государственный = "игра"                возвращаться getStepPeriod()            }        } еще {            если (_sw_8 === "законченный") {            } еще {                бросать новый Ошибка(«Неожиданное значение выбора:» + _sw_8);            }            возвращаться неопределенный        }    }}

noProjectile

В noProjectile функция обрабатывает конкретную ситуацию, когда нет падающего снаряда. Если есть заполненная строка, эта строка удаляется из сетки. В противном случае игра пытается вставить новый снаряд. Если для снаряда нет места, игра проиграна.

В noProjectile функция для игры в тетрис на языке ДРАКОН-JavaScript

Код JavaScript, сгенерированный из ДРАКОН-диаграммы:

функция noProjectile() {    если (clearRow()) {        возвращаться getStepPeriod()    } еще {        createProjectile()        если (isGameLost()) {            игра окончена()            модуль.государственный = "законченный"            возвращаться неопределенный        } еще {            возвращаться getStepPeriod()        }    }}

clearRow

В clearRow функция просматривает все строки снизу вверх, пока не встретит строку без пробелов. В этом случае строка удаляется из сетки, счет увеличивается, и темп игры увеличивается.

Алгоритм удаления линии из сетки Тетриса на языке DRAKON-JavaScript

Код JavaScript, сгенерированный из ДРАКОН-диаграммы:

функция clearRow() {    вар ряд, ряды;    ряды = модуль.стекло.ряды    ряд = ряды.длина - 1;    пока (истинный) {        если (ряд >= 0) {            если (rowHasHoles(ряд)) {                ряд--;            } еще {                deleteRow(ряд)                увеличить()                увеличитьСкорость()                возвращаться истинный             }        } еще {            модуль.addedScore = 0            возвращаться ложный         }    }}

Автоматное программирование в ДРАКОН

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

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

В языке DRAKON предусмотрено соглашение, которому должны следовать диаграммы. Это соглашение упорядочивает автоматы и придает им единую структуру ...

Принципиальное различие между диаграммами DRAKON и другими визуальными обозначениями для программирования на основе автоматов состоит в том, что DRAKON сочетает в себе автоматический выбор действий с деревьями решений. Деревья решений делают автоматы более гибкими и понятными для широкого круга разработчиков ...[12]

Анимация выполнения алгоритма ДРАКОН

На рисунке ниже проиллюстрировано выполнение алгоритма силуэтного ДРАКОН. Выполнение алгоритма анимируется путем выделения элементов диаграммы в порядке их выполнения.

Силуэт «Рыбалка» состоит из четырех деревьев:

  • Подготовка к рыбалке.
  • В ожидании укуса.
  • Рыболовные работы.
  • Путь назад.

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

Это означает, что граф потока управления силуэтом всегда имеет путь от значка Заголовок к каждой вершине (узлу) графа потока управления. Следовательно, силуэт не может иметь недоступный код ни при каких условиях.

Выполнение алгоритма ДРАКОН анимируется выделением элементов диаграммы в порядке их выполнения.

Примеры ДРАКОН-программ и эквивалентных им обычных программных кодов

Этот раздел не доработан (будет сделано позже)

Редактор ДРАКОН

DRAKON Editor - программа для создания ДРАКОН блок-схемы.[13] Он используется для двух целей: документирования алгоритмы и программирование. Редактор ДРАКОН написан на Tcl / Tk и работает на Windows, OS X и Linux. В качестве инструмента документирования DRAKON Editor помогает создавать диаграммы, отражающие алгоритмические знания. Такие знания охватывают как поведение компьютерных систем, так и процедуры, не связанные напрямую с компьютерами, например медицинские алгоритмы и деловые процессы.DRAKON Editor может генерировать исходный код из диаграмм. Таким образом, DRAKON Editor можно использовать как IDE.

Функции

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

В DRAKON Editor есть альтернативный алгоритм редактирования, который называется «умный режим».[14] Когда в умный режим, пользователь может изменить внешний вид диаграммы, не нарушая ее топология. Другими словами, умный режим позволяет точно настроить макет диаграммы, сохраняя при этом основной алгоритм.

DRAKON Editor поддерживает следующие языки программирования:

Для некоторых языков программирования DRAKON Editor генерирует исходный код для ЭРИЛ моделирование данных язык.[15]

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

Для Erlang редактор DRAKON генерирует шаблонный код из визуального представления дерево надзора.

Благодаря природе принципа бесплатного рисования, DRAKON Editor может создавать другие типы диаграмм, включая диаграммы классов и диаграммы последовательности.

ДРАКОН в Немецком аэрокосмическом центре

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

Программа DRAKON Editor использовалась для графического программирования блок-схем, которые были специально проверены. C-код был сгенерирован из дракон-диаграмм, например, для представления ДРАКОН кода обнаружения запуска.[16]

Язык ДРАКОН в медицине

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

Официальный русскоязычный сайт и интернет-форум языка ДРАКОН

Русский сайт ДРАКОНРоссийский веб-форум ДРАКОН

Чтобы прочитать русский текст на английском, нажмите правую кнопку мыши и выберите «Перевести на английский».

Смотрите также

Примечания

  1. ^ Терехов Андрей; Брыксин, Тимофей; Литвинов Юрий. Как сделать визуальное моделирование более привлекательным для разработчиков программного обеспечения / 11-я летняя школа LASER по программной инженерии. Передовая разработка программного обеспечения. 7-13 сентября 2014 г. - остров Эльба, Италия
  2. ^ а б Окулова Л. П. Проектирование образовательного процесса в соответствии с требованиями педагогической эргономики // Вестник. Наука и практика. Материалы конференции «Инновации и научные исследования, а также их применение на практике Innowacje i badania naukowe, jak rowniez ich zastosowanie w praktyce. - 29.05.2012 - 31.05.2012. Варшава Warszaw ».
  3. ^ Паронджанов В. Д. Визуальный синтаксис языка ДРАКОН // Программирование и софт, 01/1995; Том 21 (Выпуск 3): с. 142 - 153. (Здесь неверный перевод. Это следует читать как «язык ДРАКОН».)
  4. ^ а б Штурманы ракет / Под общей редакцией Е. Л. Межирицкого. - М .: БЛОК-Информ-Экспресс, 2008. - 384 с. - С. 192. - ISBN  978-5-93735-008-4
  5. ^ «Методика разработки алгоритмов и программ» Графит-Флокс."" (PDF). Архивировано из оригинал (PDF) на 2012-12-27. Получено 2012-12-27.
  6. ^ Морозов В.В., Трунов Ю.В., Комиссаров А.И., Пак Е.А., Жучков А.Г., Дишель В.Д., Залихина Е.Е., Паронджанов В.Д. Система управления межорбитального космического буксира «Фрегат» // Вестник НПО имени С.А. Лавочкина: Космонавтика и ракетостроение. - 2014, №1 (22). - С. 16–25. (На русском) Морозов В.В., Трунов Ю.В., Комиссаров А.И., Пак Е.А., Жучков А.Г., Дишель В.Д., Залихина Е.Е., Паронджанов В.Д. Система управления универсальным космическим буксиром "Фрегат" // Вестник НПО имени С.А. Лавочкина. Космонавтика и ракетная техника - 2014, 1 (22). - С. 16–25.
  7. ^ Bezel Ja. V. Можно ли улучшить работу ума? Новый взгляд на проблему. - Вестник Российской академии наук. Том 73, Выпуск 4, 2003 г.
  8. ^ Созоров Н. Г., Трошин М. В. Дракон-редактор как основной звено в формализации целевых дидактических ресурсов для проектирования интерактивного учебного курса. Материалы региональной научно-методической конференции ИДНО Томского политехнического университета «Электронные дидактические материалы в инженерном образовании» 11-12 октября 2009 г.
  9. ^ а б Паронджанов В. Д. (2012). "Учебное пособие по языку ДРАКОН для вуз ов ". Учись писать, читать и понимать алгоритмы.Алгоритмы для правильного мышления. Основы алгоритмизации. М .: ДМК Пресс. п. 520. ISBN  978-5-94074-800-7. вуз ов ". Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. М .: ДМК Пресс. п. 520. ISBN  978-5-94074-800-7.
  10. ^ Паронджанов В.Д. (1995). Визуальный синтаксис языка ДРАКОН. 21. ПРОГРАММИРОВАНИЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. Официальный английский перевод Программирования. С. 142–153.
  11. ^ Митькин С.Б. Автоматическое программирование на языке ДРАКОН // Программная инженерия. Том 10, № 1, 2019. Миткин Степан Б. Автоматное программирование на языке ДРАКОН. Программная инженерия.2019. 10, вып. 1. С. 3—13. DOI: 10.17587 / prin.10.3-13
  12. ^ Митькин С.Б. Автоматическое программирование на языке ДРАКОН // Программная инженерия. Том 10, № 1, 2019. Миткин Степан Б. Автоматное программирование на языке ДРАКОН. Программная инженерия.2019. 10, вып. 1. С. 3—13. DOI: 10.17587 / prin.10.3-13
  13. ^ "Редактор ДРАКОН". drakon-editor.sourceforge.net. Получено 2016-10-04.
  14. ^ «Умный режим редактирования в редакторе ДРАКОН». drakon-editor.sourceforge.net. Получено 2016-10-04.
  15. ^ "Язык ЭРИЛ". drakon-editor.sourceforge.net. Получено 2016-10-04.
  16. ^ "Марк Шварцбах, Свен Влах, Максимилиан Лайаккер. Модификация научной системы управления полетом для запускаемых на воздушном шаре БПЛА // Немецкий аэрокосмический центр DLR // IEEE, 2015" (PDF). drakon.su. Получено 2017-12-03.

Рекомендации

внешняя ссылка