Язык "Дракон". Язык «дракон» и система образования

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

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

Язык ДРАКОН разработан совместными усилиями Российского космического агентства (НПЦ автоматики и приборостроения, г. Москва) и Российской академии наук (Институт прикладной математики им. М.В. Келдыша, г. Москва) как обобщение опыта работ по созданию космического корабля "Буран". На базе ДРАКОН а построена автоматизированная технология проектирования программных систем (CASE-технология) под названием "ГРАФИТ-ФЛОКС ". Она успешно используется в ряде крупных космических проектов: "Морской старт ", "Фрегат ", "Протон-М " и др.

ДРАКОН - очень легкий язык. Настолько легкий, что разработку многих компьютерных программ для космических ракет на практике ведут не программисты, а обычные специалисты - по принципу "программирование без программистов". Причина отказа от программистов проста. При решении практических прикладных задач специалисты досконально владеют материалом и прекрасно знают постановку задачи. В отличие от них программисты не знают "физику процесса" и становятся "лишними людьми", без которых вполне можно обойтись. Это позволяет значительно сократить издержки, улучшить показатель "затраты-результат", ускорить ход работ и полностью избавиться от ошибок "испорченного телефона", вызванных взаимным непониманием между ПРОГРАММИСТАМИ и СПЕЦИАЛИСТАМИ.

ДРАКОН универсален. Он может применяться для наглядного представления и быстрой разработки алгоритмов не только в "космосе", но и в "земных" видах человеческой деятельности. Практическая полезность ДРАКОН а получила высокую оценку. Министерство образования включило изучение языка ДРАКОН в программу курса информатики высшей школы (см.: Примерная программа дисциплины “Информатика”. Издание официальное. - М.: Госкомвуз, 1996. С. 3, 4, 15, 16).

ДРАКОН-редактор

ДРОН

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

8 апреля 2008 г. Александр Ильин на форуме предложил название ДРОН для возможного языка ДРАКОН-Оберон .

D2O (Deuterium Oxide) - ДРОН => Active Oberon транслятор.

Задавшись целью реализации языка ДРОН я написал письмо Геннадию Тышову с просьбой открыть формат ДРАКОН -схем используемый в его редакторе. На что в ответ он выслал мне весь исходный код:)

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

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

Основные особенности "оформления" конечно касаются декларативой части, отсутствующей в ДРАКОН е.

На первых порах пришлось "приспособить" под декларативную часть блок "комметнарий", с разделением соответсвующих секций, собственно: комментариев, импорта, констант, типов и переменных. принадлежность той или инной секции определяется первым считанным из блока элементом, соответственно (* , IMPORT , CONST , TYPE и VAR .



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

Возможно более удачное решение - оформлять декларативную часть в табличной форме.

В TYPE секции даются объявления типов и "пустышек" деклараций объектов (без методов и тел).

Каждая отдельная схема рассматривается как эквивалент процедуры на языке Оберон . При этом применительно к языку Оберон можно рассматривать в качестве процедур ещё и тела модуля и объектов (после слова BEGIN ), а ещё необходимо как-то различать процедуры модуля от процедур-методов объектов.

Было решено:

  • Тело модуля оформлять в виде схемы, в заголовок которой вписывается слово BEGIN
  • Префиксовать заголовки схем относящихся к методам объектов именами этих объектов. т.е. Object.Proc1 , Object.BEGIN . Как видите, тело объекта тоже не забыли
  • Все остальные схемы соответствуют процедурам модуля

Вот какая получилась схема:



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

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

ДРОН -транслятор носит скромное название D2O т.е. Deuterium Oxide или Тяжёлая Вода по русски:)

ДРОН -транслятор и тестовые схемы на языке ДРОН прилагаются.

13 июля 2008 г. Геннадий Тышов опубликовал более свежую версию редактора , однако тестовые схемы прилагающиеся к существующей на сегодняшний день версии D2O имеют несовместимый формат. Версия редактора представленная здесь на сайте гарантированно позволяет открыть и редактировать прилагающиеся схемы. Вопросы обратной совместиости форматов или открытия нового формата в настоящий момент обсуждаются с автором редактора.

Last edited by PBworks 12 years, 3 months ago

ИЗЮМИНКИ ЯЗЫКА ДРАКОН

КРИТИКА БЛОК-СХЕМ

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

Если до 1980 г. блок-схемы были наиболее широко применяемым средством, то сегодня они “больше не считаются необходимыми и их популярность падает”. Хотя имеются отдельные попытки приспособить блок-схемы к современным нуждам (язык SDL и др.), однако в целом блок-схемы явно оказались на обочине бурно развивающегося процесса визуализации программирования, а их громадные потенциальные возможности фактически не используются. Язык ДРАКОН позволяет устранить или существенно ослабить отмеченные недостатки блок-схем.

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

ПРЕИМУЩЕСТВА ДРАКОН-СХЕМ

Чем же отличаются дракон-схемы от блок-схем? Блок-схемы не обеспечивают автоматическое преобразование алгоритма в машинный код. Дракон-схемы, напротив, пригодны для формализованной записи, автоматического получения кода и исполнения его на компьютере. Однако более важным является второе (когнитивное) отличие. Хотя блок-схемы порою действительно улучшают понимаемость программ, однако это происходит не всегда, причем степень улучшения невелика. Кроме того, есть немало случаев, когда неудачно выполненные блок-схемы запутывают дело и затрудняют понимание. В отличие от них дракон-схемы удовлетворяют критерию сверхвысокой понимаемости.

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

