Light-industry-up.ru

Экосистема промышленности

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

02-08-2023

Алгоритм быстрой сортировки на гибридном языке ДРАКОН-Си.
Генерация последовательности Фибоначчи на гибридном языке ДРАКОН-Си.
ДРАКОН-схема алгоритма поиска A*.
Пример блок-схемы алгоритма на языке ДРАКОН — дракон-схемы

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

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

Работы по разработке языка были закончены в 1996 году (спустя 3 года после закрытия программы «Буран»), когда была создана автоматизированная технология проектирования программных систем (CASE-технология) ГРАФИТ-ФЛОКС[3].

Эта технология эксплуатируется начиная с 1996 года во многих крупных космических программах: международный проект «Морской старт», разгонный блок космических аппаратов «Фрегат», модернизированная ракета-носитель тяжёлого класса «Протон-М» и др.

В качестве аксиоматики для ДРАКОНа были выбраны устремлённые графы (специальный класс циклических орграфов). Такое двумерное структурное программирование годится для доказательного построения алгоритмов методом Дейкстры[4] [источник не указан 494 дня].

Язык ДРАКОН может применяться для специфицирования протоколов взаимодействия (например, клиент-серверных)[5][неавторитетный источник?].

Разработчики языка полагают, что правила языка ДРАКОН по созданию диаграмм оптимизированы для восприятия алгоритмов человеком. Таким образом, язык предлагается в качестве инструмента усиления интеллекта.

Аналогом дракон-схем являются диаграммы поведения (behaviour diagrams) языка UML, в частности, диаграмма деятельности (activity diagram)[6], диаграмма состояний (UML state machine diagram)[7][источник не указан 494 дня] и некоторые диаграммы взаимодействия (interaction diagrams), например, диаграмма синхронизации (timing diagram)[8]

Другими аналогами дракон-схем служат блок-схема, диаграмма Насси-Шнейдермана, псевдокод (язык описания алгоритмов) и др. В отличие от блок-схем, дракон-схемы имеют средства для описания работы в реальном времени.[8]

Существует интегрированная среда разработки программ на языке ДРАКОН под названием «ИС Дракон»[9][10]. Имеются видеоматериалы, иллюстрирующие разработку программы на гибридном языке Дракон-Си с помощью ИС Дракон[11][12][13]

Содержание

Примеры

Ветвление

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

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

  • Оденься.
  • Возьми зонтик, если идёт дождь.
  • Покинь помещение.

Цикл while

Сначала проверяется условие выхода из цикла. Потом производится действие.

Алгоритм обеда:

  • Если голоден, съешь котлетку.
  • Если сыт, выходи.
  • Повторить.

Цикл do-while

Сначала производится действие. Потом проверяется условие выхода из цикла.

Алгоритм силового упражнения:

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


Особенности

Проблема развития искусственных языков

  1. Традиционные цели и методы создания искусственных языков, в частности языков программирования, следует признать во многом устаревшими[14].
  2. Последние исследования в области нейробиологии, психологии, когнитивной науки и эргономики позволили получить новые и чрезвычайно ценные сведения о работе мозга, которые можно и нужно использовать при разработке нового поколения языков с целью повышения продуктивности человеческого мозга[14].
  3. В настоящее время отсутствует продуманная стратегия, направленная на устранение междисциплинарных барьеров, преследующая цель вооружить разработчиков искусственных языков нового поколения глубокими знаниями в области наук о человеке, человеческом факторе и человеческом интеллекте. Этот недостаток нужно как можно скорее устранить[14].
  4. Концепция искусственных языков нового поколения опирается на междисциплинарный подход и коренным образом изменяет традиционные представления о назначении искусственных языков и наборе приоритетных требований к ним. Во главу угла ставятся гуманитарные вопросы и требования, которые должны быть соответствующим образом детализированы[14].
  5. Среди требований, предъявляемых к современным алгоритмическим языкам, на первое место все чаще выходит понимаемость программ (comprehensibility).[15]. Понимаемость определяется как «свойство программы минимизировать интеллектуальные усилия, необходимые для её понимания» человеком[16].

Язык ДРАКОН значительно облегчает алгоритмизацию и программирование

Некоторые ученые считают, что существующие способы записи алгоритмов и программ (принятые во всем мире) слишком трудны для понимания и требуют неоправданно больших трудозатрат.[17]

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

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

В итоге ТРУДНЫЕ для понимания способы записи алгоритмов и программ заменяются на более ЛЕГКИЕ. Вследствие этого работники быстро овладевают дракон-схемами и успешно создают алгоритмы и прикладные программы без программистов или с их минимальным участием. Об этом свидетельствует 15-летний опыт эксплуатации Технологии ГРАФИТ-ФЛОКС[3] (ГРАФика И Текст-Формализованное Логическое Описание Крупных Систем) в НПЦ автоматики и приборостроения им. Н. А. Пилюгина.

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

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

Это позволяет значительно сократить издержки, улучшить показатель «затраты — результат», ускорить ход работ. И полностью избавиться от ошибок «испорченного телефона», вызванных взаимным непониманием между программистами и инженерами.[19]

Двумерное структурное программирование

  1. Императивная (процедурная) часть языка ДРАКОН опирается на новый метод — двумерное структурное программирование.
  2. Правила двумерного структурного программирования существенно отличаются от традиционного одномерного (текстового) структурного программирования.
  3. Идеи структурного программирования разрабатывались, когда компьютерная графика фактически ещё не существовала и основным инструментом алгоритмиста и программиста был одномерный (линейный или ступенчатый) текст.
  4. До появления компьютерной графики методология текстового структурного программирования была наилучшим решением.
  5. С появлением компьютерной графики ситуация изменилась. Появилась возможность заменить текстовые управляющие структуры на управляющую графику, то есть использовать двумерное структурное программирование.
  6. Слабое место традиционного структурного программирования и текстового представления алгоритмов и программ заключается в недостатке выразительных средств. Следствием являются ограничения и запреты. Эти ограничения и запреты вытекают из природы текста, из природы текстового представления управляющих структур.
  7. Недостаток выразительных средств, проявляющийся через ограничения и запреты, тормозит повышение производительности труда алгоритмистов и программистов.
  8. В рамках текстового представления управляющих структур устранить эти ограничения и запреты невозможно. Чтобы добиться улучшения, надо перейти от одномерного (текстового) структурного программирования к двумерному (визуальному) структурному программированию.
  9. Многие ограничения и запреты, неизбежные при текстовом структурном программировании, во многих случаях противоречат здравому смыслу, затрудняют понимание алгоритмов и программ, искажают нормальный ход человеческой мысли.
  10. Недопустимо запрещать правильный процесс мышления. Его надо разрешить. Шампур-метод и язык ДРАКОН устраняют этот недостаток.
  11. При использовании шампур-метода набор управляющих ключевых слов текстового структурного программирования становится ненужным.
  12. При визуальном структурном подходе программист работает только с чертежом программы (дракон-схемой), не обращаясь к её текстовому представлению. Точно так же программист, работающий, скажем, на Дельфи, не обращается к ассемблеру и машинному коду — они для него просто не существуют.
  13. Во многих случаях (список которых ещё предстоит уточнить) желательно отказаться от текстовых управляющих структур, заменив их управляющей графикой.
  14. ДРАКОН — это не просто новый язык (новое семейство языков). Это новый взгляд на императивное (процедурное) программирование. Если угодно — новое мировоззрение.
  15. Наибольшую трудность в течение длительного времени представляли математика и эргономика блок-схем. Нужно было создать математически строгий метод формализации блок-схем, позволяющий превратить блок-схемы в программу, пригодную для ввода в компьютер и трансляции в объектный модуль программы.
  16. Язык ДРАКОН позволил эффективно решить эту задачу.
  17. Одновременно была решена задача эргономизации блок-схем, то есть задача приспособления блок-схем для наиболее удобного человеческого восприятия и понимания.[20]

Графический и текстовый синтаксис языка ДРАКОН

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

• графические фигуры (иконы),
• текстовые надписи, расположенные внутри или снаружи икон (текстоэлементы).

Поэтому язык ДРАКОН имеет не один, а два синтаксиса: графический и текстовый.

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

Текстовый синтаксис задает алфавит символов, правила их комбинирования и привязку к иконам. (Привязка необходима потому, что внутри разных икон используются разные типы выражений).[21][22]

Семейство ДРАКОН-языков

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

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

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

Гибридные языки ДРАКОН-семейства

Императивную (процедурную) часть языка Дракон можно присоединить к некоторым языкам программирования и получить так называемые гибридные языки:

язык Дракон + язык Бейсик = гибридный язык Дракон-Бейсик

язык Дракон + язык Си = гибридный язык Дракон-Си

язык Дракон + язык Java = гибридный язык Дракон-Java

язык Дракон + язык Си# = гибридный язык Дракон-Си#

язык Дракон + язык Питон = гибридный язык Дракон-Питон

язык Дракон + язык Perl = гибридный язык Дракон-Perl

язык Дракон + язык Ruby = гибридный язык Дракон-Ruby

язык Дракон + язык Ада = гибридный язык Дракон-Ада

язык Дракон + язык Оберон = гибридный язык Дракон-Оберон

язык Дракон + язык Tcl = гибридный язык Дракон-Tcl

и т. д.

Пример 1. При создании гибридного языка Дракон-Си необходимо, в частности, создать транслятор из дракон-схемы в исходный код языка Си. В этом случае Си является целевым языком.

Пример 2. При создании гибридного языка Дракон-Дельфи необходимо, в частности, создать транслятор из дракон-схемы в исходный код языка Дельфи. При этом Дельфи является целевым языком.

Пример 3. При создании гибридного языка Дракон-Фортран необходимо, в частности, создать транслятор из дракон-схемы в исходный код языка Фортран. В этом случае Фортран служит целевым языком.

И т. д.

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

Еще один пример. Предположим, пользователь работает в связке ИС Дракон — Транслятор Дракон-Си — Keil. Понятно, что исходником служит дракон-схема. При отладке программы не следует вносить исправления в промежуточные текстовые Си-файлы. Все исправления нужно вносить в исходный код, то есть в дракон-схему.

Я уже больше года работаю на связке ИС Дракон — DrakonToC — Keil. И ни в коем случае не позволяю себе править промежуточные текстовые Си-файлы. Исходник — это Дракон-схема![24]

Подробнее см.[25]

Достоинства гибридных языков

С точки зрения человеческого фактора, в истории развития языков программирования условно можно выделить два этапа.

На первом этапе появились языки высокого уровня, которые (по сравнению с ассемблером) сделали исходный текст программы более понятным и удобным для человека. И значительно увеличили производительность труда программистов.

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

Это позволит отказаться от текстовых управляющих структур, используемых в языках высокого уровня, и заменить их на управляющую графику ДРАКОНа.

Что это даст? Исходный код программы станет еще более понятным и удобным для человека. И, следовательно, еще больше увеличится производительность труда программистов.

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

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

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

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

