Класс языка: |
мультипарадигмальный: визуальный |
---|---|
Тип исполнения: |
задаётся вторым языком, входящим в состав выбранного гибридного языка |
Появился в: | |
Расширение файлов: |
.drt, .drn |
Система типов: |
задаётся вторым языком, входящим в состав выбранного гибридного языка |
Основные реализации: |
ГРАФИТ-ФЛОКС (1996 год)[1], «ИС Дракон»[2] (2008 год), ДРАКОН-редактор[3] (2011 год) |
Испытал влияние: |
ПРОЛ2[4], ДИПОЛЬ[4], ЛАКС[4], SDL[источник?], R-язык[источник?] |
Сайт: |
drakon.su |
Дружелюбный русский алгоритмический язык, который обеспечивает наглядность (сокр. ДРАКОН) — визуальный алгоритмический язык программирования и моделирования[5]. Был разработан в рамках космической программы «Буран». Разработка языка велась с 1986 года при участии Федерального космического агентства (Научно-производственный центр автоматики и приборостроения им. акад. Н. А. Пилюгина, Москва) и Российской академии наук (Институт прикладной математики им. М. В. Келдыша)[5]. Язык построен путём формализации, эргономизации и неклассической структуризации блок-схем алгоритмов, описанных в ГОСТ 19.701-90 и ISO 5807-85, а также для разработки программ реального времени[6][4].
Основной задачей разработчиков было создание единого универсального языка программирования и моделирования, который своей доступностью и мощностью способен заменить специализированные языки: ПРОЛ2[7] (для разработки бортовых комплексных программ Бурана), ДИПОЛЬ[7] (для создания наземных программ Бурана) и ЛАКС[8] (для моделирования).
Работы по разработке языка были закончены в 1996 году (спустя 3 года после закрытия программы «Буран»), когда была создана автоматизированная система проектирования программных систем (CASE-технология) ГРАФИТ-ФЛОКС[9]. Эта технология эксплуатируется начиная с 1996 года в некоторых крупных космических программах: международный проект «Морской старт», разгонный блок космических аппаратов «Фрегат», модернизированная ракета-носитель тяжёлого класса «Протон-М» и др.[10].
|
ДРАКОН можно определить как общедоступный визуальный язык, предназначенный для описания структуры человеческой деятельности, для систематизации, структуризации, наглядного представления и формализации императивных знаний, а также для проектирования, программирования, моделирования и обучения[6][12].
Правила языка ДРАКОН по созданию диаграмм разрабатывались с учётом требований эргономики, то есть изначально оптимизированы для восприятия алгоритмов человеком. Таким образом, язык предлагается «в качестве инструмента усиления интеллекта человека»[13][14][12][15][16].
На втором этапе разработки была предложена концепция гибридных языков программирования. В рамках этой концепции созданы инструментальные средства языка ДРАКОН для гражданских нужд широкого применения в несекретном варианте для эксплуатации на персональных компьютерах: интегрированная среда разработки алгоритмов и программ под названием «ИС Дракон»[2] и ДРАКОН-редактор[3].
В результате ДРАКОН превратился в семейство языков моделирования и программирования. Программа ИС Дракон поддерживает работу с гибридными языками программирования Дракон-С, Дракон-Delphi, Дракон-1С, Дракон-ASM. ДРАКОН-редактор обеспечивает работу с гибридными языками Дракон-Java, Дракон-C#, Дракон-C, Дракон-Python, Дракон-Tcl, Дракон-Javascript, Дракон-Lua, Дракон-Erlang, Дракон-Verilog.
Аналогом семейства языков ДРАКОН является «R-технология производства программ, или технология двумерного программирования»[18], созданная в Институте кибернетики имени В. М. Глушкова[19], причем графика дракон-схем в ДРАКОН-семействе служит аналогом графики Р-схем[20] в R-технологии. В технологическом комплексе программиста RТК[21] принцип обработки информации в компьютере подразумевает деление на R-машину[22], R-язык[23] и R-технологию[24]. ДРАКОН использует тот же принцип, выраженный с помощью другого понятийного аппарата.
Аналогом дракон-схем (как алгоритмического языка моделирования) являются диаграммы поведения языка UML, в частности, диаграмма деятельности (activity diagram)[25], диаграмма состояний (UML state machine)[26] и некоторые диаграммы взаимодействия, например, диаграмма синхронизации (timing diagram )[27]. Другими аналогами дракон-схем являются блок-схема, диаграмма Насси-Шнейдермана, псевдокод (язык описания алгоритмов) и др. В отличие от блок-схем, дракон-схемы имеют средства для описания работы в реальном времени[27].
В отличие от естественного языка, искусственные языки (языки программирования, формальные языки, компьютерные языки, языки разметки и др.) не являются продуктом стихийного развития. Они конструируются целенаправленно и служат для решения познавательных, научных, производственных, коммерческих и иных задач[28]. Тексты на искусственных языках «создаются как принципиально письменные тексты, рассчитанные только на зрительное восприятие»[29]. Лингвисты считают, что язык и мышление образуют единство, так как без мышления не может быть языка и мышление без языка невозможно[30]. Психологи считают языки основным проявлением когнитивных процессов. Языки больше чем все другие виды человеческого поведения отражают мышление, восприятие, память, интеллект, решение задач и научение. Ввиду их важности для основных психологических принципов языки представляют главный интерес для специалистов по искусственному интеллекту[31].
Важнейшим качеством искусственного языка должна быть понятность — тексты, написанные на этом языке, должны быть удобны для человеческого восприятия и понимания[32]. Кеннет Айверсон полагает, что нотация языка есть средство мышления[33]. Математик и философ Альфред Норт Уайтхед отмечает: «Освобождая мозг от всей необязательной работы, хорошая нотация позволяет ему сосредоточиться на более сложных проблемах и в результате увеличивает умственную мощь цивилизации»[34]. По мнению доктора психологических наук Валерия Венды, автора концепции гибридного интеллекта, задача «состоит в выборе и рационализации языков взаимодействия человека и компьютера. Это очень трудная проблема»[35]. Он полагает, что «необходимо выработать и внедрить принципиально новые формы интеллектуальной деятельности в проектировании, управлении, науке, технике»[36].
Последние исследования в области нейробиологии, психологии, когнитивной науки и эргономики позволили получить новые и чрезвычайно ценные сведения о работе мозга, которые можно и нужно использовать при разработке нового поколения языков с целью повышения продуктивности человеческого мозга. В настоящее время отсутствует продуманная стратегия, направленная на устранение междисциплинарных барьеров, преследующая цель предоставить разработчикам искусственных языков нового поколения глубокие знания в области наук о человеке, человеческом факторе и человеческом интеллекте. Предпринимаются попытки устранить этот недостаток[37][K 1]. Концепция искусственных языков нового поколения опирается на междисциплинарный подход и коренным образом изменяет традиционные представления о назначении искусственных языков и наборе приоритетных требований к ним. В основе лежат гуманитарные вопросы и требования[K 2], которые должны быть соответствующим образом детализированы[37].
Основная цель создания языка ДРАКОН — обеспечить качественный скачок в повышении продуктивности сложного интеллектуального труда за счёт увеличения интеллектуальной производительности человеческого мозга, выявления и более полного использования резервов человеческого интеллекта, создания когнитивных предпосылок для существенного повышения эффективности информационных технологий, а также улучшения взаимопонимания между людьми[12][39]. По мнению доктора социологических наук, профессора Нины Павловой, язык ДРАКОН мог бы сыграть роль межотраслевого и междисциплинарного языка, содействующего решению важной проблемы — проблемы взаимопонимания между учеными и специалистами[40]. Схемы и алгоритмы, разработанные с помощью этого языка, просты и понятны любому человеку, далекому от программирования[41]. По мнению доктора технических наук О. Г. Григорьева, доктора технических наук Г. Д. Волковой и других специалистов,
Основными достоинствами языка ДРАКОН являются: универсальность языка, пригодность для решения широкого круга разноплановых интеллектуальных задач; сочетание строгой логико-математической формализации с точным учетом когнитивных (познавательных) характеристик человека; пригодность дракон-схем для автоматического получения программного кода; наглядность и регулярность структуры представления описываемых процессов; простота в освоении и применении; легкость понимания представления решения. К недостаткам языка относятся: малая известность языка среди разработчиков автоматизированных систем; сложность интеграции схем и т. д.[42].
Важной проблемой является сложность программирования и поиск путей её преодоления. По мнению кандидата технических наук, доцента Евгения Пышкина, изучение структурного программирования исключительно как инструмента разработки текстов программ, построенных на базе основной «структурной триады» (линейная последовательность, ветвление и цикл), является недостаточным и, по сути дела, сводит на нет анализ преимуществ структурного подхода[43]. В процессе преодоления существенной сложности программного обеспечения важнейшим инструментом является визуализация проектирования и программирования[43]. Визуализация как инструмент преодоления сложности лежит в основе языка ДРАКОН.
По мнению некоторых специалистов, основными критериями качества программы являются понимаемость, сопровождаемость и надёжность (корректность). Эти критерии не вступают в конфликт, поскольку характеризуют непротиворечивые свойства программы[44]. Понимаемость (англ. understandability) — свойство программы минимизировать интеллектуальные усилия, необходимые для её понимания человеком[45][K 3]. Эффективным средством для улучшения понимаемости алгоритмов является визуализация программирования[47][48][49].
Главным требованием к визуальному языку ДРАКОН считается улучшение понимаемости графического представления алгоритмов (дракон-схем) для человеческого зрительного восприятия. Все остальные требования считаются менее важными (хотя и не теряют своей значимости). Чтобы подчеркнуть это обстоятельство, говорят, что дракон-схемы удовлетворяют «критерию сверхвысокой понимаемости»[47][50][5], или «критерию высокого понимания»[12].
Некоторые учёные считают, что существующие способы записи алгоритмов и программ слишком трудны для понимания и требуют неоправданно больших трудозатрат. Это обстоятельство ставит непреодолимый барьер для непрограммистов, то есть специалистов, работа которых связана с алгоритмами, но которые не имеют резерва времени, чтобы научиться выражать свои профессиональные знания в форме алгоритмов и программ[51][52]. Язык ДРАКОН использует новую эргономичную нотацию (дракон-схемы)[53] и за счет этого существенно облегчает алгоритмизацию и программирование. По мнению специалистов, благодаря использованию дракон-схем алгоритмы и программы становятся более понятными, доходчивыми, ясными, прозрачными[54][12][55].
В итоге трудные для понимания способы записи алгоритмов и программ заменяются на более лёгкие. Вследствие этого работники быстро овладевают дракон-схемами и успешно создают алгоритмы и прикладные программы без программистов или с их минимальным участием[56]. Об этом свидетельствует 15-летний опыт эксплуатации Технологии ГРАФИТ-ФЛОКС[9] в Научно-производственном центре автоматики и приборостроения им. академика Н. А. Пилюгина.
ДРАКОН — легкий язык. Настолько легкий, что разработку многих компьютерных программ для космических ракет на практике ведут не программисты, а инженеры — по принципу «программирование без программистов»[57][K 4]. Причина частичного отказа от программистов проста. При решении практических прикладных задач инженеры досконально владеют материалом и прекрасно знают постановку задачи. В отличие от них программисты не знают физику процесса и становятся «лишними людьми», без которых в ряде случаев (хотя и не всегда) вполне можно обойтись[59][K 5].
Язык ДРАКОН выполняет две принципиально разные функции. Для большинства работников (непрограммистов) он является средством повышения эффективности интеллектуального труда при описании процессов и разработке алгоритмов с помощью дракон-схем, заполненных текстом на профессиональном языке специалистов-непрограммистов. В этом качестве ДРАКОН не имеет отношения к программированию.
Вторая функция состоит в том, что для программистов ДРАКОН служит языком программирования.
Таким образом, ДРАКОН обращен к двум совершенно разным аудиториям, чтобы выявить и учесть потребности каждой аудитории и по возможности удовлетворить их наилучшим образом. В этом состоит одно из ключевых преимуществ, поскольку ДРАКОН можно использовать как язык взаимопонимания между непрограммистами и программистами, между не программирующим большинством специалистов и программирующим меньшинством[12][55].
Система управления орбитального корабля «Буран» управляет полетом Бурана и всеми бортовыми системами корабля[60][61][62]. Система управления создана в Научно-производственном центре автоматики и приборостроения имени академика Н. А. Пилюгина (далее — Пилюгинский центр). Головным мозгом Бурана служит Бортовой вычислительный комплекс[63]. Основным разработчиком бортового и наземного программного обеспечения системы управления Бурана является Пилюгинский центр[64].
При создании программ для сложных космических объектов возникают проблемы, требующие создания языков программирования высокого уровня, предназначенных для решения задач реального времени для систем управления ракетно-космической техники[65]. Именно такие проблемы инициировали появление языка ДРАКОН. При разработке Бурана проблема разработки и отработки программного обеспечения считалась одной из наиболее сложных[10]. Первоначально предполагалось, что для решения задачи потребуется несколько тысяч программистов[10]. Следует учесть, что программисты Пилюгинского центра привыкли писать программы преимущественно на ассемблере, чтобы экономить объём требуемой памяти, так как объём памяти бортового компьютера «Бисер-4»[66] был очень ограниченным[10].
В материалах Института прикладной математики им. М. В. Келдыша РАН о событиях того периода говорится:
В 1983 году разработчики космического корабля Буран обратились в Институт прикладной математики с просьбой помочь в разработке бортового программного обеспечения и программного обеспечения наземных испытаний корабля. По их оценкам, для этой работы требовалось несколько тысяч программистов. После изучения задачи было решено разработать проблемно-ориентированные языки, основанные на терминах, понятиях и форме представления алгоритмов управления и испытаний, используемых разработчиками корабля…
Разработка языков и соответствующих инструментальных средств была выполнена небольшим коллективом высококвалифицированных программистов Института прикладной математики РАН в чрезвычайно сжатые сроки. Для разработки бортового программного обеспечения был создан специализированный язык реального времени ПРОЛ2 и базирующаяся на нём система автоматизации программирования и отладки САПО ПРОЛ2… Для разработки программного обеспечения наземных испытаний корабля был создан проблемно-ориентированный язык ДИПОЛЬ и базирующаяся на нём система автоматизации программирования и отладки[67].
Таким образом, чтобы решить проблему нехватки программистов при создании Бурана и повысить производительность и качество труда при разработке алгоритмов и программ, Институт прикладной математики РАН по просьбе Пилюгинского центра создал два русскоязычных языка:
Кроме того, в Пилюгинском центре под руководством Константина Федорова был создан язык ЛАКС для моделирования. Таким образом, появились три новых языка, которые были непосредственными предшественниками ДРАКОНА. Опыт их эксплуатации был тщательно изучен и использован при создании языка ДРАКОН.
Хотя языки ПРОЛ2, ДИПОЛЬ и ЛАКС успешно решали поставленные задачи, стало ясно, что узкая специализация языков мешает делу. Эту мысль в 1986 году высказал начальник комплексного отделения Юрий Трунов (впоследствии Генеральный конструктор Пилюгинского центра)[71]. Трунов предложил создать универсальный язык, способный заменить три вышеназванных. Было решено, что новый язык должен не только удовлетворять практическим нуждам космической техники, но и решать широкий круг задач, выходящих далеко за рамки традиционного программирования[72].
В связи с этим при создании языка ДРАКОН были выдвинуты необычные для программистов и математиков гуманитарные требования[38]:
Разработка языка ДРАКОН и системы программирования началась в 1986 году. Через 10 лет на базе ДРАКОНа была построена автоматизированная Технология разработки алгоритмов и программ (CASE-технология) под названием «ГРАФИТ-ФЛОКС»[9][10].
Затем язык ДРАКОН и система ГРАФИТ-ФЛОКС поступили в эксплуатацию. С их помощью были разработаны многие алгоритмы и программы разгонного блока космических аппаратов ДМ-SL Международного проекта «Морской старт». В общей сложности на разработку и отработку программного обеспечения и других элементов системы управления ушло три года. К 1999 году все работы были закончены. Система была готова к старту.
Первый пуск ракетного комплекса «Морской старт» состоялся 28 марта 1999 года. Он произошёл в 5 часов 30 минут по московскому времени (27 марта 1999 г. в 18 часов 30 минут по тихоокеанскому времени) со стартовой платформы «Одиссей» в Тихом океане в районе островов Кирибати[74]. Этот пуск был ответственным испытанием языка ДРАКОН и технологии «ГРАФИТ-ФЛОКС». Он продемонстрировал их эффективность и надежность. С тех пор по программе «Морской старт» проведено свыше 30 ракетных пусков[75].
Язык ДРАКОН используется и в других космических программах, например: разгонный блок космических аппаратов «Фрегат»[1]; модернизированная ракета-носитель тяжелого класса «Протон-М»; разгонный блок космических аппаратов ДМ-SLБ[76] (проект «Наземный старт»); разгонный блок космических аппаратов ДМ-03; первая ступень южнокорейской ракеты-носителя легкого класса KSLV-1 (Korean Space Launch Vehicle #1); ракета-носитель легкого класса Ангара 1.2; ракета-носитель тяжелого класса Ангара-А5 и др.[77][K 6]
Поскольку результаты использования ДРАКОНа были стабильно высокими, руководство Пилюгинского центра приняло решение об использовании ДРАКОН-технологии во всех последующих проектах[10][78].
Распространение языка ДРАКОН можно разделить на два этапа. На начальном этапе информация о ДРАКОНе была недоступна для пользователей, так как работы по ракетно-космическим программам и, в частности, по космической программе Буран были строго засекречены как составляющие государственную тайну[K 9][K 10]. В тот период область применения ДРАКОНа была ограничена ракетно-космической техникой. Язык применялся и применяется в Пилюгинском центре при разработке программ для бортового компьютера «Бисер»[66], установленного на борту ракет-носителей и разгонных блоков космических аппаратов.
На втором этапе, в результате политики гласности, свободы слова, снятия неоправданных ограничений на распространение информации и рассекречивания ранее закрытых сведений и проектов появилась возможность приспособить инструментальные средства языка ДРАКОН для гражданских нужд широкого применения, то есть создать их в несекретном варианте для эксплуатации на персональных компьютерах и др. Сфера применения языка стала постепенно расширяться. Началось использование дракон-схем за рамками ракетно-космической техники[41] — для решения задач в различных предметных областях и отраслях экономики.
Этому способствовал ряд обстоятельств. В открытой литературе стали доступны публикации по языку ДРАКОН[4][81][82][83][84][85][86][87][88][89][90][91]. Часть этих материалов появилась в Интернете в конце 2006 года[92].
Геннадий Тышов разработал программу «ИС Дракон» (для ОС Windows)[2]. Степан Митькин (Норвегия), по своей инициативе (независимо от Пилюгинского центра), разработал программу «DRAKON Editor» (для ОС Windows, Mac, Linux)[3]. Программы выложены для свободного скачивания. Пользователи программ получили возможность формировать и использовать визуальные алгоритмы.
Императивная (процедурная) часть языка ДРАКОН опирается на новую парадигму программирования — двумерное (графическое) структурное программирование[93][94].
Первый шаг по направлению к двумерному структурному программированию был сделан в СССР в рамках Р-технологии производства программ, или «технологии двумерного программирования»[95], созданной в Институте кибернетики имени В. М. Глушкова в 1970 годах[96]. Графическая система Р-технологии программирования закреплена в стандартах ГОСТ 19.005-85[20], ГОСТ Р ИСО/МЭК 8631—94[97] и международном стандарте ISО 8631Н.
Автор Р-технологии программирования доктор физико-математических наук профессор Игорь Вельбицкий предложил пересмотреть понятие «структура программы». По его мнению, «структура — понятие многомерное. Поэтому отображение этого понятия с помощью линейных текстов (последовательности операторов) сводит практически на нет преимущества структурного подхода. Огромные ассоциативные возможности зрительного аппарата и аппарата мышления человека используются практически вхолостую — для распознавания структурных образов в виде единообразной последовательности символов»[98].
Правила двумерного структурного программирования существенно отличаются от классического одномерного (текстового) структурного программирования[93].
Идеи классического структурного программирования разрабатывались, когда компьютерная графика фактически ещё не существовала и основным инструментом алгоритмиста и программиста был одномерный (линейный или ступенчатый) текст. До появления компьютерной графики методология классического структурного программирования была наилучшим решением.
С появлением компьютерной графики ситуация изменилась. Используя выразительные средства графики, появилась возможность видоизменить, развить и дополнить три базовые (текстовые) управляющие конструкции (последовательность, ветвление, цикл), а также полностью отказаться от ключевых слов if, then, else, case, switch, break, while, do, repeat, until, for, foreach, continue, loop, exit, when, last и т. д. и заменить их на управляющую графику, то есть использовать двумерное структурное программирование[93][99].
Слабое место классического структурного программирования и текстового представления алгоритмов и программ заключается в недостатке выразительных средств. Следствием являются ограничения и запреты. Эти ограничения и запреты вытекают из природы текста, из природы текстового представления управляющих структур. Недостаток выразительных средств, проявляющийся через ограничения и запреты, тормозит повышение производительности труда алгоритмистов и программистов. В рамках текстового представления управляющих структур устранить эти ограничения и запреты невозможно[41][93][100].
По мнению разработчиков языка ДРАКОН, чтобы добиться улучшения, надо перейти от одномерного (классического) структурного программирования к двумерному (графическому) структурному программированию. Многие ограничения и запреты, неизбежные при текстовом структурном программировании, во многих случаях противоречат здравому смыслу, затрудняют понимание алгоритмов и программ, искажают нормальный ход человеческой мысли. Недопустимо запрещать правильный процесс мышления. Его надо разрешить. Шампур-метод и язык ДРАКОН устраняют этот недостаток[K 11].
При использовании шампур-метода набор управляющих ключевых слов (идентификаторов) текстового структурного программирования становится ненужным. При визуальном структурном подходе программист работает только с чертежом программы (дракон-схемой), не обращаясь к её текстовому представлению. Точно так же программист, работающий, например, на Дельфи, не обращается к ассемблеру и машинному коду — они для него просто не существуют. Во многих случаях (список которых ещё предстоит уточнить) желательно отказаться от текстовых управляющих структур, заменив их управляющей графикой[K 12].
Фактически, ДРАКОН — это не просто новый язык (новое семейство языков), а новый взгляд на императивное (процедурное) программирование и новое мировоззрение[K 13]. Наибольшую трудность в течение длительного времени представляли математика и эргономика блок-схем. Нужно было создать математически строгий метод формализации блок-схем, позволяющий превратить блок-схемы в программу, пригодную для ввода в компьютер и трансляции в объектный модуль программы. При создании языка ДРАКОН эта задача была решена с помощью визуального логического исчисления (исчисления икон)[4][103], которое лежит в основе графического синтаксиса языка ДРАКОН[104]; метода Ашкрофта-Манны[105], который является математическим обоснованием дракон-схемы «силуэт»; двумерного структурного программирования[106]. Одновременно была решена задача эргономизации блок-схем, то есть задача приспособления блок-схем для наиболее удобного человеческого восприятия и понимания[107][K 14].
ДРАКОН — графический (визуальный) язык, в котором используются два типа элементов:
Поэтому язык ДРАКОН имеет не один, а два синтаксиса: графический и текстовый. Графический (визуальный) синтаксис охватывает алфавит икон, правила их размещения в поле чертежа и правила связи икон с помощью соединительных линий. Текстовый синтаксис задает алфавит символов, правила их комбинирования и привязку к иконам (привязка необходима потому, что внутри разных икон используются разные типы выражений)[110][55].
ДРАКОН — не один язык, а целое семейство, которое может включать практически неограниченное число ДРАКОН-языков. Все языки ДРАКОН-семейства имеют одинаковый графический синтаксис, что обеспечивает зрительное сходство дракон-схем различных ДРАКОН-языков. Каждый язык семейства отличается тем, что имеет свой собственный текстовый синтаксис. Строгое разграничение графического и текстового синтаксиса позволяет в максимальной степени расширить сферу применения языков семейства, обеспечивая гибкость и универсальность выразительных средств языка[111].
При этом единообразие правил графического синтаксиса семейства ДРАКОН-языков обеспечивает их концептуальное единство. Разнообразие текстовых правил (то есть возможность выбора любого текстового синтаксиса), в свою очередь, определяет гибкость языка и лёгкую настройку на различные предметные и иные области[110][112].
В состав семейства входит универсальный визуальный алгоритмический язык, являющийся развитием блок-схем и представляющий собой язык моделирования, а не программирования, а также гибридные языки программирования.
Императивную (процедурную) часть языка Дракон можно присоединить к некоторым языкам программирования и получить так называемые гибридные языки[110]:
Точно так же можно построить языки Дракон-C#, Дракон-Python, Дракон-Tcl, Дракон-Erlang и другие. При создании гибридного языка Дракон-Си необходимо, в частности, создать транслятор из дракон-схемы в исходный код языка Си. В этом случае Си является целевым языком[113].
При использовании гибридных языков исходным текстом программы считается дракон-схема и только она. При отладке программы не следует вносить исправления в промежуточные файлы на целевых языках, например, в Си-файлы; все исправления нужно вносить в исходный код, то есть в дракон-схему[114][115][116].
Далее в качестве примера представлен порядок работы при разработке программы на гибридном языке Дракон-Си с помощью инструментальной программы ИС Дракон. Сначала в графической среде ИС Дракон разрабатывается на языке дракон-схем алгоритм, а затем программа. После этого инструментальная программа ИС Дракон транслирует полученный код дракон-схемы в исходный код языка Си. В заключение производится запуск компилятора языка Си, который осуществляет стандартную компиляцию в объектный код.
Описанный порядок работ используется, когда объём программы сравнительно небольшой. Если же программа большая (что имеет место при разработке программного обеспечения для системы управления ракет-носителей или разгонных блоков космических аппаратов), используется Технология разработки алгоритмов и программ ГРАФИТ-ФЛОКС[9].
Как и все прочие языки, ДРАКОН опирается на математику и логику. Однако кроме того, он учитывает когнитивные вопросы[K 15]. Благодаря использованию формальных и неформальных когнитивных приемов дракон-схемы позволяют изобразить решение любой, сколь угодно сложной процедурной проблемы в предельно ясной, наглядной и доходчивой форме[5]. Это дает возможность значительно сократить интеллектуальные усилия персонала, необходимые для зрительного восприятия, понимания, верификации и безошибочного решения проблем[5]. А также улучшить понимаемость алгоритмов и программ[12] читающим их человеком. В основе языка ДРАКОН лежит идея когнитивной формализации знаний, позволяющая сочетать строгость логико-математической формализации с точным учетом когнитивных (познавательных) характеристик человека[117][118].
С точки зрения человеческого фактора, исторический процесс развития языков программирования сопровождается улучшением понятности алгоритмов и программ, повышением производительности труда программистов. На первом этапе произошел переход от машинных кодов к автокодам и ассемблерам. Затем появились языки высокого уровня, которые (по сравнению с ассемблером) сделали исходный текст программы более понятным и удобным для человека и значительно увеличили производительность труда программистов. В современных условиях качественная программа должна обладать, помимо надежности и эффективности, ещё и таким важнейшим качеством как понимаемость[119]. Для улучшения понятности можно использовать сочетание некоторых языков высокого уровня с языком ДРАКОН, которые вместе образуют, так называемые, «гибридные языки ДРАКОНа»: Дракон-Delphi, Дракон-1С, Дракон-ASM, Дракон-Oberon, Дракон-Java, Дракон-C#, Дракон-C, Дракон-Python, Дракон-Tcl, Дракон-Javascript, Дракон-Lua, Дракон-Erlang. При этом функция исходного кода программы переходит к дракон-схемам. Это позволяет отказаться от текстовых управляющих структур, используемых в языках высокого уровня, и заменить их на управляющую графику ДРАКОНа. Исходный код программы становится более понятным и удобным для человека, увеличивается производительность труда программистов [120][121][122].
Основой графического синтаксиса языка ДРАКОН является графический алфавит. Алфавит состоит из графических элементов (графических фигур), которые называются иконами. В языке ДРАКОН имеется 27 икон (см. рисунок).
Для каждой иконы задана ориентация, однозначно показано направление соединительных линий, входов и выходов. Благодаря жестко заданной ориентации икон и соединительных линий в большинстве случаев отпадает необходимость использовать стрелки.
Стрелки в дракон-схемах используются крайне редко — только для обозначения некоторых типов цикла. В циклах ДЛЯ (for и foreach), а также в веточных циклах стрелки никогда не используются. Благодаря отсутствию стрелок дракон-схемы становятся более лаконичными.
Отсутствие стрелок, минимизация изломов линий, запрет на использование пересечений, отсутствие внутренних соединителей (предназначенных для того, чтобы избежать пересечения соединительных линий), соблюдение специальных математических и эргономичных правил (правило шампура, правило главного маршрута, правило побочных маршрутов, правило рокировки и т. д.) и ряд других особенностей — все это в совокупности обеспечивает повышение качества дракон-схем. Именно поэтому некоторые авторы характеризуют дракон-схемы как «правильно составленные блок-схемы»[123][124][125][47].
ДРАКОН имеет не только иконы, но и макроиконы. Макроиконы — это графические слова языка ДРАКОН. Подобно тому, как слова слагаются из букв, макроиконы (графические слова) состоят из икон (графических букв). В языке ДРАКОН имеется 21 макроикона (см. рисунок). Иконы и макроиконы — это строительные блоки, из которых создаются дракон-схемы.
Важной частью макроикон служат валентные точки (на рисунке они показаны как маленькие черные кружки). В эти точки последовательно вводятся иконы и макроиконы, которые в совокупности образуют графический узор и (после заполнения икон текстом) превращаются в дракон-схему.
По мнению доктора технических наук профессора Александра Потий и др., использование дракон-схем в качестве нотации для моделирования потоков работ (workflows) позволяет избежать недостатков, присущих традиционным нотациям описания процесса, например, IDEF3[126].
Основой дракон-схемы является простой и понятный чертеж, который обеспечивает более высокую продуктивность мозга за счет «симультанизации» зрительного восприятия чертежа. Симультанизация означает увеличение скорости работы мозга при переходе от сукцессивного восприятия текста (медленный прием детальной информации с помощью центрального зрения (central vision)) к быстрому симультанному восприятию чертежа (быстрый панорамный прием обзорной информации с помощью периферийного зрения (peripheral vision))[127].
Благодаря использованию специальных формальных и неформальных когнитивных приемов нотация «дракон-схемы» дает возможность изобразить любой, даже очень сложный процесс в ясной и доходчивой форме. Такая форма позволяет значительно сократить интеллектуальные усилия эксперта, необходимые для зрительного восприятия, понимания, верификации и безошибочного принятия решения относительно степени соответствия характеристик процесса заданным требованиям[128].
При этом облегчается понимание описываемых процессов и обеспечивается их однозначное толкование различными экспертами, что способствует обеспечению выполнения требования повторяемости к результатам оценки.
Дракон-схема — это блок-схема с точно определенными свойствами. В этом разделе дан сравнительный анализ свойств и показано, что дракон-схема является правильно составленной блок-схемой.
Блок-схемы популярны, так как они графически отображают логику программы с помощью стандартных геометрических фигур и соединительных линий[129]. Они представляют собой «интуитивно понятный метод представления управляющей последовательности алгоритма»[129].
Вместе с тем, блок-схемы подвергаются критике. Противники блок-схем утверждают, что они не поддаются формализации, поэтому их «нельзя использовать как программу для непосредственного ввода в машину»[130]. Блок-схемы не согласуются со структурным программированием, поскольку в значительной степени ориентированы на использование goto[131]. Блок-схемы широко использовались в течение ряда лет, однако сейчас их популярность падает; они «затемняют особенности программ, созданных по правилам структурного программирования»[132].
При достаточно большой степени детализации блок-схемы становятся «громоздкими и теряют своё основное достоинство — наглядность структуры алгоритма»[133]. Обозримыми и понятными являются блок-схемы только для небольших алгоритмов[134]. Доктор технических наук профессор Михаил Лекарев полагает, что если для простой задачи блок-схемы алгоритмов обеспечивают безусловную наглядность, то с ростом сложности ситуация меняется на противоположную: логическая структура алгоритма становится трудной для восприятия и исчезает, превращаясь в «клубок спагетти»[135][136].
Блок-схемы продолжают оставаться самой известной нотацией для записи алгоритмов[134]. Однако сегодня эта нотация для программистов «утратила свою актуальность»[134]. Основной недостаток блок-схем заключается в том, что они не приучают к аккуратности при разработке алгоритма. Ромб можно поставить в любом месте блок-схемы, а от него повести выходы на какие угодно участки. «Так можно быстро превратить программу в запутанный лабиринт, разобраться в котором через некоторое время не сможет даже сам её автор»[137].
Блок-схемы не позволяют изображать сложные алгоритмы с необходимой полнотой и наглядностью. Чтобы устранить недостатки, нужно упорядочить блок-схемы. Упорядоченные блок-схемы (дракон-схемы) подчиняются строгим формальным правилам[138] и правилам эргономичных алгоритмов[12].
В отличие от классических блок-схем, упорядоченные дракон-схемы пригодны для формализованной записи и автоматического получения исполняемого кода[10]. Запрещено пересечение линий, которое путает читателей и затрудняет понимание алгоритма, удалены другие недочеты. Дракон-схемы позволяют ликвидировать или существенно ослабить недостатки блок-схем[10].
Упорядоченные блок-схемы специально сконструированы таким образом, чтобы превратить сложный алгоритм в удобную схему, обеспечивающую быстрое и легкое понимание[139]. По мнению специалистов, благодаря использованию дракон-схем алгоритмы становятся более понятными, доходчивыми, ясными, прозрачными[140][12][55]. Эргономичные методы, применяемые в дракон-схемах, существенно улучшают восприятие алгоритмов[141]. Язык упорядоченных блок-схем обеспечивает разработку сложных алгоритмов с сохранением наглядности даже для многостраничных схем[142][143].
Имеются медицинские учебники, в которых используются наглядные графические инструкции для медицинского персонала, написанные в виде упорядоченных блок-схем на языке ДРАКОН[144][145][146][147].
В классической работе «Заметки по структурному программированию» Эдсгер Дейкстра использовал блок-схемы для анализа структуры программ и предложил четыре принципа структуризации блок-схем:
Обычная практика разработки и вычерчивания блок-схем не учитывает рекомендации Дейкстры. Это объясняется тем, что принципы Дейкстры не получили своего закрепления в стандартах на блок-схемы — международном стандарте ISO 5807:85 и ГОСТ 19.701—90.
Рекомендации Эдсгера Дейкстры очень важны, так как они открывают путь к совершенствованию блок-схем, делают их более удобными и наглядными. Дракон-схемы — это усовершенствованные блок-схемы, построенные на основе принципов Дейкстры[152]. Принципы необходимы потому, что они позволяют осуществить структуризацию и формализацию схем программ.
Идея ограничения топологии схем программ с целью их лучшей структуризации и формализации лежит в основе визуального языка программирования ДРАКОН и построенного на его основе шампур-метода как абстрактной визуальной модели программы[153].
Дракон-схемы есть не что иное, как правильно составленные блок-схемы[154]. Язык ДРАКОН строится на основе блок-схем с целью их улучшения[155]. Использование эргономичных правил ДРАКОНа позволяет упорядочить графический чертеж алгоритма и обеспечить более эффективное восприятие блок-схемы человеком[156][53].
Методы проектирования, ориентированные на дракон-схемы, позволяют преодолеть алгоритмическую сложность[110]. Существенно, что усовершенствованные блок-схемы, построенные по правилам языка ДРАКОН, обеспечивают разработку сложных алгоритмов «с сохранением наглядности даже для многостраничных схем»[157]. По мнению некоторых ученых, хотя стандарты на блок-схемы считаются действующими, фактически они давно устарели. С появлением дракон-схем блок-схемы потеряли свое значение, так как они во всех отношениях уступают дракон-схемам[158]. Для построения блок-схем наиболее рационально использовать алгоритмический язык ДРАКОН[159].
Для обозначения блок-схем, построенных по правилам языка ДРАКОН, используется термин «дракон-схемы»[10]. Тесная связь этих двух терминов отчетливо видна по-английски: flowchart и drakon-chart.
Дракон-схема — это упорядоченная и усовершенствованная на основании принципов Дейкстры блок-схема. При разработке единого стандарта на блок-схемы, снабженного компьютерной поддержкой и рассчитанного на «постепенное внедрение во всех отраслях и предметных областях, целесообразно взять за основу язык ДРАКОН»[160].
В отличие от блок-схем, ДРАКОН как язык программирования удовлетворяет требованиям математической строгости: из исходного чертежа можно однозначно получать объектный код[41]. Дракон-схемы строятся по определенным правилам, аналогичным структурному программированию, но эти правила более свободны и выразительны[41]. В отличие от блок-схем, правила языка ДРАКОН однозначно определяют взаимное расположение графических элементов (блоков) на листе чертежа и на экране компьютера[41]. Дракон-схемы наследуют все достоинства блок-схем и устраняют их недостатки[161].
ДРАКОН — это эргономичный стандарт для графического представления учебной информации. Язык ДРАКОН учит методистов и учителей правильному составлению блок-схем[162]. Визуальный язык ДРАКОН образует наглядную среду для первоначального обучения программированию и мог бы быть весьма полезен при организации школьных курсов информатики[110]. Блок-схемы, нарисованные по правилам языка ДРАКОН, отличаются четкостью, наглядностью и прозрачностью структуры. А наглядность и доходчивость алгоритмов — это именно то, чего так остро недостает школьным учебникам[163].
На рисунке (справа) показана дракон-схема «развилка» — графический оператор ветвления с двумя ветвями. Икона «вопрос» имеет один вход сверху и два выхода: вниз и вправо. Выход влево (в отличие от блок-схем) запрещен и никогда не используется[164]. У остальных икон входы и выходы ориентированы строго по вертикали. Благодаря продуманной графической дисциплине в языке ДРАКОН применяются правила, облегчающие понимание смысла алгоритма и обеспечивающие быстрое восприятие читателем алгоритма в целом[165].
В дракон-схеме маршруты алгоритма следует рисовать не хаотично, а упорядоченно — по принципу: «Чем правее — тем хуже». Это значит: чем правее расположен маршрут, тем более неприятную ситуацию он описывает. На рисунке (справа) два маршрута. Они соответствуют двум ситуациям. Если нет дождя — это хорошо, если дождь идет — плохо. Главный маршрут алгоритма (основная ветвь программы) идет по левой вертикали (по шампуру), демонстрируя, что все хорошо. Переход вправо (на правую вертикаль) описывает нежелательную ситуацию, потому что неприятно гулять под дождем.
Правило «Чем правее, тем хуже» — одно из многих правил, которые в совокупности значительно облегчают чтение, понимание, анализ и разработку сложных алгоритмов[166].
На рисунке (справа) показана дракон-схема «Цикл ДО» — графический оператор do–while. Спортсмен или культурист, чтобы накачать мускулатуру, поднимает штангу до тех пор, пока не устанет. Если устал, тренировка прекращается.
В цикле ДО сначала выполняется действие (Подними вес) и только после этого задается вопрос (Устал?).
Икона «вопрос» изображается так же, как и в предыдущем случае. Она имеет один вход сверху и два выхода: вниз и вправо. Выход влево запрещен.
В блок-схемах линии расположены хаотично и могут быть направлены в любую сторону. Поэтому для указания направления процесса в блок-схеме необходимы стрелки. В дракон-схеме ситуация иная. Беспорядок устранен, все линии упорядочены и направлены строго вниз. Поэтому необходимость в стрелках отпадает. Исключением является стрелка цикла, которая загибается вверх против часовой стрелки.
Иллюстрация справа демонстрирует не программу и не поток управления (control flow), а поток работ (workflow). Язык ДРАКОН позволяет единообразно описывать потоки управления и потоки работ, используя единый набор графических операторов. Суть в том, что ДРАКОН является не только языком программирования, но и языком описания бизнес-процессов, учебным языком для изучения медицинских алгоритмов и т.д.
На рисунке (справа) показана дракон-схема «Цикл ПОКА» — графический оператор while. Человек проголодался, но дома нет ничего кроме котлет. Он ест одну котлету за другой, пока не насытится.
В цикле ПОКА сначала задается вопрос (Голодный?) и только после этого выполняется (или не выполняется) действие (Съешь котлетку). В самом деле, если человек с самого начала не голоден, он обедать не станет. На рисунке отказ от еды изображен так. Если перед обедом на вопрос «Голодный?» получен отрицательный ответ, значит, из иконы «Вопрос» выходим вниз через Нет и действие «Съешь котлетку» ни разу не выполняется.
Рассмотрим три последних примера. Все они нарисованы единообразно — во всех схемах начало и конец расположены на одной вертикали (на шампуре), причем эта вертикаль не имеет разрывов и изломов. Подобное единообразие содействует стандартизации дракон-схем и облегчает их запоминание.
Еще одно отличие дракон-схем от блок-схем состоит в том, что ориентация входных и выходных линий графоэлементов (икон) в дракон-схемах задана однозначно, а в блок-схемах — неоднозначно. Например, в блок-схемах входную линию можно подводить к графическому блоку (символу) не одним, а двумя разными способами — не только сверху, но и слева. Выходную линию можно присоединять к блоку (символу) не одним, а тремя способами — не только внизу, но и справа[K 18] и даже слева[K 19].
В языке ДРАКОН этот недостаток устранен с помощью принципов Эдсгера Дейкстры, использованных для однозначного упорядочивания входных и выходных линий графических фигур.
Медицинские алгоритмы используются во врачебной практике и медицинских исследованиях в текстовой и графической форме. Графическое представление медицинских алгоритмов в виде блок-схем и дракон-схем используется для наглядного изображения действий медицинского персонала и процессов, протекающих в организме пациента[170][171][172].
На первом этапе применялись блок-схемы, заменившие неудобное и ненаглядное текстовое описание алгоритмов. Например, графические медицинские алгоритмы представлены в учебнике «Практическое руководство для врачей общей (семейной) практики», вышедшем под научной редакцией академика РАМН, доктора медицинских наук, профессора Игоря Денисова. В учебнике в виде блок-схем графически показаны диагностические алгоритмы клинических синдромов, часто встречающиеся в практике, например:
Учебник предназначен для врачей общей практики (семейных врачей), участковых терапевтов и педиатров, амбулаторно-поликлинических врачей других специальностей, интернов, клинических ординаторов, студентов медицинских вузов.
Со временем выяснилось, что блок-схемы не позволяют изображать сложные алгоритмы с необходимой полнотой и наглядностью. Недостаток блок-схем состоит в том, что при большой степени детализации они становятся громоздкими и теряют своё основное достоинство — наглядность структуры алгоритма[179]. Кроме того, блок-схемы не приучают к аккуратности при описании алгоритма[180]. Ромб можно поставить в любом месте блок-схемы, а от него повести выходы на какие угодно участки. Так можно быстро превратить алгоритм в запутанный лабиринт, разобраться в котором через некоторое время не сможет даже сам его автор[181].
Возникла необходимость устранить отмеченные недостатки и упорядочить блок-схемы. Упорядоченные блок-схемы (дракон-схемы) подчиняются строгим формальным правилам[182] и правилам эргономичных алгоритмов[12]. Запрещено пересечение линий, которое путает читателей и затрудняет понимание алгоритма. Дракон-схемы позволяют ликвидировать или существенно ослабить недостатки блок-схем[10]. Упорядоченные блок-схемы специально сконструированы таким образом, чтобы превратить сложный алгоритм в удобную схему, обеспечивающую быстрое и легкое понимание[183]. Эргономичные методы, применяемые в дракон-схемах, существенно улучшают восприятие алгоритмов[184]. Язык упорядоченных блок-схем обеспечивает разработку сложных алгоритмов с сохранением наглядности даже для многостраничных схем[185][186].
Имеются медицинские учебники, в которых используются наглядные графические инструкции для медицинского персонала, написанные в виде упорядоченных блок-схем на языке ДРАКОН[187][188][189][190].
В учебном курсе «Неотложная медицинская помощь»[172] используются упорядоченные блок-схемы в качестве графических инструкций для медицинского персонала. Служба скорой помощи — одно из важнейших звеньев системы оказания медицинской помощи населению[191]. Действия специализированных и линейных бригад скорой помощи должны выполняться очень четко; последовательности таких действий описываются с помощью дракон-схем и называются алгоритмами. В учебном курсе «Неотложная медицинская помощь» имеется глава «Как читать алгоритмы?», поясняющая порядок чтения дракон-схем[192].
Упорядоченные блок-схемы наглядно показывают неотложные спасательные действия и процедуры, которые должны точно и безупречно выполнять работники скорой помощи при угрожающих жизни пациента состояниях. В начале учебного курса говорится: «Последовательность сложных или более важных действий написана в алгоритмах, подготовленных по методике языка ДРАКОН. Цель алгоритмов — помочь как можно лучше запомнить последовательность действий при оказании неотложной медицинской помощи»[193].
В учебнике «Начальная неотложная акушерская помощь», изданном под научной редакцией доктора медицинских наук, профессора Руты Надишаускене, приведены медицинские алгоритмы, часто встречающиеся в практической работе неотложной акушерской помощи при диагностике, реанимации и родовспоможении, например:
Алгоритмы представлены в наглядной форме в виде упорядоченных блок-схем на языке ДРАКОН. Учебник предназначен для медицинских работников скорой помощи, специалистов, работающих в приемных отделениях и учащихся — будущих акушеров, фельдшеров и студентов медицинских вузов.
Фибрилляция предсердий (прежнее название, мерцательная аритмия) — нарушение ритма сердца, для которого характерна частая (более 350 импульсов в минуту) неритмичная хаотическая электрическая активность предсердий, приводящая к прекращению работы предсердий как единого целого[201]. На рисунке справа представлен алгоритм терапевтической тактики при фибрилляции предсердий.
При частых (чаще одного раза в месяц) или плохо переносимых рецидивах фибрилляции предсердий с нестабильной гемодинамикой показана противорецидивная антиаритмическая терапия. Кроме того, для профилактики рецидивов используют и бета-адреноблокаторы. При безуспешности кардиоверсии или частых рецидивах фибрилляции предсердий (ФП), несмотря на медикаментозную противорецидивную терапию (или при противопоказаниях к ней) рекомендуют при хорошей переносимости ФП отказаться от попыток восстановления синусового ритма и перевести ФП в постоянную с поддержанием нормосистолии. Если у больного фибрилляция предсердий сопровождается артериальной гипотензией, острым коронарным синдромом, прогрессированием стенокардии, сердечной недостаточности, больного необходимо направить к кардиохирургу[202].
Важную роль играют медицинские алгоритмы, описывающие групповую работу врачей или иного медицинского персонала. На рисунке справа представлена графическая инструкция, предписывающая и синхронизирующая между собой точно скоординированную совместную работу двух работников скорой помощи.
Инструкция определяет порядок выполнения неотложных действий медицинской бригады по спасению пострадавшего мотоциклиста, находящегося без сознания после дорожной аварии с подозрением на перелом позвоночника у основания черепа. Данный медицинский алгоритм описывает одновременную (параллельную) работу двух медицинских работников[204].
На рисунке справа показана упорядоченная блок-схема «План мероприятий по подготовке и проведению цикла тематического усовершенствования врачей „Организация и методика преподавания семейной медицины“». Данный план (алгоритм) предназначен для преподавателей кафедр медицинских вузов и учебных заведений послевузовского профессионального образования врачей, участвующих в подготовке врачей общей практики (семейных врачей)[206].
На схеме выделены четыре ветки силуэта, описывающие последовательность выполняемых преподавателями работ:
— разработка учебных пособий и учебного плана;
— разработка методик;
— получение заявок на переподготовку;
— подготовка документов к занятиям.
В 1996 году Государственный комитет Российской Федерации по высшему образованию включил изучение языка ДРАКОН в программу курса «Информатика» для направлений:
В официальном документе Госкомвуза «Примерная программа дисциплины „Информатика“» имеется раздел, посвященный языку ДРАКОН и использующий его понятийный аппарат[K 20]:
- Раздел 3. АЛГОРИТМЫ И АЛГОРИТМИЗАЦИЯ.
- ВИЗУАЛИЗАЦИЯ АЛГОРИТМОВ
Понятие алгоритма. Визуализация алгоритмов и блок-схемы. Недостатки блок-схем. Формализация и эргономизация блок-схем. Язык визуального представления алгоритмов ДРАКОН. Линейные, разветвленные и цикличные алгоритмы. Вложенные и параллельные алгоритмы. Логические элементы и базовые управляющие структуры визуального структурного программирования. Визуальные операторы управления. Визуальные алгоритмические макроконструкции «примитив» и «силуэт».
Понимаемость алгоритмов и методы её улучшения. Понятие эргономичного алгоритма. Равносильные преобразования визуальных алгоритмов, позволяющие улучшить понимаемость: рокировка, подстановка, вертикальное и горизонтальное объединение, визуализация логических формул в условных операторах… Преобразование алгоритмов из визуальной формы в текстовую и обратно. Язык абстрактных ДРАКОН-схем как инвариант класса процедурных языков[208].
«Примерная программа дисциплины „Информатика“» одобрена Президиумом совета по информатике Госкомвуза. Председатель Президиума академик РАН Юрий Журавлев является руководителем Секции прикладной математики и информатики Отделения математических наук РАН, а также заместителем Академика-секретаря Отделения математических наук РАН[209].
В одобренной академиком Журавлевым «Примерной программе» содержится обоснование концепции и структуры учебного курса информатики; в частности, дается обоснование использования языка ДРАКОН[210][K 21].
Далее в Программе указываются требования к языку представления процедурных знаний нового типа: общедоступного, человечного, предельно легкого в изучении и удобного в работе, создающего наиболее комфортные условия для работы человеческого мозга, позволяющего решать проблемы ценою минимальных интеллектуальных усилий, удовлетворяющего самым строгим эргономическим и дидактическим требованиям. Отмечается, что этим требованиям соответствует язык ДРАКОН — «один из самых легких языков представления знаний и самый первый язык, с которого нужно начинать обучение алгоритмическому мышлению и программированию»[213].
При коллективной интеллектуальной работе важную роль играет интеллектуальное взаимопонимание и интеллектуальное взаимодействие между специалистами. Для улучшения взаимопонимания необходимо иметь общую языковую основу. Благодаря своей человечности (эргономичности) язык ДРАКОН относительно легко устраняет барьеры взаимного непонимания (в части процедурных знаний) между работниками различных специальностей: врачами и физиками, математиками и конструкторами, биологами и экономистами, программистами и технологами и т. д. Тем самым ДРАКОН создает универсальную языковую основу для процедурного интеллектуального взаимодействия между людьми, в частности, между участниками многопрофильных проектов. В результате этот «язык взаимопонимания» заметно упрощает междисциплинарное и иное общение между представителями разных организаций, ведомств, отделов, лабораторий, научных школ и профессий, отчасти играя роль «производственного эсперанто»[213].
Бакалавр любой специальности должен уметь формализовать свои процедурные профессиональные знания самостоятельно, то есть без помощи профессиональных программистов или когнитологов (инженеров по знаниям). Программа предусматривает приобретение навыков автоформализации знаний на языке ДРАКОН[214].
В Сибирском государственном индустриальном университете студенты изучают язык ДРАКОН и осваивают интегрированную среду «ИС Дракон» на кафедре прикладной информатики для представления алгоритмов решения проблем управления при подготовке магистров, обучающихся по направлению: 140400.68 «Электроэнергетика и электротехника», профили подготовки «Электроприводы и системы управления электроприводов», «Автоматизированные электромеханические комплексы и системы»[215].
В Новокузнецком филиале Кемеровского государственного университета студенты изучают язык ДРАКОН и осваивают интегрированную среду «ИС Дракон» на кафедре математики и математического моделирования согласно программе «М2.ДВ.4 Инструментальные средства визуального программирования», составленной в соответствии с требованиями федерального государственного образовательного стандарта высшего образования по направлению подготовки 010400.68 «Прикладная математика и информатика» для магистерской программы «Математическое моделирование» и утвержденной деканом факультета информационных технологий доктором технических наук профессором Валерием Калединым[48].
В Белоруссии в Минском высшем радиотехническом колледже отмечают: «Как показал опыт применения языка ДРАКОН в лабораторном цикле „Изучение аналоговых и цифровых приборов“, студенты на порядок быстрее усваивают принципы работы операционных усилителей и регистрации их амплитудных и частотных характеристик»[216].
Можно привести ещё ряд примеров, но в целом можно отметить малую известность языка среди преподавателей высшей школы.
В начальной школе факультативно используются пропедевтические курсы Александра Горячева «Информатика в играх и задачах» для 1-4 классов и «Информатика и ИКТ» для 3 и 4 класса. На первом этапе для изображения процедурных знаний в этих курсах использовались традиционные блок-схемы, но затем — после ознакомления с правилами построения ДРАКОН-схем — ситуация изменилась в пользу ДРАКОНа.
Как отмечает создатель пропедевтических курсов кандидат педагогических наук Горячев, «для представления информации о процедурных знаниях мы планируем использовать блок-схемы с рекомендациями автора визуального языка ДРАКОН»[217].
Рабочая программа «Информатика для начинающих» для 2-4 классов, утвержденная руководителем Методического объединения педагогов Веренко Л. И., предусматривает изучение алгоритмов на основе языка ДРАКОН в рамках темы «Страна волшебных алгоритмов» (объем 26 часов)[218] по учебному пособию «Занимательная информатика»[219].
Изучение информатики в основной школе определяется Государственным образовательным стандартом. В 2004 году появился стандарт основного общего образования по Информатике и ИКТ (информационно-коммуникационные технологии)[220]. В соответствии со стандартом подготовлено учебное пособие по алгоритмике «Занимательная информатика», основанное на языке ДРАКОН[90]. В 2007 году пособие вышло в свет в издательстве Дрофа — специализированном издательстве, выпускающем учебную и методическую литературу для дошкольных учреждений, начальной, основной, средней и высшей школы. Это было уже третье издание книги, исправленное и дополненное с учетом замечаний учителей и специалистов[K 22].
Учительская газета опубликовала отзыв о книге и языке ДРАКОН.
ДРАКОН — это эргономичный стандарт для графического представления учебной информации. Это, безусловно, первый и единственный такой стандарт. Блок-схемы во всех имеющихся на сегодня книгах (кроме книг по языку ДРАКОН) — составлены очень плохо. Язык ДРАКОН учит нас, методистов и учителей, правильному составлению блок-схем. Насколько я знаю, нет другой литературы, где тому же самому можно научиться настолько просто и даже увлекательно[222].
В журнале «Вестник Российской академии наук» опубликована рецензия доктора технических наук Я. В. Безеля, в которой отмечается, что алгоритмический язык ДРАКОН разработан совместными усилиями Российского авиационно-космического агентства (НПЦ автоматики и приборостроения им. Н. А. Пилюгина, г. Москва) и Института прикладной математики им. М. В. Келдыша РАН. Этот язык универсален. Он может применяться для наглядного представления и быстрой разработки алгоритмов не только в космосе, но и в земных видах человеческой деятельности. Практическая полезность ДРАКОНа получила высокую оценку. Министерство образования РФ включило его изучение в программу дисциплины «информатика» высшей школы. О лёгкости его усвоения говорит хотя бы тот факт, что он положен в основу игрового учебного пособия по информатике для детей младшего и среднего школьного возраста[15].
Как отмечает Безель, в своё время Н. И. Лобачевский дал замечательно яркую оценку искусственным языкам: «Чему одолжены своими блестящими успехами науки, слава нынешних времен, торжество ума человеческого? Без сомнения, искусственному языку своему!»[223]. Разделяя эту мысль, автор книги вместе с тем подвергает критике существующие подходы к созданию языков. Он считает, что разработчики языков не должны игнорировать накопленный наукой огромный багаж знаний об устройстве и работе мозга. Концепция искусственных языков нового поколения должна опираться на междисциплинарный подход[15].
Проблемы понимания и взаимопонимания, продолжает Безель, автор книги рассматривает как ключевые проблемы информатики. Понимаемость программы определяется как свойство программы минимизировать интеллектуальные усилия, необходимые для её усвоения. Одно из неоспоримых достоинств книги состоит в разработке практического метода, позволяющего создать принципиально новый подход к решению проблемы понимания, который, в свою очередь, тесно связан с проблемой улучшения работы ума[15].
По словам Безеля, автор демонстрирует его на примере языка ДРАКОН. При его разработке была объявлена стратегическая цель: создать наиболее комфортные условия для работы человеческого интеллекта, обеспечить наилучшие возможности для повышения эффективности коллективного разума специалистов. В результате должен появиться общедоступный, предельно легкий в изучении и удобный в работе язык, позволяющий решать проблемы ценою минимальных интеллектуальных усилий по принципу «сделай сам» (то есть без помощи программистов и когнитологов)[15].
До сих пор создание алгоритмических языков было заветной «вотчиной» математиков. Данная книга представляет собой попытку осуществить своего рода переворот, суть которого в том, что гуманитарные требования к языку выдвигаются на первое место (при этом требование математической строгости, разумеется, аккуратно выполняется). ДРАКОН — первый алгоритмический язык, созданный в рамках нового мировоззрения, органично объединившего идеи психологии, эргономики и математики[15].
Оппоненты отмечают, что дракон-схемы — это всего лишь «правильно составленные блок-схемы»[154]. А раз так, то «недостатки блок-схем сохраняются и в дракон-схемах»[154]. При этом подчеркивается, что «топология Р-схем более расширенная и управляемая по сравнению с топологией дракон-схем»[134]. В связи с этим, по мнению критиков, в процессе обучения программированию желательно использовать Р-схемы, а не дракон-схемы[134].
Этот раздел не закончен.
«…существующие подходы к созданию искусственных языков недостаточны… Разработчики языков не должны игнорировать накопленный наукой огромный багаж знаний об устройстве и работе мозга. Концепция искусственных языков нового поколения должна опираться на междисциплинарный подход»[38].
Понимаемость программного средства (understandability) — совокупность свойств программного средства, характеризующая затраты усилий пользователя на понимание логической концепции этого программного средства. Примечание. Под логической концепцией подразумеваются основополагающие понятия, принципы и соглашения, придающие системе правил работы пользователя с программным средством согласованный и обоснованный характер и позволяющие логически точно определять конкретное назначение и содержание этих правил[46].
Безусловной заслугой Никиты Хрущёва является умелое использование первых практических достижений космонавтики для политического и духовного объединения общества. Однако стоит напомнить, что, не жалея средств на развитие космической техники, Хрущев не осмелился нарушить табу, наложенное органами безопасности, на открытие имен истинных авторов наших космических побед. Академик Пётр Капица писал, что автор и организатор такого научного подвига, как запуск первого Искусственного спутника Земли, вполне достоин Нобелевской премии. Нет сомнения, что мировая общественность положительно восприняла бы присуждение Нобелевским комитетом этой премии Главному конструктору ракеты-носителя и первого спутника. Но фамилия Главного конструктора оказалась засекреченной до самой его смерти, а Нобелевские премии анонимным авторам не присуждаются[80].
1. Среди требований, предъявляемых к современным алгоритмическим языкам, на первое место все чаще выходит понимаемость (comprehensibility) алгоритмов и программ, которая определяется как «свойство программы минимизировать интеллектуальные усилия, необходимые для её понимания». Это объясняется тем, что «в современных условиях качественная программа должна обладать, помимо надежности и эффективности, ещё и такими важнейшими качествами как понимаемость и сопровождаемость»[211][119].Наиболее мощным средством для улучшения понимаемости является визуализация алгоритмов и программ: «общепризнанно, что человеческий мозг в основном ориентирован на визуальное восприятие, и люди получают информацию при рассмотрении графических образов быстрее, чем при чтении текста»[211][212].
2. … В связи с этим тема «алгоритмы и алгоритмизация» (см. раздел 3 программы) излагается в рамках визуальной парадигмы, что позволяет получить ряд преимуществ: облегчить изучение темы, улучшить эргономические характеристики алгоритмов и т. д.[211][53]
3. Синтез идей информатики и эргономики полезен тем, что процесс алгоритмизации (который во многих случаях требует значительных трудозатрат) становится менее трудоемким и более ясным. Для этого вводится понятие «эргономичный алгоритм». Излагаются равносильные преобразования алгоритмов, способные улучшить их эргономические характеристики. При этом алгоритмизация и программирование рассматриваются как частный случай более общей проблемы — систематизации, структуризации, представления и формализации человеческих знаний[207].
|
ДРАКОН.