ДРАКОН - DRAKON
Парадигма | Визуальный |
---|---|
Впервые появился | 1996 г. |
Интернет сайт | Drakon-Editor |
Основные реализации | |
ГРАФИТ-ФЛОКС (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, сгенерированный из ДРАКОН-диаграммы: 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 обрабатывает конкретную ситуацию, когда нет падающего снаряда. Если есть заполненная строка, эта строка удаляется из сетки. В противном случае игра пытается вставить новый снаряд. Если для снаряда нет места, игра проиграна.
Код JavaScript, сгенерированный из ДРАКОН-диаграммы: function noProjectile() {
if (clearRow()) {
return getStepPeriod()
} else {
createProjectile()
if (isGameLost()) {
gameOver()
module.state = "finished"
return undefined
} else {
return getStepPeriod()
}
}
}
|
clearRow
Функция 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 также можно использовать для иллюстрации процессов в областях, не связанных с вычислениями.
В редакторе ДРАКОН к иконкам ДРАКОН можно добавить картинки. Эта возможность используется в некоторых полях, чтобы легко создавать инфографику, похожую на блок-схему . В России редактор ДРАКОН известен тем, что используется в области медицины как инструмент для создания «инструктивных» карт для пациентов или медицинского персонала.
использованная литература
Источники
- В. Паронджанов. Как улучшить работу своего ума. Алгоритмы без программистов - это очень просто! ( Как улучшить работу ума. Алгоритмы без программистов - это очень просто! М .: Дело, 2001. - 360с. )
- С. Миткин. ДРАКОН: человеческая революция в понимании программ
внешние ссылки
- О языке ДРАКОН на английском языке
- Русский сайт ДРАКОН
- Русский веб-форум ДРАКОН
- История ДРАКОН (на русском языке )
- ДРАКОН + Оберон = язык визуального программирования ДРОН (на английском языке)
- ДРАКОН + Оберон = ДРОН визуальный язык программирования (на русском языке )
- Редактор ДРАКОН для Windows, Mac и Linux.
- Drakon.Tech - онлайн-IDE на базе DRAKON.