Как построить гибридный язык?

Чтобы построить гибридный язык, нужно выполнить 5 шагов.

Шаг 1. Выбрать целевой язык (например, язык Си, но можно подставить любой целевой язык).
Шаг 2. Использовать графический синтаксис языка Дракон в качестве графического синтаксиса гибридного языка Дракон-Си.
Шаг 3. Использовать синтаксис целевого языка (синтаксис языка Си) в качестве текстового синтаксиса гибридного языка Дракон-Си.
Шаг 4. Удалить из текстового синтаксиса гибридного языка Дракон-Си все элементы, которые заменяются управляющей графикой ДРАКОНа.
Шаг 5. Создать транслятор из дракон-схемы в исходный код языка Си.

Гибридные языки ДРАКОН-семейства и оператор GOTO

Чтобы глубже понять роль оператора GOTO, можно выделить два этапа в истории развития языков программирования.

На первом этапе — после изобретения структурного программирования и призыва Эдсгера Дейкстры: «оператор go to должен быть отменен в языках программирования высокого уровня»[28] — начался процесс исключения GOTO из вновь создаваемых языков. Сегодня имеется целый ряд языков без GOTO: Java, Python, Tcl, Модула-2, Оберон и др.

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

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

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

Оператор GOTO нежелательно использовать именно в текстовых языках, так как контроль за соблюдением структурности программы остается за исполнителем (программистом). В языке ДРАКОН есть свои собственные правила, позволяющие сохранять структурность.[30]

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

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

В свою очередь, дракон-схема имеет надежную защиту от подобных неприятностей благодаря использованию ДВУМЕРНОГО структурного программирования. Принципы двумерного структурного программирования подробно описаны в литературе.[31][32][4]

План развития и частичной унификации языков программирования

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

  1. Использовать графический синтаксис языка ДРАКОН в качестве стандарта, позволяющего осуществить частичную унификацию языков высокого уровня.
  2. Текстовый синтаксис следует заимствовать из целевого языка. При этом следует удалить все элементы текстового синтаксиса, которые заменяются управляющей графикой ДРАКОНа.
  3. Преобразовать языки высокого уровня в гибридные языки. Метод преобразования описан в литературе.[33][34]

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

Целесообразно создать международный стандарт на дракон-схемы

Обоснование необходимости нового стандарта поясняется ниже.

2. Текстовое структурное программирование решило стоявшие перед ним исторические задачи, исчерпало свои эвристические возможности и, выполнив свою миссию, потеряло актуальность. В настоящее время точкой роста научного знания является визуальное структурное программирование.

3. При использовании шампур-метода набор ключевых слов классического структурного программирования становится ненужным. Благодаря этому создаются предпосылки, которые… позволят исключить ключевые слова и тем самым устранить путающий всех разнобой ключевых слов и структурных конструкций в разных языках программирования…

5. По эргономическим показателям визуальное структурное программирование существенно превосходит свой текстовый аналог…

7. Дальнейшее использование… блок-схем во всех случаях следует признать нецелесообразным.

8. Существующая литература по блок-схемам, включая международные и национальные стандарты, на 99 % устарела.

9. Современные стандарты на блок-схемы объективно содействуют снижению качества соответствующей интеллектуальной продукции. Указанные стандарты игнорируют три важнейших принципа: структуризации, формализации и эргономизации.

10. Актуальной задачей является разработка новой системы международных и национальных стандартов…, свободных от перечисленных недостатков. В основу проекта новых стандартов целесообразно положить … правила визуального структурного программирования. Дракон-схемы наследуют… все достоинства блок-схем и устраняют их недостатки.[35]

«Вестник Российской академии наук» о языке ДРАКОН

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

Этот язык универсален. Он может применяться для наглядного представления и быстрой разработки алгоритмов не только в космосе, но и в земных видах человеческой деятельности. Практическая полезность ДРАКОНА получила высокую оценку. Министерство образования РФ включило его изучение в программу дисциплины «информатика» высшей школы [1]. О легкости его усвоения говорит хотя бы тот факт, что он положен в основу игрового учебного пособия по информатике для детей младшего и среднего школьного возраста [2]…

В свое время Н. И. Лобачевский дал замечательно яркую оценку искусственным языкам: «Чему одолжены своими блестящими успехами науки, слава нынешних времен, торжество ума человеческого? Без сомнения, искусственному языку своему!»[36].

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

Проблемы понимания и взаимопонимания автор рассматривает как ключевые проблемы информатики… Понимаемость программы определяется как свойство программы минимизировать интеллектуальные усилия, необходимые для её усвоения… Одно из неоспоримых достоинств книги состоит в разработке практического метода, позволяющего создать принципиально новый подход к решению проблемы понимания, который, в свою очередь, тесно связан с проблемой улучшения работы ума.

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

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

ДРАКОН — первый алгоритмический язык, созданный в рамках нового мировоззрения, органично объединившего идеи психологии, эргономики и математики.[37]

История

Разработка языков программирования для космического корабля «Буран»

Система управления космического корабля «Буран» управляет полетом Бурана и всеми бортовыми системами корабля.[38][39][нет в источнике][40][нет в источнике] Система управления создана в Научно-производственном центре автоматики и приборостроения имени академика Н. А. Пилюгина НПЦАП (далее Пилюгинский центр). Головным мозгом Бурана служит Бортовой вычислительный комплекс[41]. Основным разработчиком бортового и наземного программного обеспечения космического корабля «Буран» является Пилюгинский центр[42].

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

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

В материалах Института прикладной математики им. М. В. Келдыша РАН о трудностях и свершениях того периода говорится:

В 1983 году разработчики космического корабля Буран обратились в Институт прикладной математики с просьбой помочь в разработке бортового программного обеспечения и программного обеспечения наземных испытаний корабля. По их оценкам для этой работы требовалось несколько тысяч программистов. После изучения задачи было решено разработать проблемно-ориентированные языки, основанные на терминах, понятиях и форме представления алгоритмов управления и испытаний, используемых разработчиками корабля. Реализация этих языков позволила привлечь к созданию бортового и испытательного программного обеспечения самих разработчиков корабля — авторов алгоритмов управления и испытаний.

Разработка языков и соответствующих инструментальных средств была выполнена небольшим коллективом высококвалифицированных программистов Института прикладной математики РАН в чрезвычайно сжатые сроки. Для разработки бортового программного обеспечения был создан специализированный язык реального времени ПРОЛ2 и базирующаяся на нём система автоматизации программирования и отладки САПО ПРОЛ2… Для разработки программного обеспечения наземных испытаний корабля был создан проблемно-ориентированный язык ДИПОЛЬ и базирующаяся на нём система автоматизации программирования и отладки[44]

Таким образом, чтобы решить проблему нехватки программистов при создании Бурана и повысить производительность и качество труда при разработке алгоритмов и программ, Институт прикладной математики РАН по просьбе Пилюгинского центра создал два русскоязычных языка:

  • язык реального времени ПРОЛ2 для разработки бортовых комплексных программ (руководитель авторского коллектива Виктор Крюков)[45];
  • проблемно-ориентированный язык для разработки программ наземных испытаний ДИПОЛЬ (руководитель Владимир Луцикович)[46]

Кроме того, в Пилюгинском центре под руководством Константина Федорова был создан язык ЛАКС для моделирования. Таким образом, появились три новых языка: ПРОЛ2, ДИПОЛЬ и ЛАКС. Эти языки были непосредственными предшественниками ДРАКОНА. Опыт эксплуатации указанных языков был тщательно изучен и использован при создании языка ДРАКОН.

Язык ДРАКОН создан в ракетно-космической отрасли

Хотя языки ПРОЛ2, ДИПОЛЬ и ЛАКС успешно решали поставленные задачи, стало ясно, что узкая специализация языков мешает делу. Эту мысль в 1986 году высказал начальник комплексного отделения Юрий Трунов (впоследствии Генеральный конструктор Пилюгинского центра). Трунов вызвал к себе начальника лаборатории комплексной разработки вычислительного комплекса Бурана Владимира Паронджанова и поручил ему создать универсальный язык, способный заменить три вышеназванных.

Однако Паронджанов решил поставить задачу иначе. Он полагал, что новый язык должен не только удовлетворять практическим нуждам космической техники, но и решать широкий круг задач, выходящих далеко за рамки традиционного программирования[47]

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

  1. Улучшить работу человеческого ума.
  2. Предложить эффективные средства для описания не только алгоритмов, но и структуры человеческой деятельности в любой отрасли знаний (включая бизнес-процессы).
  3. Предоставить человеку такие языковые средства, которые значительно упрощают восприятие сложных процедурных проблем и общение с коллегами, делают непонятное понятным. И за счет этого буквально заставляют человека мыслить отчетливо, глубоко и продуктивно. В этих условиях вероятность заблуждений, просчетов и ошибок падает, а производительность растет.
  4. Облегчить межотраслевое и междисциплинарное общение между представителями разных организаций, ведомств, отделов, лабораторий, научных школ и профессий.
  5. Устранить или уменьшить барьеры взаимного непонимания между работниками различных специальностей (врачами и физиками, математиками и конструкторами, биологами и экономистами и т. д.), а также программистами и теми, кто не владеет программированием.
  6. За счет использования когнитивно-эргономического подхода к проектированию синтаксиса и семантики языка добиться значительного улучшения качества программного обеспечения по критерию «понятность алгоритмов и программ»[48]

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

Разработка нового языка и системы программирования началась в 1986 году. Через 10 лет на базе ДРАКОНА была построена автоматизированная Технология разработки алгоритмов и программ (CASE-технология) под названием «ГРАФИТ-ФЛОКС»[3]

Сохранился любопытный документ, отражающий один из этапов этой работы.

Пояснение к тексту документа:
ДМ — Доразгонный Модуль;
SL — Sea Launch (Морской старт);
ДМ-SL — Доразгонный Модуль космических аппаратов международного проекта «Морской старт».

Р А С П О Р Я Ж Е Н И Е

по отделению 03
№ 3
от 28 июля 1995 г.

В целях более рационального распределения работ по созданию программного обеспечения изделий ДМ-SL

П Р Е Д Л А Г А Ю

  1. Разработку программного обеспечения изделия ДМ-SL поручить отделу 035.
  2. Разработку ПО изделия ДМ-SL вести по технологии ГРАФИТ-ФЛОКС.
  3. В целях своевременного выполнения работ по пп. 1 и 2 начальнику отдела 035 Косточкину Г. Н. обеспечить завершение работ по созданию технологии ГРАФИТ-ФЛОКС в сроки, обеспечивающие безусловное выполнение графика работ по разработке ПО изделия ДМ-SL.
  4. Начальнику отдела 032 Лукьянову Б. Г. обеспечить выпуск Положения о порядке выпуска флокс-формуляров для изделия ДМ-SL в сроки, согласованные с отделом 035.

Начальник отделения 03 В. В. Морозов[49]