ИКОНЫ И МАКРОИКОНЫ

Графоэлементы (графические буквы) языка ДРАКОН называются иконами (рис. 1). Подобно тому, как буквы объединяются в слова, иконы объединяются в составные иконы - макроиконы (рис. 2).

Соединяя иконы и макроиконы по определенным правилам, можно строить разнообразные алгоритмы, примеры которых показаны на рис. 3, 4, 6, 8-11.

Шампур-блок - часть дракон-схемы, имеющая один вход сверху и один выход снизу, расположенные на одной вертикали. Примерами шампур-блоков являются иконы И3 - И10, И12 - И16, И18, И20, И21 (рис. 1) и макроиконы 2-20 (рис. 2).

ЗАЧЕМ НУЖНА ВЕТКА?

Когда принцесса Анна развелась с маркизом Ле-Шателье, возник спор о разделе имущества. Судья потребовал указать, какие покупки принцесса сделала до замужества, а какие - после.

А теперь забудем об этой семейной драме и сравним между собой рис. 3а и 3б. Легко видеть, что первый не позволяет ответить на вопрос судьи. Что касается второго, то он, наоборот, содержит нужную информацию. Более того, алгоритм на рис. 3б нарочно нарисован так, что покупки, сделанные до и после замужества, четко делятся на два списка. Эти списки зрительно и пространственно разнесены, поэтому деление алгоритма на две части независимо от воли читателя буквально бросается в глаза. Такой прием называется разбиением алгоритма на смысловые части по принципу “взглянул - и сразу стало ясно!” А сами смысловые блоки именуются ветками.

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

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

КАК РАБОТАЕТ ВЕТКА?

Ветка имеет один вход и один или несколько выходов. Входом служит икона “имя ветки”, содержащая идентификатор ветки. Визуальный оператор “имя ветки” не выполняет никаких действий, это всего лишь метка, объявляющая название смысловой части программы. Исполнение дракон-алгоритма всегда начинается с крайней левой ветки (рис. 3, 4).

Выходом из ветки служит икона “адрес”, в которой записывается имя следующей по порядку исполнения ветки. Икона “адрес” - это замаскированный оператор перехода (gоtо), однако он передает управление не куда угодно, а только на начало выбранной ветки. Вход в ветку возможен только через ее начало. Выход из последней ветки осуществляется через икону “конец”.

КАК СЛЕДУЕТ РАСПОЛАГАТЬ ВЕТКИ В ПОЛЕ ЧЕРТЕЖА?

Ветки упорядочены двояко: логически и пространственно. Логическая последовательность исполнения веток определяется метками, записанными в иконах “адрес”. Однако логический порядок - это еще не все. На рис. 5 показаны три разных способа пространственного расположения веток, которые имеют один и тот же логический порядок. Чтобы устранить пространственную неоднозначность и облегчить понимание смысла дракон-схемы, вводится правило “чем правее - тем позже”. Оно означает: ветка, нарисованная правее, работает позже всех веток, находящихся левее.

Алгоритм, нарисованный согласно правилу “чем правее - тем позже”, считается хорошим, эргономичным (рис. 5в). Схемы, где это правило нарушается, объявляются плохими (рис. 5а,б), их использование запрещено.

В разрешенных (эргономичных) алгоритмах имеет место следующий порядок работы (рис. 3, 4, 5в, 6а):

  • первой работает крайняя левая ветка, последней - крайняя правая;
  • остальные ветки передают управление друг другу слева направо (при этом может случиться так, что некоторые ветки будут пропущены);
  • иногда образуется так называемый “веточный цикл”. Это происходит, когда в иконе “адрес” указано имя собственной или одной из левых веток. На рис. 4 и 6а веточный цикл помечен черными треугольниками.

ЧТО ТАКОЕ ШАПКА?

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

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

Шапкой называется верхняя часть дракон-схемы (рис. 4), которая включает заголовок алгоритма и комплект икон “имя ветки”. Назначение шапки - помочь читателю мгновенно (не более чем за несколько секунд) сориентироваться в проблеме и получить мощную подсказку - ответ на три наиболее важных вопроса:

  1. как называется проблема?
  2. из скольких частей она состоит?
  3. как называется каждая часть?

Ведь именно с этих вопросов начинается наше знакомство с любой задачей при рациональном подходе к делу.

Вот ответы для рис. 4.

  • Как называется проблема? Рыбная ловля.
  • Из скольких частей состоит проблема? Из четырех.
  • Как называется каждая часть? 1. Подготовка к ловле. 2. Ожидание клева. 3. Рыбацкая работа. 4. Обратная дорога.

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

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

ЧТО ЛУЧШЕ: ПРИМИТИВ ИЛИ СИЛУЭТ?

Дракон-схема с ветками называется силуэтом , без веток - примитивом. Силуэт, представленный на рис. 6а, можно изобразить в виде примитива (рис. 6б). Примитив есть последовательное соединение иконы “заголовок” шампур-блоков и иконы “конец”. У примитива иконы “заголовок” и “конец” обязательно лежат на одной вертикали, которая называется шампуром. На этой же линии лежат главные вертикали шампур-блоков. Образно говоря, шампур пронизывает иконы примитива (возможно, не все) подобно тому, как настоящий шампур пронизывает кусочки шашлыка.

