Визуальный язык дракон. Язык "Дракон"

История создания языка "ДРАКОН"

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

Графический язык ДРАКОН специально сконструирован, чтобы превратить сложный алгоритм в простую картинку(дракон-схему), обеспечивающую быстрое и легкое понимание по принципу «Взглянул - и сразу понял»! Часть 1. ДРАКОН родился в космической колыбели
Часть 2. Язык ДРАКОН открывает калитку в царство понятных алгоритмов
Часть 3. Путь к мудрости. Язык ДРАКОН и фундаментальные проблемы цивилизации

Часть 1. Язык «ДРАКОН» родился в космической колыбели, но очень скоро вырос из «коротких космических штанишек»


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

Николай Пилюгин и его детище.

Истоки «дракона»

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

Академик Николай Пилюгин (1908-1982) - основоположник автономных (полностью автоматических) систем управления ракетно-космических систем. Будучи одним из пионеров космонавтики, он создал первый в нашей стране институт, в котором разрабатывались автономные системы управления для ракет-носителей, разгонных блоков и других космических объектов.

В один из юбилеев шефа прозвучали посвященные ему строки:

Ракета - она как слепая коза!

Чтоб был в ней и смысл, и лоск,

Ракете нужно иметь глаза

И самое главное - мозг!

И вы среди вечных забот и шума,

Как первенца учит мать,

Учили ракеты смотреть и думать,

А это значит - летать!

Запуск первого спутника в 1957 году потряс весь мир и застал американцев врасплох. Полет Юрия Гагарина в 1961 году стал триумфом советской науки. Воплотились в жизнь и стали явью фантастические проекты национального героя СССР - легендарного конструктора Сергея Королева. Интеллектуальную поддержку его дерзких проектов обеспечивала «нервная система» ракеты - бортовая система управления, созданная Николаем Пилюгиным.

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

Вскоре обнаружилось неожиданное препятствие - в дело вмешался человеческий фактор.Чем больше усложнялись космические системы, тем сильнее была нужда в безупречном взаимопонимании между разработчиками. Отсутствие взаимопонимания болезненно сказывалось на ходе крупных ракетных проектов. Особенно остро проблема взаимопонимания проявила себя при создании космического комплекса «Энергия–Буран».

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

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

Что такое интеллектуальное

взаимопонимание?

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

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

Логично спросить: в чем причина неприятностей? Не слишком ли большие ресурсы (людские, материальные, финансовые и временные) приходится затрачивать для обеспечения эффективного взаимодействия специалистов, участвующих в совместной работе? Почему крупные исследования и разработки нередко затягиваются на месяцы, а то и на годы?

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

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

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


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

С чего началась история «дракона»?

В 1982 году Юрий Трунов, руководитель комплексного отделения Пилюгинского центра (сегодня - Генеральный конструктор) был назначен ответственным за комплексную разработку системы управления Бурана. Трунов отчетливо понимал: без эффективных алгоритмических языков высокого уровня разработка Бурана невозможна.

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

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

Гуманитарные требования к языку «Дракон»

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

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

1. Улучшить работу человеческого ума.

2. Предложить эффективные средства для описания структуры человеческой деятельности.

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

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

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

6. Добиться кардинального улучшения качества программного обеспечения по критерию «понимаемость алгоритмов и программ».

`` Слайд 4. Многие программисты жалуются, что свою собственную программу они с трудом понимают через полгода, а то и через месяц. А если речь идет о чужой программе? Тогда становится совсем тяжко. Нередко бывает легче написать свою программу, нежели разобраться в том, что делает чужая. Поэтому среди требований, предъявляемых к современным алгоритмическим языкам, на первое место все чаще выходит удобопонимаемость программ (comprehensibility) . Последняя определяется как свойство программы минимизировать интеллектуальные усилия, необходимые для ее понимания. Язык ДРАКОН призван обеспечить максимально возможную понимаемость алгоритмов и программ. По мнению разработчиков, он может стать «чемпионом мира» среди алгоритмических языков по этому критерию. ’’

Научные основы языка «Дракон»

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

Однако главное не в этом. Любой язык имеет ту или иную математическую изюминку. Математическая строгость - это обязательное требование для проектировщиков языка. Так что математикой нынче никого не удивишь.

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

Для создания хорошего языка одной математики мало;

Надо добавить к ней идеи когнитивной эргономики;

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

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

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

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

Кто разработал системное программное обеспечение «дракона»?

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

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

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

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

Раскол в стане разработчиков «дракона»