В соответствии с этим распоряжением все работы были завершены к 1996 году. Затем язык ДРАКОН и система ГРАФИТ-ФЛОКС поступили в эксплуатацию. С их помощью были разработаны алгоритмы и программы доразгонного модуля космических аппаратов ДМ-SL Международного проекта «Морской старт». В общей сложности на разработку и отработку программного обеспечения и других элементов системы управления ушло три года. К 1999 году все работы были закончены. Система была готова к старту.

Первый пуск ракетного комплекса «Морской старт» состоялся 28 марта 1999 года. Он произошёл в 5 часов 30 мин по московскому времени (27 марта 1999 г. в 18 часов 30 мин по тихоокеанскому времени) cо стартовой платформы «Одиссей» в Тихом океане в районе островов Кирибати[50].

Этот пуск был боевым крещением языка ДРАКОН и технологии создания программ «ГРАФИТ-ФЛОКС». Он убедительно продемонстрировал их эффективность и надежность. С тех пор по программе «Морской старт» проведено свыше 30 ракетных пусков[51].

Язык ДРАКОН успешно используется и во многих других космических программах:

  • разгонный блок космических аппаратов «Фрегат»;
  • модернизированная ракета-носитель тяжелого класса «Протон-М»;
  • доразгонный модуль космических аппаратов ДМ-SL-Б (проект «Наземный старт»);
  • доразгонный модуль космических аппаратов ДМ-03;
  • первая ступень KSLV-1 для южнокорейской ракеты-носителя легкого класса KSLV (Korean Space Launch Vehicle);
  • ракета-носитель легкого класса Ангара 1,2;
  • ракета-носитель тяжелого класса Ангара-А5;
  • Примечание. Для ракет семейства «Ангара» программное обеспечение уже разработано и испытано на комплексном стенде Пилюгинского центра, но подготовка к ракетным пускам ещё не завершена.

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

Разработка инструментальных средств языка ДРАКОН для широкого применения на персональных компьютерах и др.

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

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

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

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

Этому способствовали следующие обстоятельства.

  1. В открытой литературе стали доступны публикации по языку ДРАКОН[54][55][56][57][58][59][60][61][62][63][64]
  2. Часть этих материалов появилась в Интернете в конце 2006 года[65] Их можно скачать на многих сайтах.[66]
  3. Через Интернет с языком ДРАКОН познакомился Геннадий Тышов. Заинтересовавшись новой идеей, он разработал экспериментальную интегрированную среду языка ДРАКОН под названием «ИС Дракон».[9] И выложил её в открытом доступе для тестирования, обсуждения, критики и дальнейшего совершенствования.
  4. Благодаря инициативе Тышова все желающие получили возможность бесплатно скачать созданную им среду «ИС Дракон» и использовать её в практической работе.
  5. Тестирование программы «ИС Дракон» и работа с ней позволяет:
 — на практике оценить весь комплекс вопросов, охватывающий а) возможности, b) преимущества и c) недостатки языка ДРАКОН и среды «ИС Дракон»;
 — выбрать направление дальнейшего развития языка ДРАКОН и его инструментальных средств.

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

В 1996 году Государственный комитет по высшему образованию Российской Федерации включил изучение языка ДРАКОН в программу курса «Информатика» для направлений:

510000 — Естественные науки и математика
540000 — Образование
550000 — Технические науки
560000 — Сельскохозяйственные науки[67]

В официальном документе Госкомвуза «Примерная программа дисциплины „Информатика“» имеется раздел, посвященный языку ДРАКОН и использующий его понятийный аппарат:

Раздел 3. АЛГОРИТМЫ И АЛГОРИТМИЗАЦИЯ.
ВИЗУАЛИЗАЦИЯ АЛГОРИТМОВ

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

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

Понимаемость алгоритмов и методы её улучшения. Понятие эргономичного алгоритма. Равносильные преобразования визуальных алгоритмов, позволяющие улучшить их понимаемость: рокировка, подстановка, вертикальное и горизонтальное объединение, визуализация логических формул в условных операторах.

Две формы представления алгоритмов: визуальная и текстовая. Визуальные и текстовые языки и псевдоязыки. Преобразование алгоритмов из визуальной формы в текстовую и обратно. Преимущества визуальной формы. Анализ визуальных алгоритмов методом застывших условий. Язык абстрактных ДРАКОН-схем как инвариант класса процедурных языков.[68]

В документе Госкомвуза «Примерная программа дисциплины „Информатика“» содержится обоснование концепции и структуры учебного курса информатики.[69] и, в частности, дается обоснование использования языка ДРАКОН:

1. Среди требований, предъявляемых к современным алгоритмическим языкам, на первое место все чаще выходит понимаемость (comprehensibility) алгоритмов и программ, которая определяется как «свойство программы минимизировать интеллектуальные усилия, необходимые для её понимания»[16] Это объясняется тем, что «в современных условиях качественная программа должна обладать, помимо надежности и эффективности, ещё и такими важнейшими качествами как понимаемость и сопровождаемость»[70]

Наиболее мощным средством для улучшения понимаемости является визуализация алгоритмов и программ: «общепризнанно, что человеческий мозг в основном ориентирован на визуальное восприятие, и люди получают информацию при рассмотрении графических образов быстрее, чем при чтении текста»[71]

2. … В связи с этим тема «алгоритмы и алгоритмизация» (см. раздел 3 программы) излагается в рамках визуальной парадигмы, что позволяет получить ряд преимуществ: облегчить изучение темы, улучшить эргономические характеристики алгоритмов и т. д.

3. Синтез идей информатики и эргономики полезен тем, что процесс алгоритмизации (который во многих случаях требует значительных трудозатрат) становится менее трудоемким и более ясным. Для этого вводится понятие «эргономичный алгоритм». Излагаются равносильные преобразования алгоритмов, способные улучшить их эргономические характеристики. При этом алгоритмизация и программирование рассматриваются как частный случай более общей проблемы — систематизации, структуризации, представления и формализации человеческих знаний[72]