Примитив рекомендуется использовать, если дракон-схема очень простая (примитивная) и содержит не более 5...15 икон. В противном случае, чтобы улучшить читаемость программы, выгоднее использовать силуэт. Нарушение этого правила обычно чревато неприятностями, ибо мешает читателю выявить сущность решаемой проблемы и, следовательно, затрудняет и замедляет понимание смысла программы.

Например, алгоритм на рис. 6б выглядит громоздким и неоправданно сложным для восприятия. Это вызвано тем, что он содержит 19 икон, однако изображен в виде примитива. Криминал в том, что схема на рис. 6б не позволяет читателю мгновенно (за несколько секунд) распознать визуально-смысловую структуру алгоритма. В самом деле, из скольких частей состоит решаемая проблема? Глядя на рис. 6б, ответить на этот вопрос довольно трудно, а быстро ответить - невозможно. Положение в корне меняется, когда мы смотрим на рис. 6а, где тот же самый алгоритм изображен в виде силуэта. Тут, как говорится, и ежу ясно: алгоритм состоит из четырех частей: “поиск автобуса”, “ожидание посадки”, “посадка в автобус”, “поездка”. Однако это не все: не менее важно и то обстоятельство, что запутанность зрительного рисунка исчезла и схема приобрела новое эстетическое (эргономическое) качество: элегантность, ясность и прозрачность.

Таким образом, в сложных случаях силуэт позволяет существенно уменьшить интеллектуальные усилия, затрачиваемые на понимание алгоритма. В силуэте крупные структурные части программы (ветки) четко выделены, они пространственно разнесены в поле чертежа, образуя вместе с тем легко узнаваемый, стабильный, предсказуемый и целостный зрительный образ. А в примитиве структурные части не выделены и перемешаны (“всё в одной куче”), что затрудняет чтение и анализ сложных алгоритмов. Однако для простых случаев (менее 5...15 икон) примитив, как правило, оказывается более предпочтительным.

КАК ОПИСАТЬ СИЛУЭТ С ПОМОЩЬЮ ТЕКСТОВОГО ЯЗЫКА?

Из рис. 7 видно, что для описания веток в текстовый язык пришлось внести ряд изменений. В частности, появились два новых текстовых оператора, отсутствующие в традиционных языках:

ВЕТКА < идентификатор ветки >

АДРЕС < идентификатор ветки >

Оператор текстового языка ВЕТКА объявляет название ветки (записываемое на визуальном языке внутри иконы “имя ветки”). Оператор АДРЕС безусловно передает управление на текстовый оператор ВЕТКА, имя которой записано справа от оператора АДРЕС.

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

Для этого вводится правило: “главный маршрут примитива должен идти по шампуру”. Меняя местами слова “да” и “нет” в развилках и варианты в переключателях (а также присоединенные к ним гирлянды икон), следует добиться, чтобы на царском пути оказался тот выход развилки или переключателя, который ведет к наибольшему успеху (рис. 8). А побочные маршруты нужно расположить по правилу: “чем правее - тем хуже” (рис. 9). Если эти правила нарушены, дракон-схема считается плохой (рис. 10а). Однако ее всегда можно превратить в хорошую (рис. 10б).

В тех случаях, когда признак “лучше-хуже” не работает, вместо него следует выбрать какой-либо другой разумный критерий, чтобы смещение вправо от главного маршрута всегда было не произвольным и хаотичным, а продуманным и упорядоченным. Например, при решении математических задач выходы развилки и варианты переключателя можно расположить слева направо в порядке увеличения или уменьшения математической величины (характеристики), соответствующей этим выходам (рис. 11, 12).

ГЛАВНЫЙ МАРШРУТ СИЛУЭТА

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

Шампуром ветки называется вертикаль, соединяющая икону “имя ветки” с иконой “адрес”, а если у ветки несколько выходов - с левым из них. Для ветки сохраняют силу оба “царских” правила:

  • главный маршрут ветки должен идти по шампуру;
  • побочные маршруты ветки следует упорядочить слева направо по какому-либо критерию.

Предположим, в качестве критерия выбран принцип “чем правее - тем хуже”. В этом случае каждая ветка силуэта должна быть построена по единому правилу: чем правее (чем дальше от шампура данной ветки) расположена очередная вертикаль, тем менее успешные действия она выполняет.

Например, на рис. 6а ветка “посадка в автобус” имеет три вертикали. Левая вертикаль (главный маршрут) описывает наибольший успех, так как вы будете ехать в автобусе сидя. Правая вертикаль означает наименьший успех, поскольку вы вышли из автобуса и поездка откладывается. Средняя вертикаль (расположенная выше иконы “Есть желание ехать стоя?”) занимает промежуточное положение, потому что - в зависимости от ответа - может иметь место либо частичный успех (вы будете ехать, но не сидя, а стоя), либо неудача, поскольку вы выходите из автобуса несолоно хлебавши.

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

ПЕРЕСЕЧЕНИЯ ЛИНИЙ? - БОЖЕ УПАСИ!

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

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

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

Поскольку запрет пересечений является серьезным топологическим ограничением, возникает вопрос: можно ли произвольный алгоритм изобразить в виде дракон-схемы?