Между тем напряжение нарастало. Идейные разногласия достигли небывалой остроты и привели к расколу. Группу «диссидентов» возглавили Геннадий Гуленков (Пилюгинский центр) и Леонид Эйсымонт (Институт прикладной математики). Вместе с ними работали начальник сектора Владимир Гора, Людмила Власова, Сергей Щербаков, Лариса Тюрина, Александр Копылов, Виктор Миронов, Александр Русанов, Сергей Шмаков и другие.

В чем суть разногласий? Группа Федорова–Балтрушайтиса защищала упрощенный вариант языка ДРАКОН (который получил название Графит).

«Диссидентская» группа Гуленкова–Эйсымонта (поддержанная одним из руководителей Пилюгинского центра Владимиром Морозовым) отстаивала полноразмерный проект ДРАКОНА. Этот вариант, несомненно, был более перспективным.

Развал СССР подрезал дракону крылья

К сожалению, «диссидентов» постигла катастрофа. Именно в этот момент рухнула одна из величайших держав мира (СССР). Экономика новой России лежала в руинах. После первого блестящего полета Бурана события приняли неожиданный оборот. Накануне полной готовности ко второму полету сверху пришел трагический приказ: «Полет отменить!». Из-за нехватки денег все работы по проекту «Буран-Энергия» были сначала законсервированы, а затем и вовсе прекращены. Навсегда. Навечно.

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

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

`` Слайд 8. Прекращение работ по Бурану больно ударило
по разработчикам ДРАКОНА. Ситуация стала критической. ’’

Дракон восстал из пепла, как птица феникс

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

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

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

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





Боевое крещение дракона

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

Впервые автоматическая дракон-технология была опробована при разработке программного обеспечения автономных и комплексных испытаний международного космического проекта «Морской старт» (Sea Launch).

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

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

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

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

В ЧЕМ изюминка ДРАКОНА?

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

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

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

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

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

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

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

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

`` Слайд 14. Фигуру человека мы воспринимаем симультанно, т.е. одномоментно, целиком и очень быстро. В нашем мозгу есть нейронные механизмы, обеспечивающие такое восприятие. Эти же механизмы используются при восприятии дракон-схем. ’’

`` Слайд 15. Дракон-схема отчасти похожа на фигуру человека. У нее тоже сверху - шапка, а снизу - «ботинки». Разница лишь в том, что «ботинки» имеют другое название - «адреса» ’’

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

Как называется задача? (Читаем заголовок алгоритма). Первая помощь при химическом ожоге глаза жидкостью.

Из скольких частей она состоит? (Считаем иконы «Имя ветки»). Из трех.

Как называется каждая часть? (Читаем текст в иконах «Имя ветки»). 1. Промывание глаза водой. 2. Промывание глаза нейтрализатором. 3. Лекарственная обработка.

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

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

Дракон полностью изменил взаимодействие Разработчиков-комплексников и программистов

Раньше работа была организована так. Комплексник выдавал в отдел программирования бумажный документ - исходные данные на разработку программ и согласовывал его с программистом. Затем программист на основании этого документа разрабатывал программу.

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

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

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

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

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

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

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

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

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

От «паскаля» к «дракону»

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

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

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

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

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

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

Ведется подготовка учебных книг для средней и высшей школы. Уже издана первая из них - игровое учебное пособие для детей младшего и среднего школьного возраста: см. « В.Д. Паронджанов. Занимательная информатика: Волшебный Дракон в гостях у Мурзика. - М.: Росмэн, 1998, 2000. 160с. 200 иллюстраций».

`` Слайд 18. В языке ДРАКОН используются два очень удобных, но необычных понятия. Шампур - вертикальная линия, соединяющая начало и конец алгоритма (или ветки). Главный маршрут - путь от начала до конца алгоритма, ведущий к наибольшему успеху. ’’

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

`` Слайд 19. С логической точки зрения оба алгоритма эквивалентны. Но с эргономической точки зрения левая схема лучше, так как главный маршрут не имеет изломов. ’’

`` Слайд 20. Дракон-схема упорядочена слева направо
согласно принципу: «Чем правее, тем хуже». ’’

Слайд 21. Графическая математическая формула, обосновывающая операцию «Рокировка». Она служит математическим обоснованием для двух изложенных выше правил: ’’

Главный маршрут должен идти по шампуру (см. слайд 19, слева).

Побочные маршруты рисуют справа от главного по принципу: «Чем правее, тем хуже» (см. слайд 20).

