Дракон (язык программирования)

С Сибирьска википедья
Айдать на коробушку Айдать на сыскальник

Общие сведения

Дракон (акроним от «Дружелюбный русский алгоритмический язык, который обеспечивает наглядность») — это визуальный алгоритмический язык программирования, изначально созданный для нужд ракетно-космической отрасли. Фундаментальной особенностью языка является представление алгоритмов в виде строгих графических схем (дракон-схем), которые затем автоматически транслируются в исходный код на традиционных текстовых языках программирования. Дракон позиционируется как инструмент эргономичного программирования, призванный сделать алгоритмы интуитивно понятными не только профессиональным программистам, но и специалистам в других предметных областях (инженерам, физикам, врачам).

История создания

Разработка языка началась в 1986 году в СССР в рамках масштабной космической программы создания многоразового орбитального корабля «Буран». Задачу разработки программного обеспечения для системы управления кораблем и его бортовыми системами выполнял Институт прикладной математики имени М. В. Келдыша Академии наук СССР.

Изначально для программирования бортовых систем планировалось использовать язык ассемблера, однако расчеты показали, что такой подход потребует привлечения тысяч программистов и колоссальных временных затрат. Для решения проблемы в период с 1983 по 1986 годы институтом были разработаны несколько специализированных языков реального времени (включая Прол-2, Сапа Прол-2 и Лакс). Тем не менее, наличие сразу нескольких узкоспециализированных инструментов усложняло работу.

В 1986 году Юрий Трунов, руководитель комплексного отделения Пилюгинского центра, предложил унифицировать инструменты и создать единый, максимально абстрактный универсальный язык. Идея заключалась в том, чтобы инженеры-ракетчики могли самостоятельно формализовать алгоритмы управления в виде понятных им графических схем, не вникая в синтаксис текстовых языков. Разработка нового визуального языка продолжалась около 10 лет и была завершена в 1996 году.

В течение длительного времени язык являлся государственной тайной и применялся в закрытых космических проектах (включая международные программы). Официальное рассекречивание стандартов языка произошло лишь в 2006 году, когда на мировом рынке уже доминировали западные визуальные стандарты проектирования (в частности, UML и спецификации IDEF).

Философия и парадигмы программирования

Архитектура языка опирается на принципы графического (двухмерного) структурного программирования. Эта парадигма базируется на идеях, сформулированных в 1970-х годах советским математиком Игорем Вельбицким, который утверждал, что структура — это многомерное понятие, и представление алгоритмов в виде линейных текстов не позволяет в полной мере использовать когнитивные возможности человеческого зрения и пространственного мышления.

Язык Дракон проектировался на основе строгих рекомендаций нидерландского ученого Эдсгера Дейкстры по созданию качественных блок-схем, в частности:

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

Цель языка — создание «когнитивно-эргономического» инструмента, облегчающего межотраслевое взаимодействие. Разработчики стремились исключить путаницу, характерную для традиционных алгоритмических блок-схем по ГОСТу, строго регламентировав правила расположения графических элементов.

Синтаксис и архитектура дракон-схем

Дракон сочетает в себе два вида синтаксиса: графический и текстовый. Текстовый синтаксис определяет правила записи команд внутри графических блоков, а графический (алфавит икон) задает сами блоки и строгие правила их соединения.

Базовым графическим элементом языка является «икона». Алфавит языка включает 27 стандартизированных икон, обозначающих типовые процессы (ветвления, циклы, ввод и вывод данных). Иконы могут объединяться в «макроиконы» — составные графические блоки, которые воспринимаются как единое смысловое слово (например, конструкция всего цикла). Макроиконы имеют так называемые «валентные точки», в которые строго по правилам могут встраиваться другие иконы.

Правила построения дракон-схем исключают хаос и неоднозначность чтения:

  • Шампур-метод: Основной поток выполнения алгоритма всегда направлен строго сверху вниз по прямой вертикальной линии (так называемому «шампуру»).
  • Отказ от стрелок: Поскольку направление потока по умолчанию всегда идет сверху вниз, соединительные линии не имеют стрелок. Стрелки применяются только в случае возврата потока вверх (например, при организации цикла).
  • Запрет пересечения линий: В дракон-схемах категорически запрещены пересечения соединительных линий, что исключает визуальную путаницу.
  • Принцип «чем правее, тем хуже»: Основной, наиболее вероятный и успешный сценарий работы алгоритма располагается на главной вертикали. Все альтернативные маршруты, обработка ошибок или исключительных ситуаций всегда отводятся вправо. Таким образом, глядя на схему, разработчик понимает, что левая часть описывает нормальное функционирование системы, а правая — отклонения и ошибки.

Ветвление в языке оформляется с помощью иконы «Вопрос» (в виде ромба). Она всегда имеет один вход сверху и два выхода. Выход влево запрещен правилами языка; потоки могут направляться только вниз (успешный вариант, ответ «Да») и вправо (альтернативный вариант, ответ «Нет»).

Структурный концепт ветвления в парадигме языка Дракон:

       |
  [ Условие ? ] -> (Нет / Ошибка) -> [ Обработка ошибки ]
       |                                      |
     (Да)                                     |
       V                                      V

Гибридная трансляция и выполнение кода

Язык Дракон не имеет собственного независимого компилятора, генерирующего машинный код. Программа на Драконе всегда транслируется (преобразуется) в исходный код на другом высокоуровневом языке программирования.

Исторически существовали трансляторы, генерирующие код на языках C, Delphi, а позднее — Java, C#, Python, JavaScript и 1С:Предприятие. Подобная модель делает Дракон гибридным языком (например, применяются связки «Дракон + C» или «Дракон + Java»). Разработчик составляет логику в визуальном редакторе, а специализированный транслятор генерирует текстовый программный код.

Важной методологической особенностью является принцип отладки. Согласно философии языка, программист не должен вмешиваться в сгенерированный текстовый код (например, на C++). Если компилятор или среда исполнения выдает ошибку, разработчик обязан найти логическую недоработку в визуальной дракон-схеме, исправить её и запустить процесс кодогенерации заново.

Сферы применения

Первоначально язык массово применялся в ракетно-космической отрасли для проектирования бортового программного обеспечения. В дальнейшем, благодаря своей наглядности, язык нашел применение в нетехнических сферах.

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

Критика и недостатки

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

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

При разработке сложного программного обеспечения визуальные схемы становятся избыточно громоздкими. Отладка гибридного кода значительно усложняется: ошибку, возникшую на уровне интерпретации языка C или Java, крайне тяжело сопоставить с конкретным визуальным блоком в масштабной дракон-схеме.

В глобальном масштабе язык остался малоизвестной локальной разработкой. На мировом рынке стандартизации программной инженерии нишу визуального проектирования прочно занял язык UML (Unified Modeling Language), обладающий более развитой индустриальной поддержкой, в то время как Дракон практически не применяется за пределами узкого круга энтузиастов и специфических отраслевых стандартов.

См. также

Кобол Лисп

Смотреть видео