Теорема 1. Любая структурная программа может быть изображена на языке ДРАКОН двумя способами: в виде примитива и в виде силуэта.

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

Чтобы прояснить вопрос, обратимся к примерам. На рис. 13а приведена запрещенная дракон-схема: примитив, в котором имеется неустранимое (без введения дополнительных переменных) пересечение. На рис. 13б изображен силуэт, который, как нетрудно убедиться, эквивалентен примитиву на рис. 13а и вместе с тем не содержит ни одного пересечения. Таким образом, пример на рис. 13 подтверждает справедливость теоремы 2 1 .

ВИЗУАЛЬНЫЙ И ТЕКСТОВЫЙ СИНТАКСИС ДРАКОНА

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

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

СЕМЕЙСТВО ДРАКОН-ЯЗЫКОВ

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

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

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

Кроме того, семейство включает гибридные визуальные языки программирования: ДРАКОН-БЕЙСИК, ДРАКОН-ПАСКАЛЬ, ДРАКОН-СИ и т. д. Чтобы получить гибридный язык, например, ДРАКОН-СИ, необ-ходимо взять визуальный синтаксис ДРАКОНА и присоединить к нему по определенным правилам текстовый синтаксис языка СИ.

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

В настоящей книге основное внимание уделяется визуальному псевдоязыку ДРАКОН-1. Что касается остальных языков ДРАКОН-семейства, даются лишь краткие пояснения.

ВЫВОДЫ

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

  1. Сложный алгоритм следует рисовать в виде силуэта, простой - в виде примитива.
  2. В иконе “заголовок” запрещается писать слово “начало”; вместо этого следует указать понятное и точное название алгоритма.
  3. Разбейте сложный алгоритм на части, каждую часть изобразите в виде ветки. Дайте частям доходчивые и четкие названия и запишите их в иконах “имя ветки”.
  4. Вход в ветку возможен только через ее начало.
  5. В иконе “адрес” разрешается писать имя одной из веток, другие надписи запрещены.
  6. Ветки следует располагать в пространстве согласно правилу: чем правее, тем позже. Наличие веточного цикла модифицирует это правило.
  7. Примитив обязательно имеет шампур. Это значит, что у примитива иконы “заголовок” и “конец” всегда лежат на одной вертикали, которая и называется “шампур”.
  8. Каждая ветка обязательно имеет шампур. У правой ветки шампур - это вертикаль, соединяющая иконы “имя ветки” и “конец”. У остальных веток шампуром служит вертикальная линия, соединяющая иконы “имя ветки” и “адрес”, а если адресов несколько - с левым из них.
  9. Алгоритм всегда имеет главный маршрут, который должен идти по шампуру.
  10. Побочные маршруты должны быть упорядочены слева направо согласно одному из выбранных критериев, например: чем правее - тем хуже.
  11. В иконе “конец” следует писать слово “конец”.
  12. Соединительные линии могут идти либо горизонтально, либо вертикально. Наклонные линии не допускаются.
  13. Пересечения линий запрещены.
  14. Обрывы линий запрещены.
  15. Использование соединителей запрещено.

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


Исторически сложилось, что алгоритмы в программах записываются в виде исходных текстов. Почти никто не ставит под сомнение, что текст - это и есть лучшее средство представления алгоритмов. Алгоритм кодируется внутри функций на языке программирования, например, C или JavaScript. Для тех, кто хочет разобраться в алгоритме с высоты птичьего полёта, предусмотрен псевдокод. Однако с текстом есть серьезные проблемы. Дело в том, что человек не оптимизирован под сплошной текст. Человек оптимизирован на восприятие графики. Текст - это относительно новое изобретение, а вот графическую информацию организмы обрабатывают уже миллионы лет.


Исходя из этого, логично было бы составлять алгоритмы в графическом виде. Посмотрите на инженеров. Они повсеместно используют чертежи. Чем же программисты хуже? Они тоже могли бы составлять чертежи алгоритмов. Некоторые здесь возразят: визуальное программирование якобы неэффективно. UML неудобен, а в блок-схемах легко запутаться. Уж лучше программировать традиционным способом - текстом. В структурном программировании есть хотя бы структура, и она обеспечивает порядок и единообразие. А кроме того, рисовать диаграммы долго и трудно. Печатать быстрее, чем рисовать.


Так что же, программисты обречены всю жизнь работать только с текстом?
Возможно, не всё так плохо. Существуют визуальные языки для представления алгоритмов, в которых тоже есть порядок и структура, например ДРАКОН, BPMN и LML Action Diagrams. Здесь мы рассмотрим визуальный алгоритмический язык ДРАКОН.

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

ДРАКОН не является самостоятельным языком программирования. Он работает в паре с текстовым языком, например, с JavaScript, Python или C++. Вместе с текстовым языком, ДРАКОН образует гибридный язык: ДРАКОН-JavaScript, ДРАКОН-Python или ДРАКОН-C++.


Программирование на гибридном языке происходит следующим образом:

  1. Рисуем ДРАКОН-схему.
  2. Внутрь икон помещаем небольшие кусочки кода на соответствующем языке программирования.
  3. Программа-транслятор преобразует ДРАКОН-схему в текстовый файл с исходным кодом.
  4. Этот текстовый файл включается в проект обычным образом.
    Генерацию кода из диаграмм на сегодняшний день поддерживают несколько редакторов. Примеры в данной статье сделаны в DRAKON Editor.