Часть 2

Язык « ДРАКОН» ОТКРЫВАЕТ КАЛИТКУ в ЦАРСТВО ПОНЯТНЫХ АЛГОРИТМОВ

критерий сверхвысокого понимания

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

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

эргономичные алгоритмы

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

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

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

Эпоха понятных алгоритмов

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

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

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

`` Слайд 23. Две равносильные логические формулы. Слева - традиционная текстовая формула (схема «ИЛИ»), понятная узкому кругу математиков и программистов. ’’

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

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

`` Слайд 24. Две равносильные логические формулы. Слева - традиционная формула (схема «И»), понятная далеко не всем. ’

Формула справа (графическая схема «И»), написанная на языке ДРАКОН, намного легче для понимания. Она становится еще более наглядной, если заменить абстрактные буквы A , B , C , F на конкретные производственные понятия. Например:

А = норма подачи топлива С = норма электропитания;

В = норма зажигания F = включить двигатель.

Часть 3

Путь к мудрости

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

что нас ждет в будущем?

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

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

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

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

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

Нужно создать новые, более эффективные интеллектуальные средства и инструменты, способные сделать коллективный разум человечества более мощным и эффективным.

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

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

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

Что важнее: компьютер или человеческий мозг?

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

Однако почивать на лаврах рано. Стало ясно, что этого совершенно недостаточно. Почему?

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

важнейшая характеристика цивилизации?

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

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

На пороге новой интеллектуальной революции

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

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

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

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

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

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

Интеллектуальная история человечества и суперязыки

Интеллектуальная история человечества неразрывно связана с совершенствованием языка. В истории языка можно выделить четыре частично перекрывающиеся этапа:

Звуковые (устные) языки дописьменной эпохи;

Письменные языки (клинопись, иероглифы, алфавитное письмо);

Искусственные языки (чертежи, графики, химические и математические формулы, логико-математические исчисления, языки программирования);

Эргономичные суперязыки.

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

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

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

Вспомним слова Николая Лобачевского:

«Чему одолжены своими блестящими успехами науки - слава нынешних времен, торжество ума человеческого? Без сомнения, искусственному языку своему!».

Мы подошли к самому интересному месту. В наши дни прирост интеллектуального могущества человечества во многом осуществляется за счет создания и использования самых разнообразных искусственных языков. Однако на этом пути возникает неожиданная трудность. Она заключается в эргономическом несовершенстве существующих языков. Они слишком трудны. Трудны для человеческого восприятия. Нынешние языки доступны лишь немногим избранным и непригодны для массового использования. Это обстоятельство серьезно сдерживает дальнейший рост интеллектуальных возможностей людей.

Фундаментальный недостаток языков программирования

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

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

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

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

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

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

дракон - первый в истории суперязык

(и не последний)

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

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

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

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

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

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

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

Заглядывая в будущее, можно, вероятно, предположить, что с появлением суперязыков перед человечеством открывается новый путь познания - путь, ведущий к подлинной мудрости.
(тщательно стыбрено с сайта transhumanism-russia.ru)

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

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

Язык ДРАКОН разработан совместными усилиями Российского космического агентства (НПЦ автоматики и приборостроения, г. Москва) и Российской академии наук (Институт прикладной математики им. М.В. Келдыша, г. Москва) как обобщение опыта работ по созданию космического корабля "Буран". На базе ДРАКОН а построена автоматизированная технология проектирования программных систем (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 имеют несовместимый формат. Версия редактора представленная здесь на сайте гарантированно позволяет открыть и редактировать прилагающиеся схемы. Вопросы обратной совместиости форматов или открытия нового формата в настоящий момент обсуждаются с автором редактора.

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


Исторически сложилось, что алгоритмы в программах записываются в виде исходных текстов. Почти никто не ставит под сомнение, что текст - это и есть лучшее средство представления алгоритмов. Алгоритм кодируется внутри функций на языке программирования, например, 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

Выводы

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


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

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

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


Исторически сложилось, что алгоритмы в программах записываются в виде исходных текстов. Почти никто не ставит под сомнение, что текст - это и есть лучшее средство представления алгоритмов. Алгоритм кодируется внутри функций на языке программирования, например, 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 для просмотра собранного программного кода. При наличии текста квадрат темный.
Лист можно сопроводить колонтитулами: верхний средний, нижний левый, нижний средний, нижний правый.
Знаком »?« отмечены обязательные места ввода текста в иконы, места ввода иконы в блоке икон для обеспечения функциональности блока.