4. Сближение понятий «алгоритм» и «процедурное знание» дает возможность расширить понятие алгоритма и распространить его на любые технологии (промышленные, сельскохозяйственные, медицинские, образовательные и т. д.[73] Это позволяет в эргономически разумных пределах формализовать описание технологий с помощью визуального алгоритмического языка. В результате описание техпроцессов становится более наглядным и четким, освобождается от пробелов и двусмысленностей. Такой подход обещает заметный выигрыш. Во-первых, благодаря наглядности сокращаются сроки и трудоемкость изучения современных технологий, что особенно важно в рамках концепции непрерывного образования. Во-вторых, формализация и полнота описания техпроцесса может содействовать укреплению технологической дисциплины на производстве и в других областях.

5. Для решения столь масштабных задач нужен универсальный язык представления процедурных знаний в любой предметной области. Это должен быть язык нового типа: общедоступный, человечный, предельно легкий в изучении и удобный в работе, создающий наиболее комфортные условия для человеческого мозга, позволяющий решать проблемы ценою минимальных интеллектуальных усилий, удовлетворяющий самым строгим эргономическим и дидактическим требованиям. Анализ показывает, что в наибольшей степени этим требованиям соответствует процедурный язык визуального представления знаний и визуального программирования ДРАКОН (Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность), являющийся обобщением опыта, накопленного при создании космического корабля «Буран»[74][75] ДРАКОН задуман как «один из самых легких языков представления знаний и самый первый язык, с которого нужно начинать обучение алгоритмическому мышлению и программированию»[76]

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

7. Бакалавр любой специальности должен уметь формализовать свои процедурные профессиональные знания самостоятельно, то есть без помощи профессиональных программистов или когнитологов (инженеров по знаниям). Программа предусматривает приобретение навыков автоформализации знаний на языке ДРАКОН.[77]

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

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

  • во-первых, облегчить изучение материала и приобретение навыков,
  • во-вторых, повысить эффективность обучения школьников.

Имеется литература, предназначенная для этой цели на основе языка ДРАКОН.[60][61][62][63][78][64][79][80][81][82]

В курсе информатики тема «алгоритмы» считается одной из наиболее трудных. Многие дети мучаются, пытаясь понять, что такое алгоритм и с чем его едят. Убежден: вина за эти страдания лежит на устаревших методиках преподавания…

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

Стремясь избавить детей от ненужных мучений, я написал учебник для начинающих под названием «Занимательная информатика».[61] В этой книге математические вычисления полностью исключены, а изучение алгоритмических конструкций ведется с помощью забавных бытовых примеров, взятых из окружающей жизни. Кроме того, приводятся очень простые задачи со смешными роботами.

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

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

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

Поскольку ДРАКОН — это графический язык, трудный алгоритмический текст превращается в приятную для глаза «картинку» и легко усваивается. Здесь действует принцип, радующий душу каждого школьника: «Взглянул — и сразу стало ясно!».

Сегодня на рынке учебной литературы отсутствует «самый-самый легкий» учебник, в котором тема «алгоритмы» излагается с максимальной доступностью и простотой, обеспечивающей «мгновенное» понимание. Предлагаемый учебник призван заполнить этот пробел. Дополнительную информацию для учителя можно найти в книге.[55]Цитируется по[83]

Учительская газета о языке ДРАКОН

Идея «графических языков» высокого уровня, непосредственно преобразующая графическую информацию в программу, — вещь … очень современная. Такой язык и разработал Владимир Паронджанов, он называется «Дракон».

Есть … совершенно бесспорная сторона в открытии Паронджанова. «Дракон» — это эргономичный стандарт для графического представления учебной информации. Это, безусловно, ПЕРВЫЙ и ЕДИНСТВЕННЫЙ такой стандарт.

Блок-схемы ВО ВСЕХ имеющихся на сегодня книгах (кроме … книг Паронджанова) — СОСТАВЛЕНЫ ОЧЕНЬ ПЛОХО. Паронджанов — грамотный программист-профессионал, и он учит нас, методистов и учителей, ПРАВИЛЬНОМУ СОСТАВЛЕНИЮ БЛОК-СХЕМ.

В этом он, безусловно, новатор, и, насколько я знаю, нет другой литературы, где тому же самому можно научиться настолько просто и даже увлекательно.[84]

Центр компетенции по языку ДРАКОН

Хотя официально Центр компетенции по языку ДРАКОН ещё не создан, фактически эту роль сегодня выполняют Форумы сайта «Визуальный язык ДРАКОН».[85] Здесь можно получить интернет-консультации по языку ДРАКОН.

Обоснование и назначение языка

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

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

Говоря проще, решение сложной задачи мы обычно разбиваем на подзадачи. В алгоритме решения при этом выделяем основной алгоритм и вспомогательные («вставки» у Паронджанова). И в ДРАКОНе есть возможность представить такое разбиение как вызовы «вставок» из основного алгоритма — и, быть может, из других «вставок».

ДРАКОН поддерживает декомпозицию алгоритма выделением вспомогательных алгоритмов-вставок («предопределённых процессов» в терминах блок-схем по ГОСТ 19.701-90).

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

Представляемые схемами модели процессы могут находиться либо в отношении «главный-подчинённый» (иерархическая, или ранговая модель), либо в отношении «партнёров» (одноранговая, или диспозитивная модель). По порядку же возникновения всегда существует первичный процесс, который для другого данного процесса бывает:

  • вызывающий — когда данный процесс был вставкой (во вставку во вставку и т. д. — если уровней вызова много) в другой процесс;
  • «родительский» — когда данный процесс порождён как часть системы т. н. совместно протекающих взаимодействующих процессов (как ещё говорят, асинхронных или параллельных — понятие[86]).
В ранговой модели существует только одна рабочая точка (как ещё говорит Паронджанов, «дракон-поезд»). Она последовательно проходит процессы, начиная с первичного вызывающего. Там, где указана вставка другого процесса, совершается переход на его схему. Когда эта схема пройдена до конца — переход обратно на место указания вставки. В совокупности эти переходы образуют т. н. переход с возвратом (у Паронджанова также называется «акробатический прыжок»). Первичный процесс здесь понимается как головной.
Суть асинхронности (параллелизма) — в допущении более чем одной «рабочей точки» для системы процессов. Каждая точка развёртывает свою схему, и при необходимости процессы взаимодействуют. Первичный процесс в этом случае понимается как базовый; он может контролировать ход порождённых им процессов и при необходимости «снимать» их — досрочно прекращать исполнение.

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

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

Понятие «отслаивания» понимается по А. Н. Леонтьеву:[87][88]

…может ли человек передать машине выполнение любых процессов мышления? Из сказанного выше вытекает двоякий ответ: нет и да.

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

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

Сегодня процессы, недоступные для машины, завтра могут быть формализованы и поручены машине. Но это завтра приносит человеческому мышлению и что-то новое: мышление делает дальнейший шаг в своем развитии.

Как это связано с ДРАКОНом? По-простому — человек передаёт окружающим лишь часть того, до чего додумался. При этом у него в голове обычно складывается какой-то образ решения. Чем большую часть этого образа он «отслоит» — тем лучше. И чем в более удобном виде «отслоит» — тоже. Как раз ДРАКОН создавался так, чтобы улучшить передачу за счёт более удобного вида. И дать сосредоточиться человеку, «отслаивающему» алгоритмы (их сочинителю) на том, чтобы больше передать (и правильно по смыслу). А человеку, воспринимающему «отслоенное» — на понимании смысла, а не «расшифровке» неудобного представления.

Можно выделить графику и текст как формы представления (это сделал и Паронджанов), а также таблицу как промежуточную между ними. Когда и почему то или иное представление удобнее — об этом дальше.

Переход от текстового (табличного) представления к графовому у Паронджанова называется визуализацией. ДРАКОН визуализирует структуру маршрутов для любого текстового языка программирования — и вообще для представления формальных информационных моделей, программно или алгоритмически строгих. Второе подразумевает построение модели, допускающей интерпретацию по Тьюрингу/Посту, Черчу/Клини, Маркову[89]. Первое следует понимать в смысле структуризации программы по Т. Бадду (см.: Парадигма программирования#Различные определения) и Н. Вирту.

Паронджанов предлагает рассматривать алгоритм и техпроцесс как частные случаи технологии.[90] Тогда можно выделять среди формальных информационных моделей программу или её эквивалент для человека — рабочую инструкцию СМК по стандартам ИСО900Х, формализованную до программной строгости. Процесс формализации в этом случае включает алгоритмизацию и программирование.

Такая формальная информационная модель обязательно включает императивную и декларативную части (определение маршрутов и объявление величин алгоритма), как было показано Паронджановым.[91] Это соответствует тезису Н. Вирта «Программа = Алгоритм + Структура данных»[92]; сам Вирт в своё время расширил этот тезис, включив туда архитектуру исполнителя[93]:

К 1976 г. мне несколько надоели …тщетные попытки создать хорошие компиляторы для компьютеров, приспособленных для ручного кодирования.

…мы решили создать версию компилятора, которая генерировала бы код для машины, разработанной нами самими. Этот код позднее стал известен как П-код.

…Мысль разработать и построить целиком компьютерную систему, состоящую из аппаратуры, микрокода, компилятора, ОС и программных утилит, быстро оформилась в моём воображении… я был полностью занят разработкой аппаратуры: спецификацией микро- и макрокодов и программированием интерпретатора макрокодов; планированием ПО в целом и особенно текстового редактора и редактора диаграмм.

…Проект Лилит доказал выгодность разработки хорошо соответствующих друг другу аппаратного и программного обеспечения. …Это было возможно благодаря относительно систематическому, без трюков, общему представлению о процессоре.

Тем самым указывается на существование также составляющей знания, определяющей исполнителя (хотя бы в форме указания на его вид и свойства — напр., параметры конфигурации машины, квалификацию человека). Следуя определению исполнителя в SADT-формализации как activity, эту часть можно называть активностной (актив-знанием). Оно определялось явно и в текстовых языках — например, в школьной алгоритмической нотации для советского курса ОИВТ (см. о конструкции «исп» в учебниках по этому курсу[94]).

Именно разница в определении исполнителя определяет отличие программной модели — она предназначена для машинного исполнителя с его реальной архитектурой и системой команд (или для виртуальной, абстрактной машины — как в случае машинно-независимых, высокоуровневых языков). А также и отличие модели техпроцесса — в этом случае «репертуар» (термин введён Паронджановым[63]), а ранее — Кауфманом исполнителя включает физические действия.

Кроме того, определение парадигмы программирования в этой части:

Парадигма в первую очередь определяется базовой программной единицей и самим принципом достижения модульности программы. …

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

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

Паронджанов также подразделяет императивное знание на «маршрутное» и «командное». Можно видеть, что это частный случай общего для всех составляющих инфор-модели подразделения на части, имеющие смысл структурной и атритбутивной. Так, Герасименко указывает, что формализации (отчуждению) знания предшествует его структуризация; это следует из системного подхода, когда часть отчуждаемого знания представляется как атрибуты элементов и связей структуры[95]. Аналогично Акимов указывает[96]:

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

Тем самым и декларативное знание, и остальное также предполагают выделение структурной части и независимое определение её формы представления.

Дракон-схема реализует представление маршрутов алгоритма в классе устремлённых (сводимых, аранжируемых) циклических ориентированных графов с дополнительно наложенным ограничением планарности (укладки на плоскости без пересечений), как это было показано Ермаковым и Жигуненко (см. п.7 их сообщения[4]). Вершины дракон-схемы представляют операторы и псевдооператоры при условии заполнения их текстом.

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

Тем самым в знаковом (человекочитаемом) представлении цепочки следования вершин и их группы (образующие как линейную, так и нелинейную структуру) упорядочены на диосцене и снабжены метками-именами веток. То и другое повышает удобство чтения.

Точно так же мы можем упорядочить на плоскости строчки, выделенные в чистом тексте переводом строки. Так образуется двумерное (физически) текстовое представление структуры (которая логически м.б. и трёх-, и более-мерной). В п.3 упомянутого сообщения Ермакова и Жигуненко[4] об этом говорится следующее:
Последовательность действий выстраивается по вертикали сверху вниз, переключение семантических состояний системы (переходы между маршрутами) выполняются по горизонтали слева направо (расщепление) и справа налево (объединение).
Примером чему служит запись текста программы с интендацией — отступом, задающим горизонтальное положение на диосцене текстов последовательностей действий (выделенных переводом строки после текста каждого действия, а также каждого переключателя — то есть оператора перехода).
Аналогично мы можем и упорядочить строчки помещением их в специальную таблицу. Тем самым получается физически двумерное табличное представление. Примером чего служит язык диаграмм Насси-Шнейдермана, развивающий раннюю нотацию табличного представления маршрутной части императивного знания — язык FLOW-форм[97].

Разработчики языка полагают, что двумерное текстовое или табличное представления не дают такого улучшения восприятия, как упорядочение посредством «слепыша» граф-схемы. Так как одновременно происходит «замена текста эквивалентным ему чертежом», «удачным чертежом»[98], при которой «Остальные текстоэлементы языка … становятся ненужными, превращаясь в графические линии и ключевые слова „да“ и „нет“».[99] Эти текстоэлементы Паронджанов определяет как «Маршрутный язык — совокупность управляющих операторов. … язык „картинок“ (абстрактных дракон-схем, в которых полностью отсутствует текст)».[91]

Исключением м.б. случай, когда человек (сочинитель, читатель) по складу своего ума лучше работает с текстами (иногда такой тип мышления называют «литератор»). «Литератор» не выигрывает от перехода к нетекстовому представлению той или иной части описания. И даже может в чём-то проигрывать. Поэтому в таком переходе он не обязательно заинтересован.

Считается, что тексто-ориентированное мышление часто свойственно людям, профессионально занимающимся математикой и программированием. Возможно, именно этим объясняется тот факт, что в этих сферах на нетекстовое представление обращается мало внимания. Однако сегодня математика и программирование широко изучаются, и многие нематематики и непрограммисты оказываются тесно связаны с этими предметными областями. Особенно с программированием — хотя бы как постановщики задач на автоматизацию.
Для нетексто-ориентированного мышления (иногда такой тип называют «живописец») переход к частично нетекстовому представлению даёт экономию умственных усилий на понимание содержания и работу с ним. Неучёт же этого приводит к избыточной сложности освоения понятий, представленных в эргономически неоптимальной форме. Однако экономия зависит от правильности выбора частей, представляемых нетекстово. И правильности выбора новой формы представления.

И здесь мы должны внести некоторые уточнения. Прежде всего, ДРАКОН не относится к языкам «визуальным» в смысле, по-видимому, наиболее распространённом. Точнее будет называть его «графическим» (граф-языком) алгоритмизации (программирования). Термин был предложен А. А. Тюгашевым в его работе[100] по программированию для систем реального времени[101].

По-простому говоря, разницу можно показать следующим образом:
  • «визуальный» язык — такой, что использует не чисто текстовое представление внешней формы предмета описания (для программы — её рабочие экранные/печатные формы) как основу для описания содержания предмета (определения его модели). Форма же этого описания м.б. любой.
  • «графический», граф-язык — такой, что представляет непосредственно содержание предмета описания, его модель, используя графику.
Так, ДРАКОН представляет свой предмет формализации — маршрутную структуру процесса (в частности, программной процедуры) непосредственно. И именно её «визуализирует» в виде графа. Тогда как «визуальный» язык типа Дельфи представляет экранные формы программы как результат её работы. И уже с ними связывает процедуры как предмет формализации программистом. Причём в общем случае существуют и процедуры, не работающие непосредственно с экранными формами (про их представление на таком языке говорят, что «код кидается на контролы»). И содержание процедур представляется текстом.

Далее, следует различать уровни формализации. Изначально при этом отвечают на вопрос, ЧТО представляет собой формализуемая предметная область, задача деятельности. В результате получается описание, которое часто называют «декларативным». Но этот термин в программировании используется и в другом смысле, поэтому здесь так и будем называть его «ЧТО-описанием» (можно также говорить «дескриптивное»). Оно представляет предмет формализации обобщённо, через некоторые сущности и отношения между ними.

При дальнейшей формализации решается вопрос, КАК существует предметная область, решается задача. В результате получается «КАК-описание». Для него как раз и адекватен термин «программно/алгоритмически строгая информационная модель». При этом определяется некий формальный исполнитель (решатель задачи, реализатор логики предметной области). И для него формулируются алгоритмические процессы динамики предметной области (решения задачи). И определяются сущности как абстрактные типы объектов (величин) алгоритма. Так мы и получаем частные составляющие информатизованного отчуждаемого знания.

Представление программ, отвечающее классификации Н. Вирта и понятию парадигмы программирования, было известно и ранее. Так в литературе описана Паскаль-система ПЕКАН[102] (оригинальная статья относится к 1984 г.). На снимке экрана этой системы[103] показаны:

  • текстовое представление программы (на Паскале) — в окне <имя-программы> (вверху справа);
  • фрагмент ГСА типа дракон-примитива, на котором прослеживается упорядочение побочных вертикалей вправо — в части окна, видимо, предназначенного для ГСА (видимой внизу справа из-под остальных и не содержащей имени окна);
  • диаграмма синтаксического разбора (граф-схема вычисления) выражения — в окне Expression display (среднее внизу);
  • иерархия областей видимости совместно с определениями величин — в окне <<имя-программы> Symbols> (внизу слева);
  • показ состояния исполнителя как значений величин в областях стека и данных — в окне Stack Display (посредине слева).
Заметим, что в ПЕКАН-нотации для ГСА можно видеть явные вершины-соединители, указания направления стрелками для всех рёбер. Это не соответствует эргономическим требованиям Паронджанова — показывать на схеме только детали, обозначающие то, что читатель не поймёт и так, «по умолчанию». А чтобы таких деталей требовалось поменьше — как можно лучше согласовать организацию схем с закономерностями восприятия.

ДРАКОН относится именно к КАК-языкам. И служит для эргономичного представления части именно инфор-модели задачи (предметной области). Эргономизация представления отчуждаемого ЧТО-знания — самостоятельная и интересная задача. И здесь также граф-языки имеют применение — например, диаграммы «сущность-связь» (или IDEF1X). Паронджанов в последующих публикациях по визуализации указывает на возможность структуризации нестрого формализованного («ЧТО-») знания. Так, предлагаются языки визуализации логической структуры текста (обыденного, «деловой прозы»), грамматической структуры предложений естественного языка[104].

Сущность языка и метода

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

Задача формализации и унификации множества профессиональных языков с целью обеспечить эффективное взаимопонимание между специалистами любых профессий, включая программистов, является, хоть и важной, но, увы, неразрешимой. Положение в корне меняется, если ограничиться императивными профессиональными знаниями. Именно эту задачу решает язык ДРАКОН. Он построен путём формализации, неклассической структуризации и эргономизации блок-схем алгоритмов и программ, описанных в стандартах ГОСТ 19.701-90 и ISO5807-85.

Дракон-схему (граф маршрутов алгоритма) можно вывести путём исчисления над алфавитом вершин-[псевдо]операторов и словарём подграфов-макро[псевдо]операторов из аксиомы-заготовки.

Исчисление, разработанное для ДРАКОНа, называется шампур-методом. Оно основано на следующих принципах:

  • формальной эргономизации лексики — определения состава вершин и их графики с учётом реальных операторов и директив языков программирования; при этом среди вершин выделяются нелинейные, с участием которых образуются подграфы, построенные из знаков алфавита и словаря, даваемые как единицы лексики языка схем. Такой подграф называется атомом и всегда имеет один вход и один выход; также даются исходные конфигурации схем — заготовки (см. Тезисы 1..8, 11..14 шампур-метода[106]);
  • вложения — схема наращивается вводом атомов; среди рёбер атомов и заготовок выделены такие, что допускают замену на тот или иной атом — т. н. рёбра ввода; рёбра указываются вершинами — точками ввода (см. Тезисы 9..10, 15..25, 36, 37 шампур-метода[106]);
  • «шампура» — расположения входа и выхода линейной вершины и атома на одной оси, направленной всегда сверху вниз и упорядочения вершин при следовании по вертикали так, что они лежат на одной оси (см. Тезисы 2, 6, 8 шампур-метода[106]);
  • главной/побочной осей — выделения в нелинейной вершине (подграфе) из ряда входов (выходов) главного и упорядочения остальных (называемых побочными) вправо от него (см. Тезисы 7, 8 шампур-метода[106]);
  • силуэтной укладки — применения соединителей, принятых для блок-схем как межстраничные, в новом качестве — как внутрисхемных для укладки схемы на плоскости без пересечений цепей; соединители разделяют схему, называемую «силуэтом», на блоки-ветки, в тела которых уложены цепи; промежуточные выходы веток связываются со входами через особую структуру — петлю силуэта — и вершины-соединители (см. Тезис 2 шампур-метода[106]);
  • лианного вывода — представления неструктурных топологий схем (которые невозможно получить путём вложения) через операции переноса точек соединения без образования пересечений и/или новых входов в ветки силуэта и/или в циклы (любой формы схемы) (см. Тезисы 26..29 шампур-метода[106]).

В нелинейном подграфе имеется две и более осей следования.

Вход и выход атома представлены рёбрами ввода, между которыми располагается смысловая часть — так сказать, «ядро». Оно м.б. единственной вершиной или также подграфом (для сводимых графов — типа ветвления или цикла). Во втором случае рёбра ввода также м.б. в «ядре» атома.

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

При лианном выводе может получиться лианный, а в силуэте — также и адресный макроблок.[107] Также может получиться и структура, выводимая вложением (Паронджанов называет этот тип макроблока структурным; можно также атомарным).

На базе этих принципов определены правила вывода схем как теорем исчисления из выбранной аксиомы-заготовки в лексике атомов.

Как можно сказать проще? Шампур-метод даёт возможность строить «слепыш» алгоритма так, как мы выводим формулы в булевой алгебре. Только вместо букв — подграфы. И сами формулы имеют вид графов (для ДРАКОНа — схем маршрутов алгоритма). В основе метода — небольшое число базовых принципов:

  • шампура — вершины при следовании упорядочиваются по вертикали, так что вход всегда сверху, выход снизу и лежат на одной оси;
  • главной/побочных вертикалей — выходы развилок упорядочены друг относительно друга так, что не лежащий на главной вертикали выход (называемый побочным) всегда располагается правее главного;
  • вложения — схема наращивается вводом атомов, построенных из знаков алфавита и словаря, в специально указанные (точками ввода) линии заготовок и других атомов;
  • силуэта — укладки маршрутов на плоскости в тела веток, промежуточные выходы которых связываются со входами через особую структуру — петлю силуэта — и вершины-соединители.
  • операций с лианой — сочинитель также может переносить (с ограничениями) концы побочных маршрутов, чтобы образовать конфигурацию схемы, недостижимую вводом атома, но соответствующую конструкциям управления некоторых прогязыков; перенос возможен и в примитиве.

Лианы можно пересадить и так, что получится то же самое, что можно получить и вводом атома; конечно, это не имеет особого смысла.

Преемственность и развитие

Предложения Паронджанова можно рассматривать как развитие языка, заданного стандартом на блок-схемы в части алгоритмов и программ (далее — БСАП).

Смысл сказанного о сущности техноязыка и шампур-метода можно раскрыть через «формулу новизны», как это и принято для официального описания существа изобретений. Здесь можно сказать, что техноязык отличается от БСАП-языка тем, что:

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

Также эти предложения сохраняют общность с БСАП-языком в отношениях:

  • структуры схем — объектом вывода также является т. н. сводимый (аранжируемый, устремлённый; на эквивалентность этих определений указано в /3, п. 6/) граф — ориентированный циклический, с выделенной начальной вершиной;
  • отношения к разметке — как и в БСАП, рассматривается неразмеченный граф, который Паронджанов называет «слепышом»;
  • интерпретации — как и БСАП, примитивы и силуэты понимаются как графы потока управления, а их цепи — как маршруты алгоритмических процессов.

В /3, п. 7/ указано, что топология «слепышей» (схем-примитивов и внутри каждой ветки схем-силуэтов) соответствует классу устремлённых (сводимых, аранжируемых) циклических ориентированных графов, с дополнительно наложенным ограничением планарности (укладки на плоскости без пересечений). Также подчёркивается, что примитивы и силуэты — наиболее общие классы топологий устремлённых графов, ещё сохраняющие свойство управляемости структуры — когда из двух вершин, соединённых дугой, однозначно можно выбрать «старшую» и «младшую» относительно начальной вершины в графе.

При размещении в информационном пространстве исполнителя нелинейная (а при определённых условиях — и линейная) структура требует разрывов между некоторыми линейными её участками. Что означает невозможность естественного перехода к следующему элементу структуры. Для указания следующего элемента в этом случае и служит БП. С позиций структурности, следует различать случаи безусловного перехода в период сочинения:

  • явный — вводимый по желанию сочинителя на указанную им метку;
  • неявный — требуемый маршрутной структурой алгоритма при её выкладке — размещении на «ленте памяти»;

Также очевидно, что соединители у Паронджанова являются разновидностями явного безусловного перехода (БП), причём:

  • веточные — БП произвольные (типа goto), ограниченные планарностью;
  • лианные — в циклах БП-заменители goto (типа break и continue), вне циклов (включая выходы-заземления из веток) — goto, сохраняющие планарность.

Можно раскрыть эти отличия (а также сходства, оставшиеся с БС) и одновременно оценить метод и язык, возможности его развития.

Графика вершин

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

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

Можно видеть, что в ШМ принято единственное правило — располагать фигуры вершины «лесенкой» всегда справа налево и направленные формы фигур направо.

Также алфавит БС функционально шире, чем в ДРАКОНе. Блок-схемы предназначены для представления содержания всей программы (в смысле расширенного тезиса Вирта). Поэтому, кроме подалфавита императивной части (называемой в ГОСТ БС «схема алгоритма»), предусмотрен также подалфавит для декларативной части («схемы данных» по ГОСТ). Имеются также средства для представления материальных действий («техпроцессов» по Паронджанову) и структур исполнителей («схемы работы»)[108].

Вложение и структурные операции на графах

В текстовом программировании известны применения вложения в той или иной форме (например, в архитектуре и программировании отечественных машин семейства «Эльбрус»[109]). В рамках ШМ это понятие было применено к графам. Сущность вложения обсуждалась выше.

В исходном ШМ на ребре ввода определена т. н. валентная точка — вспомогательная вершина, на месте которой ребро как бы можно разорвать и вставить в разрыв атом так, что части разорванного ребра становятся продолжениями рёбер вставляемого атома.

В процессе обсуждения ШМ было предложено называть валентные точки точками ввода (Г. Тышов), а также отказаться от определения этих точек как вершин и считать само ребро допускающим ввод (Р. Блинов, В. Жаринов).

Для исчисления схем на конкретном шампур-языке задаются множества атомов и заготовок схем. На каждом определяются рёбра ввода. При этом для более удобного представления ветвления на множество вариантов Паронджановым предложена атомарная структура «переключатель».

Кроме вложения, в ШМ определены также операции изменения топологии схемы, не нарушающие структурности. Это добавление/удаление варианта переключателя, удаление конца схемы («зацикливание» алгоритма в целом — от начала до конца), боковое присоединение (добавление вершины-модификатора к другим вершинам).[110]

Упорядочение маршрутов

Принципы ШМ эргономически выгодно отличаются от принятого в блок-схемах порядка, при котором:

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

Иногда такую организацию блок-схем называют «анархической». Она критикуется рядом авторов, скажем, Б. Мейером[111].

По сути, в стандартах на БС и не существует чётких правил упорядочения элементов и подсхем. Тогда как ШМ, в общем-то, и есть система таких правил, только данная в математическом смысле не формально («что есть правильная схема»), а конструктивно («как построить правильную схему из правильной заготовки»).

Шампур-схема закономерно асимметрична. Это даёт возможность показать упорядоченность маршрутов по какому-то критерию. Не всегда такой критерий нужно или можно определить по смыслу схемы; в этом случае порядок м.б. произвольным или введён по какому-то абстрактному правилу.

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

Укладка схемы на плоскости

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

Непланарная схема с пересечениями (в терминах ШМ — примитив) разделяется веточными соединителями на блоки-единицы укладки — ветки — так, что из каждой пары пересекающихся цепей одна оказывается проходящей через подграф связи веток — петлю силуэта. Тем самым пересечение устраняется. Уложенная на плоскости аранж-схема в ШМ называется силуэтом. Силуэт можно и получать сразу — выводом из заготовки (ШМ-аксиомы). Только такой путь и допустим в ШМ; поэтому Паронджанов рекомендует мало-мальски сложный алгоритм визуализировать сразу как силуэт — чтобы избежать его вывода заново. Заготовка имеет исходно минимальноое число веток (две); определены операции добавления/удаления ветки в силуэт.

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

Силуэтная укладка есть физическое подразделение структуры маршрутов. Петля силуэта представляет связи веток как совокупность возвратных переходов с выходных соединителей на входные. В импер-смысле (для дракон-силуэта) это простые безусловные переходы. Достоинство их силуэтного употребления — в том, что передачи возможны не в произвольные места схемы, а лишь в заданные делением на ветки. Тем самым допускается goto, но также ограниченный — только на начала веток. Недостаток — в том, что переходы явные, и в терминах программирования дракон-силуэт м.б. представлен только на языках с явным БП (на ЯВУ с goto и на машинах с командой jmp-типа).

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

Атомарные и лианные структуры

Известно, что минимально для представления любой структуры маршрутов достаточно только следования и цикла; менее строго к этому добавляется также ветвление. По ШМ такое представление очевидно выводимо одним вложением соответствующих атомов. Поэтому можно называть получаемые структуры атомарными (такими, что тело схемы всегда можно «без остатка» подразделить на атомы языка этой схемы). Другие упомянутые выше ШМ-операции атомарности тела схемы не нарушают.

Все теоретически возможные структуры маршрутов не всегда можно получить только вложением. Имеются в виду структуры с БП — произвольным внутри программы (goto) и изнутри цикла на его начало/конец (т. н. break/continue-заменители). Для их представления Паронджановым было введено понятие лианной структуры маршрутов и операция пересадки лианы. В результате в техноязыке возможно представить структуры с заменителями, и только (если и в силуэте ограничиваться только пересадками лиан).

В силуэте у ветки возможны и побочные выходы. Они получаются как в результате укладки примитива с пересечениями, так и при изначальном сочинении силуэта. Для создания побочных выходов в ШМ включена операция заземления лианы.

Очевидное достоинство такого подхода — техноязык практически нейтрален к структурности алгоритмов («войне языков» высокого уровня по поводу goto и заменителей). Если принять подход противников явных БП в ЯВУ — можно отказаться от операций с лианой и алгоритмизовать только атомарными структурами. Если принять подход сторонников — разрешить лианные операции и структуры.

Недостаток разрешения лианных структур — тот же, что в случае силуэтной укладки схемы. Аналогично он и преодолевается.

Структурная алгоритмизация и шампур-метод

На техноязыке можно представить конструкции выбора и цикла Дейкстры для управления. Они описаны, в частности, в работе Ю. Г. Карпова[112], посвящённой той же проблеме, для решения которой предлагается техноязык — гарантоспособному программированию.

Возможность и логической укладки, и отказа от явных БП в теле схемы даёт цикл Дейкстры как иная форма универсальной программы. Его использование возможно двумя путями:

  • вывода тела дракон-схемы или его части как ЦД в рамках ШМ-правил (как варианта вложенного цикла);
  • модификации метода для использования ЦД-организации схем, начиная с аксиом.

Первый путь требует только единообразного порядка вложения при выводе схемы как примитива — новая ветвь ЦД добавляется вводом дракон-атома обычного цикла как ДО-подтела цикла предыдущего уровня вложенности.

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

Определённая сложность логической укладки в том, что структуру нужно логически выводить изначально, пользуясь методами т. н. доказательного программирования. Для неподготовленного сочинителя это может представлять известную проблему. Возможны следующие пути её решения:

  • пользоваться известными методами формальной спецификации задачи, хорошо разработанными и допускающими эргономизацию;
  • приводить разработанные силуэты и/или лианные макроблоки к форме ЦД.

Среди первых можно выделить т. н. автоматное программирование[113]. Спецификации конечными автоматами естественны для задач управляющего (реагирующего) рода и рядом специалистов считаются наглядными.

Показано, что дракон-силуэт можно преобразовать в ЦД-схему. Тем самым ЦД-укладка обратно совместима с силуэтной. То есть можно переводить «силуэтно-унаследованные» визуализации алгоритмов и потоков управления программ в ЦД-запись.

Важное преимущество ЦД как замены силуэта в том, что его ветви имеют один выход. Тем самым отпадает нужда в ШМ-операции «заземление лианы».

Кроме того, в рамках доказательного программирования Дейкстрой, Виртом и другими исследователями было показано, что в теле ЦД также не нужно употреблять явных БП, чтобы получить те же маршруты, что и с их использованием; соответственно не требуется операция «пересадка лианы».

Как следствие, редактор, реализующий только логическую укладку, м.б. упрощён в плане как алгоритмов, так и структур данных; очевидно, это даст большую его производительность.

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

Разметка схем

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

  • выделения в чисто текстовом языке управляющей части и замены её на маршрутный язык (синтаксис «слепышей»);
  • разметки остальным содержанием текстового языка вершин и рёбер «слепыша».

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

Управляющие знания логически есть одна часть из двух (структурной и атрибутивной) в одной составляющей из четырёх (императивной, декларативной, активностной и обобщающей). Однако синтаксический объём этих частей в разных языках не обязательно одинаков.

Проще говоря, любой формальный ЯПЗ распадается на четыре подъязыка, один из которых играет интегрирующую роль. И нужно определить синтаксис каждого языка. Создатель техноязыка указывает на необходимость единых правил построения объектных имён, информативных и удобных для восприятия; для этого нужна и достаточная длина имени:

…множество 32-символьных идентификаторов образует весьма выразительный, хотя и своеобразный, язык, законы и правила оптимизации которого ещё предстоит открыть, обсудить и подвергнуть экспериментальной проверке.

— /1, с.163/

В то же время командная часть императивного подъязыка (так сказать, «имена действий») также должна иметь текстовый синтаксис. Нужен и синтаксис их сочетания в дракон-вершинах.

Определённое достоинство такого пути (можно сказать, частной гибридизации) в его простоте — определение гибридного языка м.б. получено без больших видимых усилий. На практике же проявляются недостатки. Их можно объяснить, исходя из сказанного выше при обосновании языка и метода.

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

Во-вторых, для некоторых парадигм, не императивных по своей сути, возможность выделить управляющую часть вообще неопределённа. Это возможно для языков высокой абстракции, тяготеющих к декларационнности («ЧТО-формализации»). В частности, тех или иных языков спецификации программ/задач.

В-третьих, существует часть знания, отражаемая в формальном тексте неявно. На это, в частности, указывал И. Ермаков при обсуждении визуализации.[114] При буквальном переводе части текстового синтаксиса в графику нет оснований полагать, что эта часть станет явной.

Преодолеть недостатки частной гибридизации можно следующим образом:

  • визуализировать в каждой составляющей текстового языка её структурную часть;
  • рассматривать парадигмы «ЧТО-формализации» на предмет выделения их структурной части и нахождения структур графов, формально и эргономично представляющих эту часть;
  • выявлять содержание, не отражённое в конкретном языке явно, и находить средства его выражения.

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

Безусловно, путь, намеченный Ермаковым, требует и теоретических изысканий, на что он также указывал.[115]

См. также

Примечания

  1. http://www.keldysh.ru/papers/2008/source/prep2008_29.doc
  2. История создания языка «ДРАКОН», Российское Трансгуманистическое Движение
  3. ↑ Технология разработки алгоритмов и программ «ГРАФИТ-ФЛОКС»
  4. ↑ Ермаков И. Е., Жигуненко Н. А. Двумерное структурное программирование; класс устремлённых графов. (Теоретические изыскания из опыта языка «ДРАКОН») // Сборник трудов V Международной конференции «Инновационные информационно-педагогические технологии в системе ИТ-образования», Москва, 8-10 ноября 2010. М.:, Изд-во МГУ, 2010. — С. 452—461.
  5. Ермаков И. Е. ДРАКОН для спецификаций: протокол XML-СУБД Sedna
  6. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 28.
  7. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 260 и рис. 137.
  8. ↑ Глава 11. Визуальные операторы реального времени // В кн.: Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 165—176.
  9. ↑ Тышов Г. Н. Интегрированная среда языка ДРАКОН, скачать
  10. Визуальное программирование " Визуальный язык ДРАКОН
  11. Ефанов С. Д. Видеоролик. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 1
  12. Ефанов С. Д. Видеоролик. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 2
  13. Ефанов С. Д. Видеоролик, демонстрирующий процесс разработки программы на гибридном языке Дракон-Си для микропроцессора, управляющего приводом дверного замка. Скачать
  14. ↑ Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 34.
  15. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 35.
  16. 1 2 Саркисян А. А. Повышение качества программ на основе автоматизированных методов. М.: Радио и связь, 1991. С. 19. ISBN 5-256-00629-0
  17. 1 2 Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. — С. 391—493с. ISBN 978-5-94074-606-5.
  18. Концепцию «программирование без программистов» впервые предложил Джеймс Мартин в книге Martin, James. Application Development Without Programmers. Prentice Hall Inc, Englewood Cliffs, NJ, 1982.
  19. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. С. 13, 14 ISBN 978-5-94074-606-5
  20. Паронджанов В. Д. Теоретические основы языка ДРАКОН. Глава 36. #22. Замечания
  21. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 101.
  22. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. С. 80 ISBN 978-5-94074-606-5
  23. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. — C. 80, 81. ISBN 978-5-94074-606-5
  24. Практический вывод по результатам эксплуатации системы ИС Дракон — Транслятор Дракон-Си — Keil.
  25. Приклонский П. Транслятор файла *.drt ИС Дракон в текст Си-программ
  26. Когнитивные вопросы математики при исследовании проблемы интенсификации математического научного творчества с помощью интерактивной компьютерной графики изложены в книге «Зенкин А. А. Когнитивная компьютерная графика. — М. Наука, 1991. 192с. — ISBN 5-02-014143-7». Cм. также Когнитивная графика.
  27. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 31, 32.
  28. Dijkstra E. W. Go To Statement Considered Harmful. // Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147—148.
  29. Эмуляция GOTO в языках Python и Tcl.
  30. Структурность в текстовых языках и языке ДРАКОН
  31. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 226—266.
  32. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому. М.: ДМК-пресс, 2010. — С. 325—351, 357—379. ISBN 978-5-94074-606-5
  33. Глава 12. Дружелюбное программирование // В кн. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 177—193.
  34. В кн. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому. М.: ДМК-пресс, 2010. — С. 210—221, 399—403. ISBN 978-5-94074-606-5
  35. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 265, 266.
  36. Речь H.И. Лобачевского «О важнейших предметах воспитания» на торжественном собрании Казанского Императорского университета 5 июля 1828 г., в 1-ю годовщину его пребывания на посту ректора
  37. Безель Я. Б. Можно ли улучшить работу ума? Новый взгляд на проблему. Размышления над новой книгой // Вестник Российской академии наук, том 73, № 4, 2003. С. 363—365. Рецензия на книгу: Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001.
  38. Многоразовый орбитальный корабль «Буран» / Под ред. члена-корр. РАН Ю. П. Семёнова и докторов технических наук Г. Е. Лозино-Лозинского, В. Л. Лапыгина, В. А. Тимченко. — М.: Машиностроение, 1995. — Глава 7. Система управления орбитального корабля. С. 254—269. ISBN 5-217-02772-X (Эта книга написана разработчиками орбитального корабля «Буран»).
  39. Система управления (СУ) космического корабля «Буран»
  40. Состав системы управления (СУ) космического корабля «Буран»
  41. Бортовой цифровой вычислительный комплекс (БЦВК) космического корабля «Буран»
  42. Штурманы ракет. Под общей редакцией Е. Л. Межирицкого. М.: БЛОК-Информ-Экспресс, 2008. — 384с. ISBN 978-5-93735-008-4 Книга посвящена 100-летию со дня рождения выдающегося ученого академика Н. А. Пилюгина и 45-летию созданного им предприятия. Это рассказ о деятельности Пилюгинского центра, ученых, проектантах, конструкторах. инженерах, технологах, рабочих, испытателях, которые своим самоотверженным трудом заложили основу современной отечественной ракетно-космической техники
  43. Межирицкий Е. Л., Немкевич В. А., Присс Г. М. 40 лет Научно-производственному центру автоматики и приборостроения им. академика Н. А. Пилюгина // XXVIII Академические чтения по космонавтике, посвященные памяти академика С. П. Королева и других выдающихся отечественных ученых — пионеров освоения космического пространства. Материалы пленарного заседания «Лидеры отечественной ракетно-космической техники — пути становления и созидания». 28 января 2004 года
  44. Системное и прикладное программирование в Институте прикладной математики им. акад. М. В. Келдыша РАН
  45. Крюков В., Петренко А. Интегрированный подход к разработке крупных программных систем управления реального времени
  46. Баранова Т. П., Буликов В. Г., Вершубский В. Ю., Гайфулин С. А., Луцикович В. В. и др. Язык ДИПОЛЬ для автоматизированных систем испытания космических аппаратов.
  47. Паронджанов В. Д. Неожиданные уроки космонавтики ХХ века. Новая роль человеческого фактора и когнитивная революция в информационных технологиях. — В кн.: Человек—Земля—космос. Труды 1-й международной авиакосмической конференции. (Москва. 28 сент.—2 окт. 1992 г.) Под ред. Г. Е. Лозино-Лозинского. Том 2. Крылатые космические системы. — М.: Российская инженерная академия, 1995. С. 337—345.
  48. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому. М.: ДМК-пресс, 2010. — С. 47. ISBN 978-5-94074-606-5
  49. ДРАКОН: страницы истории
  50. Ракетно-космическая корпорация «Энергия». Морской старт. Пуски по программе «Морской старт»
  51. Ракетно-космическая корпорация «Энергия». Морской старт. Хронология пусков
  52. Паронджанов В. «Буран» и язык программирования ДРАКОН// Компьютерра Online 13 апреля 2009 года
  53. Назьмов Р. Б. БЦВК на базе семейства «Бисер 6» // Труды ФГУП «НПЦАП» Системы и приборы управления, 2008, № 4. ISSN 1991-5950 (Научно-технический журнал Пилюгинского центра, входящий в реестр ВАК)
  54. Паронджанов В. Д. Графический синтаксис языка ДРАКОН // Программирование, 1995, № 3. С. 45—62.
  55. 1 2 Паронджанов В. Д. Как улучшить работу ума. (Новые средства для образного представления знаний, развития интеллекта и взаимопонимания). — М.: Радио и связь, 1998, 1999. — 352с. ISBN 5-256-01211-8
  56. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! — М.: Дело, 2001. — 360 с. ISBN 5-7749-0211-0
  57. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. — 464с. ISBN 978-5-94074-606-5 (Дано самое последнее описание языка ДРАКОН и примеры его применения).
  58. Паронджанов В. Д. Почему мудрец похож на обезьяну, или Парадоксальная энциклопедия современной мудрости. М.: РИПОЛ Классик, 2007. — 1154с. Иллюстраций 245.(Дано научно-популярное описание языка Дракон. Стр. 297—434).
  59. Язык ДРАКОН. Краткое описание М.: 2009
  60. 1 2 Паронджанов В. Д. Каким будет школьный алгоритмический язык ХХI века? // Информатика и образование, 1994, № 3. С. 77—92.
  61. 1 2 3 Паронджанов В. Д. Занимательная информатика. М.: Росмэн, 1998. — 152с. Иллюстраций 200. — (Школьнику для развития интеллекта). ISBN 5-257-00551-4
  62. 1 2 Паронджанов В. Д. Занимательная информатика, или Волшебный Дракон в гостях у Мурзика. М.: Росмэн, 2000. — 160с. Иллюстраций 207. — (Школьнику для развития интеллекта). ISBN 5-257-00929-3
  63. 1 2 3 Паронджанов В. Д. Занимательная информатика. М.: Дрофа, 2007. — 192с. Иллюстраций 240. ISBN 978-5-358-01603-3 (Пособие по теме «Алгоритмы» для учащихся 5—9 классов, построенное на основе языка ДРАКОН).
  64. ↑ Паронджанов В. Дракон — друг человека // Компьютер в школе, 1999, № 7
  65. drakon / FrontPage
  66. Перечень сайтов, где можно скачать литературу по языку ДРАКОН
  67. Примерная программа дисциплины «Информатика». Издание официальное. М.: Госкомвуз, 1996. — 21с. (Официальный документ Государственного Комитета Российской Федерации по высшему образованию).
  68. Примерная программа дисциплины «Информатика». Издание официальное. М.: Госкомвуз, 1996. — 21с. (Программа изучения Информатики, третий раздел которой построен на основе языка ДРАКОН. С. 3, 4.)
  69. Примерная программа дисциплины «Информатика». Издание официальное. М.: Госкомвуз, 1996. — 21с. (Обоснование концепции и структуры учебного курса информатики. С. 13−16).
  70. Саркисян А. А. Повышение качества программ на основе автоматизированных методов. М.: Радио и связь, 1991. С. 17. ISBN 5-256-00629-0
  71. Вельбицкий И. В., Ковалев А. А., Лизенко С. Л. Графический интерфейс представления алгоритмов и программ. // Управляющие системы и машины, 1988, N4. С. 42.
  72. Паронджанов В. Д. Перспективы информационных технологий и повышение продуктивности интеллектуального труда. // Научно-техническая информация, серия 1, 1993, N 5. С. 9.
  73. Паронджанов В. Д. Визуализация школьного курса информатики с помощью языка ДРАКОН. // Педагогическая информатика, 1994, N3. С. 11.
  74. Паронджанов В. Д. Графический синтаксис языка ДРАКОН // Программирование, 1995, N3. С. 45—62.
  75. Паронджанов В. Д. Каким будет школьный алгоритмический язык XXI века? // Информатика и образование, 1994, N3. С. 77—92.
  76. Паронджанов В. Д. Визуализация школьного курса информатики с помощью языка ДРАКОН. // Педагогическая информатика, 1994, N3. С. 10, 11.
  77. Примерная программа дисциплины «Информатика». Издание официальное. М.: Госкомвуз, 1996. — 21с. (Обоснование использования языка ДРАКОН. С. 15, 16).
  78. Алгоритмы в средней школе. // В кн. Паронджанов В. Д. Дружелюбные алгоритмы, понятные каждому (Как улучшить работу ума без лишних хлопот). М.: ДМК-пресс, 2010. — С. 285—295. ISBN 978-5-94074-606-5
  79. Паронджанов В. Д. Визуализация школьного курса информатики с помощью языка ДРАКОН. // Педагогическая информатика, 1994, N3. — С. 7—12.
  80. «Занимательная информатика» // Информатика, 2000, № 40. С. 25—28.
  81. Паронджанов В. Д. Общедоступный визуальный язык «Дракон» для улучшения понимания школьниками технологических процессов на уроках технологии. — В. кн.: Проблемы, перспективы, опыт апробации и внедрения программы «Технология». (9—12 октября 1995 г. С. 60—61.
  82. Фокин Ю. Г. Дружелюбный русский алгоритмический язык, который обеспечивает наглядность («ДРАКОН») // В кн.: Фокин Ю. Г. Теория и технология обучения: деятельностный подход. Учебное пособие. М.: Издательский центр «Академия», 2008. — С. 233, 234. ISBN 978-5-7695-5259-5
  83. Паронджанов В. Д. Нужен ли школьникам «самый легкий» учебник? — В кн.: Информационные технологии в образовании. IX международная конференция. Сборник трудов. Часть II. Информатика: стандарты и содержание. Интеграция информационных технологий в образование. (9—12 ноября 1999 г.). М.: МИФИ, 1999. С. 56—57.
  84. Беляков Е. Новый алгоритм: раздевайся и быстро ложись спать! Диалог на языке «Дракона» // Учительская газета, 13 марта 2001, № 10. С. 16.
  85. Форумы сайта «Визуальный язык ДРАКОН»
  86. Языки программирования. Концепции и принципы — М.: ДМК-Пресс, 2010.
  87. См.: Автоматизация и человек. — Психологические исследования. М., 1972. — Вып.2 — С. 3-12
  88. Также имеется в сборнике: Хрестоматия по инженерной психологии. — М.: Высшая школа, 1990. — С. 46-53.
  89. Вкратце о названных формализмах см.: Острейковский В. А. Информатика. — М.: Высшая школа, 2001 — С. 56-59.
  90. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 46-47.
  91. ↑ Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 192.
  92. Вирт Н. Алгоритмы + структуры данных = программы. — М., 1985.
  93. От разработки языков программирования к конструированию компьютеров. — Микропроцессорные средства и системы, № 4/1989. — С. 42-48. (опубликовано в порядке правомерного цитирования по Ст.1274 ГКРФ-2008)
  94. Кушниренко А. Г. и др. Основы информатики и вычислительной техники. — 2-е изд. — М.: Просвещение, 1991. — § 22.
  95. Герасименко В. А. Защита информации в АСОД. — М.: Энергоатомиздат, 1994. — С. 83.
  96. Акимов О. Е. Дискретная математика: логика, группы, графы. — 2-е изд., доп. — М.: Лаборатория базовых знаний, 2003. — С. 321.
  97. Калянов Г. Н. CASE. Структурный системный анализ. — М.: ЛОРИ, 1996 — С. 53-55.
  98. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 68,69.
  99. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 177—179.
  100. Тюгашев, А. А. Графические языки программирования и их применение в системах управления реального времени : монография — Самара : Изд-во Самар. науч. центра РАН, 2009.
  101. Ещё точнее будет говорить о языке графовом (но этот термин пока не общепринят). А целостный язык представления знаний, где структурная часть представлена на графовом подъязыке, называть граф-базированным ЯПЗ (понятно, что равно возможны и текстобазированные, и табулобазированные ЯПЗ).
  102. Теслер Л. Г. Языки программирования//В мире науки, 1984. (В сб. «Современный компьютер». — М.: Мир, 1986
  103. Языки программирования // В мире науки, 1984. (В сб. «Современный компьютер». — М.: Мир, 1986 — С. 78). (опубликовано в порядке правомерного цитирования по Ст.1274 ГКРФ-2008).
  104. Паронджанов В. Д. Почему мудрец похож на обезьяну, или Парадоксальная энциклопедия современной мудрости. М.: РИПОЛ Классик, 2007. — 1154 с. Иллюстраций 245. — Гл. 19-21.
  105. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 36.
  106. ↑ Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — Гл. 14,15.
  107. Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — С. 259—261.
  108. Тюгашев, А. А. Графические языки программирования и их применение в системах управления реального времени : монография — Самара : Изд-во Самар. науч. центра РАН, 2009. — С. 50.
  109. Сафонов В. О. «Языки и методы программирования в системе ЭЛЬБРУС». — М.: 1989. (опубликовано в порядке правомерного цитирования по Ст.1274 ГКРФ-2008)
  110. http://drakon.su/vlozhenie_i_strukturnye_izmenenija_na_grafax#vlozhenie_i_strukturnye_izmenenija_na_grafax
  111. Мейер Б. Почувствуй класс. — М.: НОУ «ИНТУИТ»; БИНОМ, 2011. — п. 7.7.
  112. http://drakon.su/biblioteka/start#knigi «Model Checking…» М.:, 2010. — Гл. 8.
  113. Управление двумя клапанами (визуализация автоматной спецификации процессов) по материалам работы: Поликарпова Н. И., Шалыто А. А. Автоматное программирование. — СПб.: Питер, 2010. — п. 2.1.2.
  114. OberonCore • Просмотр темы — Особенности языка ДРАКОН
  115. OberonCore • Просмотр темы — Текстовый синтаксис для Дракона

Литература

  • Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов — это очень просто! М.: Дело, 2001. — 360 с.
  • Паронджанов В. Д. Занимательная информатика. М.: Дрофа, 2007. — 192с. ISBN 978-5-358-01603-3 (Пособие по теме «Алгоритмы» для учащихся 5—9 классов, построенное на основе языка ДРАКОН).
  • Д. А. Щелкунов, П. В. Павлов, И. А. Князев. Средство визуального программирования «Силуэт» // «Приборостроение и средства автоматизации. Энциклопедический справочник» № 10 2003 год. Стр. 57—60. (Силуэт — основная структура языка ДРАКОН).
  • Ю. И. Рогозов, А. А. Дубровский, А. С. Свиридов. Новый подход реализации идеи «программирование без программиста» // Известия ЮФУ. Технические науки. Тематический выпуск «Перспективные системы и задачи управления». — Таганрог: Изд-во ТТИ ЮФУ (Южный федеральный университет), 2008, № 12 (89). — С. 186—193.
  • Павлова Н. Ф. Стратегическое планирование развития территориальных социальных образований в схемах. Екатеринбург, Уральское отделение РАН, 2002. 119с. ISBN 5-7691-1400-2 (Даны примеры дракон-схем для задач стратегического планирования).
  • Осипова Н. А., Рихванов Л. П., Кропачев А. В. Создание экспертно-обучающей системы на базе алгоритмического подхода для учебного курса «техногенные системы и экологический риск». Томский политехнический университет.
Материалы научных, научно-методических и научно-практических конференций
  • Шамардина Е. И., Манюнин П. А. Язык программирования «Дракон» и его применения за пределами ракетно-космических проектов. Разработка математической модели и редактора // Актуальные проблемы российской космонавтики. Материалы ХХIV Академических чтений по космонавтике. ИИЕТ РАН. Москва, январь 2010 года. Секция 17. Системы управления космических аппаратов и комплексов.
  • Созоров Н. Г., Трошин М. В. Дракон-редактор как основное звено в формализации целевых дидактических ресурсов для проектирования интерактивного учебного курса. // Материалы региональной научно-методической конференции ИДНО Томского политехнического университета «Электронные дидактические материалы в инженерном образовании». 11-12 октября 2009 г.
  • Гришаева О. В. Алгоритмический подход при организации учебно-исследовательской работы студентов на лабораторно-практических занятиях по органической химии. Кемеровская государственная медицинская академия, г. Кемерово // Университетская научно-методическая конференция Томского политехнического университета «Совершенствование содержания и технологии учебного процесса», г. Томск, 9-10 февраля 2010 г. (Язык ДРАКОН позволил студентам без помощи программистов выполнить исследовательскую работу по функциональному анализу органических соединений).
  • Драгомирецкий В. И. Применение технологического языка ДРАКОН в учебном процессе МГВРК // Инженерно-педагогическое образование: проблемы и пути развития. Международная научно-практическая конференция. Минск, 19-20 мая 2011 года.

Ссылки

  • drakon.su/ — официальный сайт ДРАКОН
  • drakon / FrontPage — часть материалов по ДРАКОНу, появилась в Интернете в конце 2006 года.
  • Перечень сайтов, где можно скачать литературу по языку ДРАКОН.
  • Визуальный язык ДРАКОН на OberonCore.ru.
  • Обзор языка и исчисления дракон-схем (Жаринов В. Н., веб).
  • Форум о ДРАКОНе, его применении и реализациях — на данный период фактически является центром компетенции по языку ДРАКОН (по оценке Паронджанова).
  • Отзывы о ДРАКОНе, родственных языках и шампур-визуализации: Е. Темиргалеев (комплексный; назначение языка); Я. Романченко (визуализация программ;); igor (роль языка) И. Ермаков (роль языка; роль императивного знания); Ф. Ткачёв (математическое обоснование; способ употребления); Р. Блинов (о сущности шампур-метода); В. Жаринов (роль и место языка; о сообщении Митькина; о языке ГНОМ; о связи с методом Дейкстры); А. Усов (роль и место языка); Г. Тышов (критика); С. Митькин (краткое сообщение о языке (англ.) = DRAKON: The Human Revolution in Understanding Programs).
  • Текстовые форматы записи: Блинов Р. (Процедурно-топологическая нотация (ПРОТОН) для ДРАКОНа (процедурно-топологическая нотация ориентирована на использование структурных конструкций для линейной текстовой записи планарных графов потоков управления и Дракон-схем); общий подход к скобочной записи шампур-схем; Ильченко Э. Формат текстового описания. Романченко Я. Предложения по XML-описанию.
  • Предложения по применению языка и/или метода: Д. Дагаев (Алаверды Дракону — использование языка ДРАКОН при проектировании АСУ в атомной энергетике); В. Жаринов (развитие метода; визуализация языков высокого уровня).
  • Статья В. Д. Паронджанова в «Компьютерре»: обсуждение; продолжение обсуждения.
  • О реализации: И. Ермаков (оценка условий); VOT7 (пользовательские критерии).
  • Реализация "СВП «Силуэт»: аннотация публикации — недоступна (Д. А. Щелкунов, П. В. Павлов, И. А. Князев. Средство визуального программирования «Силуэт». // Приборостроение и средства автоматизации. Энциклопедический справочник № 10-2003. — С.57—60.); отзывы неизвестны.
  • Реализация «ИС Дракон (ранее — DRAKON)» Г. Тышова (редактор-транслятор с собственным DRT-форматом документов): основной ресурс; отзывы: Я. Романченко (критика); В. Жаринов (комплексная оценка; предложения по улучшению) VOT7 (эргономические требования) С. Ефанов (использование; Ефанов С. Д. Видеоролик. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 1; Ефанов С. Д. Видеоролик. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 2 (демонстрация процесса разработки программы на гибридном языке Дракон-Си для микропроцессора, управляющего приводом дверного замка); А. Донской (оценка разработки и продвижения); Е. Темиргалеев (критическая оценка).
  • Реализация «D2O (Deuterium Oxide)» Я. Романченко (транслятор с гибридного языка Дракон-Active Oberon в код языка Active Oberon на базе DRT-документов): основной ресурс; обсуждение.
  • Реализация Д. Барановского (оригинальный редактор-транслятор шампур-блок-схем для ряда ЯВУ с собственным форматом документов): основной ресурс; обсуждение.
  • Реализация «Дракон-Си» П. Приклонского (конвертор из DRT-документов в код на Си): основной ресурс; применение.
  • Реализация «DRAKON Editor» С. Митькина (редактор диаграмм ДРАКОН для Windows, Mac и Linux с трансляцией на ряд ЯВУ): проект на sourceforge бывший основной ресурс; отзывы: and007; В. Жаринов.
  • Реализация С. Тарасенко (конвертор из DRT-документов в код на ряде ЯВУ): основной ресурс.
  • Обзор основных реализаций (Жаринов В. Н., веб).

ДРАКОН (язык программирования).

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06