Генерация кода из диаграммы

В диаграмме ДРАКОН берёт на себя управление потоком выполнения. Поэтому кусочки исходного кода в иконах не должны содержать ключевых слов типа if , else , switch , case , for , while и т. п.


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



Генерация кода происходит следующим образом:

  • Из каждой диаграммы создаётся функция.
  • Название диаграммы становится названием функции.
  • Параметры функции берутся из иконы «Формальные параметры», что расположена справа от названия диаграммы.
  • Тело функции генерируется, исходя из структуры диаграммы и содержимого икон.

На рис. 1 представлен пример небольшой диаграммы на гибридном языке ДРАКОН-JavaScript и сгенерированный код на JavaScript:


Прямоугольник с текстом console.log(cat, dog) на рис. 1 - это икона «Действие». Сколько кода можно поместить в одну икону «Действие»? Следует стремиться к тому, чтобы в одной иконе содержалась одна мысль. Иногда это одна строка кода, иногда несколько.
Сгенерированный код снабжён комментариями, в которых указаны номера икон. Находясь в редакторе, можно быстро перескочить к любой иконе, нажав Ctrl+I.

Рис 1. Диаграмма на ДРАКОН-JavaScript и сгенерированный из неё код.

Икона «Вопрос»

Для ветвления применяются иконы «Вопрос» и «Выбор».


Икона «Вопрос» (рис. 2) соответствует конструкции if-then-else .


Обратите внимание, что вместо слов true и false используются слова Да и Нет (можно переключить на Yes и No ).


«Истина» и «ложь» - это звучит эффектно, по-учёному. Однако человеку ближе знакомые с раннего детства «да» и «нет».


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


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




Рис 2. Икона «Вопрос»

Визуальные логические формулы

Язык ДРАКОН делает ненужными логические операторы И , ИЛИ и НЕ , а также оператор «не равно». Сами логические операции, конечно, необходимы. Но вместо текстовых операторов ДРАКОН вводит визуальные логические формулы.


Чтобы получить визуальную логическую формулу, следует соединить несколько икон «Вопрос» (как на рис. 3).


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


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




Рис 3. Визуальные логические формулы

Цикл со стрелкой

Для обозначения обычного порядка выполнения в языке ДРАКОН стрелки не нужны. Следующая икона всегда находится внизу. Стрелка требуется только тогда, когда поток выполнения должен прыгнуть вверх по диаграмме. Такой прыжок вверх означает цикл. Следовательно, стрелка в языке ДРАКОН есть признак цикла. При беглом взгляде на ДРАКОН-схему стрелки сразу заметны. А значит, сразу видны и циклы. Это серьёзное преимущество ДРАКОНа по сравнению с другими графическими языками. Циклы не приходится выискивать.


Итак, если соединить икону «Вопрос» со стрелкой, получится цикл. Это аналог конструкций while и do-while . На рисунке 4 показаны несколько видов циклов со стрелками.
Икона «Вопрос» в цикле со стрелкой проверяет условие выхода из цикла. Конечно, вместо одной иконы «Вопрос» может быть несколько. Тогда за выход из цикла отвечает визуальная логическая формула.




Рис 4. Стрелочные циклы

Икона «Выбор»

Икона «Вопрос» содержит логическое выражение, то есть может принимать два значения: Да и Нет . Типичный пример - сравнение двух объектов. Если же нужно сравнить некое выражение с несколькими значениями, применяется икона «Выбор» (рис. 5). Это соответствует конструкции witch-case .


Значения, с которыми будет сравниваться выражение в иконе «Выбор», помещаются в иконы «Вариант». Если в самом правом варианте нет текста, это означает «все остальные значения». Такой пустой вариант похож на ключевое слово default внутри оператора switch .
Самый правый вариант может окончиться стрелкой, которая ведёт вверх. В таком случае мы опять имеем дело со стрелочным циклом. В таком цикле за условие выхода будет отвечать икона «Выбор», а не «Вопрос».




Рис 5. Икона «Выбор» и иконы «Вариант»

Икона «Цикл ДЛЯ»

Вместо циклов for и foreach в ДРАКОН-JavaScript применяется икона «Цикл ДЛЯ». Икона «Цикл ДЛЯ» (рис. 6) может быть нескольких видов.


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


Если после ключевого слова foreach стоят две переменные, DRAKON Editor поймёт, что требуется итерация по свойствам объекта (записям хэш-таблицы). Только собственные свойства объектов попадут в перечисление.


Третий вариант цикла подразумевает наличие трёх выражений, разделённых точками с запятой. Это традиционный цикл for , характерный для языков C и Java.


Из цикла под управлением иконы «Цикл ДЛЯ» возможен досрочный выход при помощи иконы «Вопрос» или «Выбор». Такой выход примерно соответствует ключевому слову break .




Рис 6. Различные виды иконы «Цикл ДЛЯ» в ДРАКОН-JavaScript

Только один вход в цикл

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


Несколько выходов из цикла - это допустимо, но вход должен быть только один. На рис. 7 показаны циклы, у которых есть по два выхода. Это разрешено. На рис. 8 представлены примеры запрещённых циклов. Запрещённых потому, что в них можно войти разными путями.
Однако не стоит заучивать наизусть внешний вид этих запрещённых циклов. DRAKON Editor автоматически обнаружит такие циклы и выдаст ошибку.




