ДРАКОН ( русский : Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность , букв. «Дружественный русский алгоритмический язык, обеспечивающий ясность») — это бесплатный алгоритмический язык визуального программирования и моделирования с открытым исходным кодом, разработанный в рамках несуществующей советской космической программы «Буран» [2]. ] в 1986 году из-за необходимости повышения производительности разработки программного обеспечения. Визуальный язык обеспечивает единый способ представления процессов на блок-схемах .
Существуют различные реализации спецификации языка, которые могут использоваться для рисования и экспорта фактических блок-схем. Известные примеры включают бесплатный и открытый исходный код DRAKON Editor (сентябрь 2011 г.).
Разработка ДРАКОНа началась в 1986 году для устранения возникающего риска недопонимания и последующих ошибок между пользователями различных языков программирования в российской космической программе. Ее разработкой руководил Владимир Паронджанов при участии Российского Федерального космического агентства ( Центр академика Пилюгина , Москва ) и Российской академии наук ( Институт прикладной математики им. М.В. Келдыша ).
Язык был построен путем формализации, эргономизации и неклассической структуризации блок-схем, описанных в стандарте ISO 5807-85 и российском стандарте «Гост 19.701-90». [3] [4]
Целью было заменить специализированные языки, используемые в проекте «Буран» , одним универсальным языком программирования . А именно: ПРОЛ2 (PROL2), используемый для разработки программного обеспечения бортовых систем вычислительной системы «Бисер-4» [5] , ДИПОЛЬ (DIPOL), используемый для разработки программного обеспечения наземных вычислительных систем [5] и ЛАКС (LAKS), используемый для моделирования.
Работа была завершена в 1996 году (спустя 3 года после официального закрытия проекта «Буран»), когда была разработана автоматизированная система CASE -программирования «Графит-Флокс». [6]
Данный КЕЙС используется с 1996 года в: международном проекте « Морской старт» , [ требуется ссылка ] российском разгонном блоке « Фрегат » для бортовых систем управления и испытаний, [7] модернизированной ракете -носителе тяжелого класса «Протон-М» . [ требуется ссылка ]
Название ДРАКОН — это русская аббревиатура от «Дружелюбный Русский Алгоритмический [язык], Который Обеспечивает Наглядность», что переводится как «Дружественный русский алгоритмический [язык], который иллюстрирует (или обеспечивает ясность)». Слово «наглядность» (произносится примерно как «на-ГЛЯ-дность») относится к концепции или идее, которую легко представить и понять, и может быть переведено как «ясность».
В отличие от философии UML , философия языка DRAKON основана на дополнении при необходимости с помощью гибридного языка, который можно проиллюстрировать как «вкрапление фрагментов кода из используемого текстового языка в форму, требуемую DRAKON». Таким образом, DRAKON всегда остается простым визуальным языком, который может использоваться в качестве дополнения для программиста, который заинтересован в том, чтобы сделать свой собственный код проекта более простым для поддержки или для других долгосрочных потребностей, например, для улучшения эргономики процесса кодирования или для упрощения просмотра и понимания кода.
Язык ДРАКОН может использоваться как язык моделирования/«разметки» (который считается отдельной «чистой» программой ДРАКОН), так и как язык программирования (как часть гибридного языка).
Интеграция более строгого, «академического» варианта языка разметки в программирование, например, предоставляемого DRAKON, добавляет синтаксический сахар , позволяя пользователям разных языков программирования понимать вклад друг друга в общий проект и даже при необходимости давать комментарии.
ДРАКОН ( русский : ДРАКОН ; означает « дракон » на английском языке) разработан с целью обеспечения простоты понимания и читаемости, поскольку использование нескольких языков в одном проекте может привести к путанице.
DRAKON — это семейство гибридных языков, таких как DRAKON-C, DRAKON-ASM, DRAKON-Java и т. д. Все языки семейства DRAKON используют единый графический синтаксис, основанный на блок-схемах. Стандартный графический синтаксис обеспечивает схожесть drakon-charts для разных гибридных языков. Текстовый язык использует свой собственный синтаксис.
Основой графического синтаксиса является графический алфавит. Графические элементы («буквы») алфавита ДРАКОН называются значками (не символами). В ДРАКОНе также есть макроиконки . Макроиконки — это графические слова языка ДРАКОН; они состоят из значков. В языке ДРАКОН 27 значков и 21 макроиконка.
Дракон-карты состоят из иконок и макроиконок.
Важными частями макроиконов являются точки валентности (на иллюстрации изображены черными кружками). В эти точки последовательно вводятся иконки или микроиконы, которые drakon-editor выстраивает в столбцы.
ДРАКОН был создан как простой в изучении визуальный язык, помогающий понимать компьютерные программы, написанные на разных языках программирования, в иллюстративных, плановых и стратегических целях.
DRAKON использует drakon-chart, который является формализацией традиционных блок-схем для отображения общей структуры программы. Фрагменты кода языка программирования добавляются к значкам DRAKON. Сочетание визуальных элементов с кодом помогает создавать и поддерживать читаемые блок-схемы вместе с разработкой рассматриваемой программы.
Правила DRAKON для создания диаграмм когнитивно оптимизированы для легкого понимания, что делает его инструментом для повышения интеллекта . [3] [8] [9] [10]
Схемы драконов больших многоцелевых программ могут быть сложными и трудными для понимания. Набор меньших программ, которые вместе служат одной и той же цели, часто легче понять, если изобразить их в виде схем драконов. Похожая проблема существует и при поддержке кода больших программ. Эту проблему иногда называют «правилом 30 [строк кода]» среди программистов.
Полный текст статьи, содержащий описание визуального синтаксиса языка ДРАКОН на английском языке, 12 страниц, бесплатная загрузка, pdf. [11]
Простой пример программы на языке ДРАКОН
Эти примеры являются реальным кодом из реализации игры Тетрис . Примеры написаны на языке DRAKON-JavaScript. Значки (визуальные примитивы) языка DRAKON определяют общую структуру алгоритмов. Фрагменты кода внутри значков (примитивов) написаны на JavaScript.
Функция advanceStep реализует основную логику игры. advanceStep — это конечный автомат , представленный в виде дерева решений . [12] Игровой движок периодически вызывает advanceStep . Этот конечный автомат имеет три состояния: «играет», «падает» и «завершено». Игра выполняет различные действия в зависимости от текущего состояния. Например, в состоянии «играет», когда есть падающий снаряд и снаряд может двигаться вниз, он перемещается на одну ступень вниз.
С помощью DRAKON читатель алгоритма может визуально отслеживать все возможные пути в дереве решений.
Функция noProjectile обрабатывает конкретную ситуацию, когда нет падающего снаряда. Если есть заполненная строка, эта строка удаляется из сетки. В противном случае игра пытается вставить новый снаряд. Если места для снаряда нет, игра проиграна.
Функция clearRow сканирует все строки снизу вверх, пока не встретит строку без пробелов. В этом случае строка удаляется из сетки, счет увеличивается, а темп игры увеличивается.
Рисунок ниже иллюстрирует выполнение алгоритма силуэта ДРАКОН. Выполнение алгоритма анимировано путем выделения элементов диаграммы в порядке выполнения.
Силуэт «Рыбалка» состоит из четырех деревьев:
Основной путь каждого дерева показан с помощью выделенной толстой вертикальной линии, которая называется шпажкой.
Граф потока всегда имеет путь от значка заголовка до каждой вершины (узла) графа потока управления. Следовательно, силуэт не может иметь недостижимый код ни при каких условиях.
Язык DRAKON используется в Немецком аэрокосмическом центре для реализации некоторых критических функций, продиктованных правилами безопасности летных испытаний, где автоматизация важна из-за максимального расстояния до наземной станции, а процесс требует быстрого автоматического выполнения.
Программное обеспечение DRAKON Editor использовалось для графического программирования блок-схем, которые были специально проверены. C-код был сгенерирован из drakon-charts, например, для представления DRAKON кода обнаружения запуска. [13]
В качестве языка моделирования и визуализации бизнес-процессов может быть использован язык ДРАКОН. «Язык ДРАКОН был применен в качестве базового языка построения моделей бизнес-процессов, что позволяет получить прототип конечного автомата при построении моделей бизнес-процессов. Визуализация бизнес-процессов в пространстве состояний позволяет лицу, принимающему решения, повысить эффективность принятия решений». [14]
Хотя DRAKON в первую очередь разработан как инструмент для понимания компьютерных программ, drakon-charts также можно использовать для иллюстрации процессов в областях, не связанных с вычислениями.
В редакторе ДРАКОН к значкам ДРАКОН можно добавлять картинки. Эта возможность используется в некоторых областях для легкого создания инфографики в виде «блок-схем» . В России редактор ДРАКОН известен тем, что используется в медицинской сфере как инструмент для создания «инструктивных» диаграмм для пациентов или медицинского персонала. [ необходима цитата ] [15]