ДРАКОН - DRAKON

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

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

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

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

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

История

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

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

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

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

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

Семья языков ДРАКОН

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

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

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

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

Графики Drakon состоят из пиктограмм и макросов.

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

Дизайн

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

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

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

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

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

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

Примеры

Пример тетриса

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

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

advanceStep

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

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

С помощью DRAKON читатель алгоритма может визуально проследить все возможные пути в дереве решений.

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

function advanceStep() {
    var _sw_8;
    _sw_8 = module.state;
    if (_sw_8 === "playing") {
        if (module.projectile) {
            if (canMoveDown()) {
                moveDown()
                return getStepPeriod()
            } else {
                freezeProjectile()
                return noProjectile()
            }
        } else {
            return noProjectile()
        }
    } else {
        if (_sw_8 === "dropping") {
            if (canMoveDown()) {
                moveDown()
                return DropPeriod
            } else {
                freezeProjectile()
                module.state = "playing"
                return getStepPeriod()
            }
        } else {
            if (_sw_8 === "finished") {
            } else {
                throw new Error("Unexpected Choice value: " + _sw_8);
            }
            return undefined
        }
    }
}

noProjectile

Функция noProjectile для игры Тетрис на языке DRAKON-JavaScript

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

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

function noProjectile() {
    if (clearRow()) {
        return getStepPeriod()
    } else {
        createProjectile()
        if (isGameLost()) {
            gameOver()
            module.state = "finished"
            return undefined
        } else {
            return getStepPeriod()
        }
    }
}

clearRow

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

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

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

function clearRow() {
    var row, rows;
    rows = module.glass.rows
    row = rows.length - 1;
    while (true) {
        if (row >= 0) {
            if (rowHasHoles(row)) {
                row--;
            } else {
                deleteRow(row)
                increaseScore()
                increaseSpeed()
                return true 
            }
        } else {
            module.addedScore = 0
            return false 
        }
    }
}

Анимация казни ДРАКОН

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

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

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

Основной путь каждого дерева показан путем выделения толстой вертикальной линии, которая называется шпажкой.

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

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

Современное использование

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

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

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

Использует вне программирования

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

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

использованная литература

Источники

внешние ссылки