Рис 7. Разрешённые циклы, у которых по два выхода


Рис 8. Запрещённые циклы, у которых по два входа

Отличия от текстового структурного программирования

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


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



Рис 9. Алгоритм, который трудно изобразить только текстом

Преимущества графического языка

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


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


Во-первых, мысли не размазаны случайным образом по строкам, а заключены внутри квадратиков, или икон. Одна мысль - один квадратик. Разные мысли не склеиваются в одно месиво.


Во-вторых, путь через алгоритм можно проследить пальцем (или взглядом). После if не нужно искать else . Идите по линии и попадёте в нужный квадратик. Не требуется бегать глазами по исходному коду в поисках ответа на вопрос: что же было дальше?


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

Особые эргономические правила

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

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

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


Диаграммы на рис. 10 и 11 демонстрируют эргономические приёмы языка ДРАКОН на реальных примерах.




Рис 10. Эргономические приёмы языка ДРАКОН на примере


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

Чем правее, тем хуже

ДРАКОН имеет средство для изображения happy path , или царской дороги . Царская дорога - это наиболее удачный путь через алгоритм. В некоторых алгоритмах понятия «удачный/неудачный», «хороший/плохой» не применимы. В них царская дорога показывает наиболее ожидаемый путь. Царская дорога проходит по вертикали, расположенной в левой части диаграммы. Эта вертикаль называется шампур. Менее вероятные и менее удачные сценарии, а также обработка ошибок помещаются в правой части диаграммы. Причём чем ситуация хуже, тем правее она должна быть расположена. Хорошим стилем является размещение кода, который бросает исключения или возвращает код ошибки, справа на диаграмме.


Общая судьба

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


Рис. 12 показывает шампур с царской дорогой, а также применение приёма «общая судьба».




Рис 12. Царская дорога и общая судьба

Силуэт

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


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

  1. Как называется проблема?
  2. Из скольких частей она состоит?
  3. Как называются эти части?

Рассмотрим пример на рис. 13. Вот ответы на царские вопросы:

  1. Как называется проблема? Упорядочить связанный список.
  2. Из скольких частей она состоит? Из четырёх.
  3. Как называются эти части? Построить матрицу связей. Проверить наличие циклов. Пройтись по матрице связей. Завершить.


Рис 13. ДРАКОН-схема «силуэт»

Силуэтный цикл

Ветки силуэта следует упорядочивать слева-направо. В некоторых случаях необходимо выполнить какую-то ветку или группу веток несколько раз. Такая конструкция называется силуэтный цикл. Если икона «Адрес» указывает на свою собственную ветку, либо на ветку, которая расположена левее, её следует пометить специальной меткой. Такую же метку нужно поставить на соответствующую икону «Шапка ветки» (см рис. 14). Назначение метки - сделать силуэтный цикл заметным.




Рис 14. Силуэтный цикл и метки

Соединение веток силуэта запрещено

Соединения двух веток силуэта (как на рис. 15) запрещены. Каждая ветка внутри силуэта должна быть самостоятельной.




Рис 15. Соединение веток силуэта запрещено.

Размер диаграмм

Во время программирования на языке ДРАКОН возникает вопрос: какого размера должны быть диаграммы? Ответ такой: чем меньше, тем лучше. Чем меньше объектов на зрительной сцене, тем понятней. В текстовом программировании есть такой ориентир: хорошо, если вся функция целиком помещается на экране. Похожий совет можно дать и для ДРАКОН-схем. Избегайте огромных диаграмм. Когда весь алгоритм виден полностью, его гораздо легче понять.
Для программирования на ДРАКОНе лучше иметь большой монитор. Хотя бы 1080 точек в высоту. Тогда не придётся искусственно укорачивать ДРАКОН-схемы.


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

Критика программирования на ДРАКОНе

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

  • «ДРАКОН-схемы занимают больше места на экране, чем текстовые программы.» Это правда. Но надо иметь в виду, что задача ДРАКОНа - показать сложность, как она есть. Читатель программы не должен распаковывать в голове сложные структуры. Они должны быть показаны ему в явном виде.
  • «Простые алгоритмы лучше смотрятся в текстовом виде». Возможно. Hello world на любом языке смотрится элегантно. Но в реальной жизни не всё просто. Как только появляется хотя бы один if , вложенный в другой if , ДРАКОН выигрывает.
  • «ДРАКОН не имеет средств для отображения исключений (exceptions).» Такая проблема есть. Исключения были недавно добавлены в язык ДРАКОН, но не все реализации их поддерживают. Пока реализации не подоспели, можно писать блоки try/catch на соответствующем языке программирования.
  • «ДРАКОН-схемы долго рисовать.» В специализированных редакторах рисовать ДРАКОН-схемы гораздо легче, чем, например, в Visio. А в некоторых из них рисовать стало почти так же просто, как писать.
  • «Отсутствует инструменты для diff и merge.» Это, к сожалению, так. При работе с системой контроля версий сравнивать приходится сгенерированные исходные файлы.
  • «Отсутствуют средства отладки ДРАКОН-схем.» Это правда. Но можно отлаживать сгенерированный код. В нём есть метки, которые указывают, к какому месту в диаграмме относится данный кусок кода.

Обзор языка дракон

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




Рис 16. Обзор языка ДРАКОН

Инструменты для работы с языком дракон

Самой первой реализацией языка ДРАКОН была система ГРАФИТ-ФЛОКС (рис. 17). ГРАФИТ-ФЛОКС создавалась в 1986-1996 гг. специалистами ФГУП НПЦ АП им. Пилюгина под руководством В.Д. Паронджанова. Эта среда предназначалась для проектирования систем управления ракет-носителей и космических аппаратов.


ГРАФИТ-ФЛОКС - закрытая разработка, поэтому о ней известно относительно немного. Список космических аппаратов, созданных с применением ГРАФИТ-ФЛОКС, можно посмотреть .


В начале 90-х годов был создан ещё один ДРАКОН-редактор. Разработка велась в Институте прикладной математики имени М.В. Келдыша под руководством Л.К. Эйсымонта. Редактор Эйсымонта (рис. 18) можно скачать и запустить, но он более не поддерживается. Редактор написан под MS DOS, поэтому для запуска на современных компьютерах может потребоваться DOSBox.


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


DRAKON Editor - ещё один современный ДРАКОН-редактор (рис. 20). DRAKON Editor был разработан группой энтузиастов под руководством Степана Митькина. DRAKON Editor не поддерживает исчисление икон. Это означает, что ДРАКОН-схемы собираются в нём вручную из примитивов, как в векторных графических редакторах. Но зато интерфейс пользователя в DRAKON Editor максимально прост. Он построен по более привычной схеме, чем ИС Дракон. Основным преимуществом среды DRAKON Editor является удобство программирования и генерации кода. DRAKON Editor поддерживает несколько языков программирования, включая C, C++, C#, Java, Processing, JavaScript, Lua, Erlang, Python, Tcl, Verilog, AutoHotkey, D и Go. Для некоторых языков имеется возможность генерировать конечные автоматы. Поддерживаются правила для экспертной системы nools. Реализовано подмножество языка УТОПИСТ Э. Тыугу. DRAKON Editor имеет открытый исходный код.


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


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




Рис 17. ДРАКОН-схема в системе ГРАФИТ-ФЛОКС


Рис 18. ДРАКОН-редактор Эйсымонта


Рис 19. Программа с пояснениями в ИС Дракон


Рис 20. DRAKON Editor

Выводы

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


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

Добавить метки

Разработчик программы Тышов Геннадий Николаевич
г. Северодвинск, работал в ОАО «СПО «Арктика», www.spoarktika.ru .

Программа «ИС Дракон» предназначена для:
- практической алгоритмизации вашей деятельности,
- формулирования ваших задач,
- формализации ваших знаний.

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

Программа «ИС Дракон» (Интегрированная Среда Дракон) является средой работы с Дракон-алгоритмами.
С помощью «ИС Дракон» внедряется алгоритмическая культура во многие виды деятельности.

Скачать программу «ИС Дракон»

Указания пользователю

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

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

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

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

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

Указания программисту

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

    Пользователь может установить использование командного файла «Dragon.bat » при сборке программного кода в программные файлы на языке программирования. При этом формируется список программных файлов, передается в командный файл и командный файл запускается на выполнение. Это обеспечивает объединение программирования с трансляцией и отладкой.

    Пользователь может установить режим сборки программного кода с заменой отсутствующего в иконах Р-текста на комментарий с текстом «……Нет текста ». Это позволяет блокировать сообщения об ошибке и выполнять трансляцию на ранних этапах разработки алгоритма.

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

    Пользователь может для Дракон-листа формировать текст листинга алгоритма. Текст листинга алгоритма позволит программными средствами сравнивать версии алгоритма, находить места изменений.

    Пользователь может для схемы Силуэт установить свойство Автомат для выполнения автоматного программирования конечных автоматов по технологии SWITCH . Возможность введена по предложению С.Д. Ефанова.

    Рекомендуется, к Дракон-листам с алгоритмами и кодами программ, формировать и Дракон-листы с инструкциями по эксплуатации ПО для пользователей. Инструкции передаются пользователям вместе с ИС Дракон. Такая практика работы в ИС Дракон у А.А. Араптанова в системе 1С.

В программе есть средства настройки на различные языки программирования. Программа позволяет производить сборку Дракон-схем в исходные тексты программ на языках имеющих операторы: комментарий, метка, безусловный переход (GOTO), переход по условию; к примеру языки семейств 1С, Delphi, C. Сборка программного кода икон в файл производится внутренним Маршрутным транслятором.

Заставка программы ИС Дракон


Что такое дракон-лист?


    Дракон-лист отображен в режиме программирования.

    Точки ввода текста (до 4-х квадратов) являются A, B, S, P-текстами.

    Точки A, B предназначены для ввода сопровождающей информации, точка P - для ввода программного кода, точка S - для просмотра собранного программного кода. При наличии текста квадрат становится темным.

    Знаком? отмечены обязательные места ввода текста в иконы.

Редактирование дракон-схемы

Икона 3 выбрана для редактирования.
Знаком «?» в иконах Адрес и Ветка отмечено отсутствие передачи управления. Передача управления визуально отображается штриховой линией.


Особенности

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

Вторая особенность - каждая икона имеет несколько (до 4-х) уровней ввода текста. Один из этих уровней отображается на «теле» иконы, другой может содержит фрагмент программного кода. Оставшиеся уровни (A-текст, B-текст, P-текст, S-текст) могут использоваться произвольно, например, содержать подробные комментарии, ссылки и сопроводительную информацию.

Для отображения бизнес-процессов иконы дополняются наименованием участников бизнес процесса.

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

Описание формата DRT

Методические указания по работе с ИС Дракон

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

Уроки ДРАКОНа

Для освоения приёмов работы с программой ИС Дракон полезно посмотреть видеоролики. Показан процесс от первого запуска редактора до загрузки полученной прошивки в микропроцессор.

Дополнительный сайт программы «ИС Дракон»

Текстовые варианты и файлы Дракон-схем уроков

Черновики Геннадия Тышова

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

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

Программа ИС Дракон разработана на основе визуальных алгоритмических языков Дракон и Гном созданных В.Д. Паронджановым и государственного стандарта ГОСТ 19.701-90 (ISO 5807–85). Идеи и цели языка Дракон получили развитие для практического и широкого применения.

Процедурное знание , алгоритм - описывает порядок действий с объектом, отображено в Дракон-схемах вида Примитив и Силуэт .
Декларативное знание - отвечает на вопрос: «Что это такое?», отображено в Дракон-схеме вида Гном .

Создание и редактирование Дракон-схем выполняется в ИС Дракон.

Дракон-алгоритмы на планшетниках
Некоторые вопрос использования Дракон-алгоритмов созданных в ИС Дракон рассмотрены на форуме в теме "ИС Дракон и Андроид" .

ИС Дракон работает в других операционных системах
В UNIX-подобными ОС работает с программой Wine.
В MacOS работает с программой Parallels Desktop.

Действия к иконам 19 и 21 выполняются участниками бизнес-процесса.
Дракон-лист отображен в режиме программирования.
Точки ввода текста (до 4-х квадратов) являются A,B,S,P-текстами: A,B для ввода сопровождающей информации, P для ввода программного кода, S для просмотра собранного программного кода. При наличии текста квадрат темный.
Лист можно сопроводить колонтитулами: верхний средний, нижний левый, нижний средний, нижний правый.
Знаком »?« отмечены обязательные места ввода текста в иконы, места ввода иконы в блоке икон для обеспечения функциональности блока.

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

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

В 1976 году в СССР в обстановке строжайшей секретности началась разработка многоразового транспортного космического корабля Буран в рамках проекта "Буран-Энергия". Это был грандиозный проект. В его создании принимали участие 86 министерств и ведомств и 1286 предприятий СССР (всего около 2,5 миллиона человек).

Свой первый и единственный космический полёт "Буран" совершил 15 ноября 1988 года. Орбитальный корабль был запущен c космодрома Байконур при помощи ракеты-носителя "Энергия". После облёта Земли Буран произвёл посадку на специально оборудованном аэродроме "Юбилейный" на Байконуре. Полёт прошёл без экипажа, полностью в автоматическом режиме. В отличие от американского Шаттла, который может совершать посадку только на ручном управлении. В связи с распадом СССР и трудностями переходного периода в 1990 году работы по программе "Энергия—Буран" были приостановлены, а в 1993 программа окончательно закрыта.

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

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

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

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

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

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

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

Язык ДРАКОН родился в космической колыбели

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

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

1. Улучшить работу человеческого ума.
2. Предложить эффективные средства для описания структуры человеческой деятельности.
3. Предоставить человеку такие языковые средства, которые резко упрощают восприятие сложных процедурных проблем и общение с коллегами, делают непонятное понятным и за счет этого буквально заставляют человека мыслить отчетливо, глубоко и продуктивно. В этих условиях вероятность заблуждений, просчетов и ошибок неизбежно падает, а производительность растет.
4. Радикально облегчить межотраслевое и междисциплинарное общение между представителями разных организаций, ведомств, отделов, лабораторий, научных школ и профессий.
5. Устранить или уменьшить барьеры взаимного непонимания между работниками различных специальностей (врачами и физиками, математиками и конструкторами, биологами и экономистами и т. д.), а также программистами и теми, у кого аллергия к любому программированию.
6. Добиться кардинального улучшения качества программного обеспечения по критерию "понимаемость алгоритмов и программ".

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

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

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

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

Этот пуск был боевым крещением языка ДРАКОН и технологии создания программ "Графит-Флокс". Он убедительно продемонстрировал их эффективность и надежность. С тех пор по программе Морской старт проведено 29 ракетных пусков. Последний пуск состоялся 24 сентября 2008.
 Язык ДРАКОН успешно используется и во многих других космических программах:

  • разгонный блок космических аппаратов "Фрегат";
  • модернизированная ракета-носитель "Протон-М";
  • доразгонный модуль космических аппаратов ДМ-SL-Б (проект "Старт в пустыне", или "Наземный старт") и др.

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

Программирование без программистов

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

Это позволяет значительно сократить издержки, улучшить показатель "затраты - результат", ускорить ход работ. И полностью избавиться от ошибок "испорченного телефона", вызванных взаимным непониманием между программистами и инженерами.

Секреты космических разработок - народному хозяйству

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

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

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

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

Дракон в системе образования

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

В настоящее время ведется подготовка учебных книг для средней и высшей школы. Уже издана первая из них - игровое учебное пособие для детей среднего школьного возраста.