8-900-374-94-44
[email protected]
Slide Image
Меню

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

Содержание

Визуальное программирование на языке ДРАКОН / Хабр

Визуальное и текстовое программирование

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

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

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

Также не рекомендуется применять логические выражения: and, or, not. Их тоже изображают средствами ДРАКОНа.

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


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

На рис. 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

Выводы

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

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

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


Список литературы


Есть, что почитать

  1. Dahl, O. J. Dijkstra, E. W. Hoare, C. A. R. (1972). Structured programming. Academic Press Ltd: London.
  2. Паронджанов, В.Д. Учись писать, читать и понимать алгоритмы. — Москва, ДМК Пресс, 2012.
  3. Кауфман, В.Ш. Языки программирования. Концепции и принципы. — Москва, ДМК Пресс, 2011.
  4. Паронджанов, В.Д. Почему врачи убивают и калечат пациентов или зачем врачу блок-схемы алгоритмов?.. — Москва, ДМК Пресс, 2017.
  5. Lifecycle Modelling Language (LML) specification. 2015. http://www.lifecyclemodeling.org/specification/
  6. Business Process Model and Notation specification, 2011. http://www.omg.org/spec/BPMN/2.0/About-BPMN/
  7. Учим ДРАКОН по примерам. https://drakon-editor.com/docs/examples
  8. Mitkin, S. DRAKON. The Human Revolution in Understanding Programs, 2011. https://drakon-editor.com/files/DRAKON.pdf
  9. Mitkin, S. Visual functional programming with DRAKON-Erlang- Erlang User Conference 2015. https://www.youtube. com/watch?v=yZLedcnFA94
  10. Mitkin, S. DRAKON-Erlang: Visual Functional Programming, 2012. http://drakon-editor.sourceforge.net/drakon-erlang/intro.html
  11. C programming with DRAKON Editor. http://drakon-editor.sourceforge.net/cpp/c.html
  12. Lua programming with DRAKON Editor. http://drakon-editor.sourceforge.net/lua/lua.html
  13. Система ГРАФИТ-ФЛОКС. http://drakon.su/grafit-floks-sistema
  14. Обсуждение системы ГРАФИТ-ФЛОКС http://forum.drakon.su/viewtopic.php?p=43805#p43805
  15. ДРАКОН-редактор Эйсымонта. http://drakon.su/instrumenty/eysymont
  16. ИС Дракон Геннадия Тышова. http://drakon.su/programma_is_drakon
  17. Integrator CodeView Олега Гарипова http://integratorsoft.com/?mo=69503271058&vi=2838242471&w=69503271097
  18. DRAKON Editor Степана Митькина http://drakon-editor.sourceforge.net/
  19. Официальный сайт языка ДРАКОН http://drakon.su/
  20. Форум языка ДРАКОН http://forum. drakon.su/

Программа «ИС Дракон» [Визуальный язык ДРАКОН]

Содержание

  • Программа «ИС Дракон»

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

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

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

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

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

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

    • Особенности

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

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

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

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

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

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

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

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

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

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

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

Последний выпуск программы «ИС Дракон» скачать здесь.

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

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

* Примеры работы с программой «ИС Дракон»

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для работы с языками программирования без GOTO и с ассемблерами предусмотрен режим сборки без Маршрутного транслятора в заданном программистом порядке.
Для языка Tcl, без GOTO, есть опыт формирования программного кода Маршрутным транслятором и с последующей доработкой, смотрите http://forum. oberoncore.ru/viewtopic.php?p=89576#p89576

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


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


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

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

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

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

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

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


Особенности

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

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

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

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

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

Ильченко Э.В. Описание формата DRT, 2014. — 8с.
Дополнительная информация по формату DRT см. здесь: http://forum.easyelectronics.ru/viewtopic.php?p=388294#p388294

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

Калиногорский Н. А. Автоматизация процесса разработки алгоритмов управления в интегрированной среде Дракон. \ Методические указания. — Новокузнецк, Изд. центр СибГИУ, 2013. — 50с. Методические указания разработаны на Кафедре прикладной информатики Института информационных технологий и автоматизированных систем Сибирского государственного индустриального университета, г. Новокузнецк.

О практике программирования в ИС Дракон
Примеры использования ИС Дракон
Здесь можно скачать книги В.Д. Паронджанова по языку Дракон

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

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

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

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

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

Видео. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 3. Проектирование сложного алгоритма реального времени. Проектирование разветвленного алгоритма. Проектирование циклов. Оператор ожидания. Оператор «пауза». (на примере управления дверным замком).

Видео. Использование языка ДРАКОН для программирования микроконтроллеров. Часть 4. Работа с несколькими таймерами. В какой момент нужно запустить каждый таймер? Управление шиной процессора. (на примере управления дверным замком)

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

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

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

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

uroki_drakona. rar

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

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

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

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

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

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

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

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

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

Старая версия документа

programma_is_drakon.txt · Последние изменения: 2020/08/18 17:33 — Паронджанов В. Д.

Введение — Dragon

Добро пожаловать в язык программирования Dragon!

Dragon — инновационный и практичный многопарадигмальный язык общего назначения. Поддерживаемые парадигмы программирования: императивное, объектно-ориентированное, функциональное, декларативное программирование с использованием вложенных структур и естественное программирование. Язык является переносимым (Windows, Linux, macOS и т. д.) и может использоваться для создания Консоль и графический интерфейс. Язык разработан, чтобы быть простым, маленьким, Гибкий и быстрый. Его динамический язык (динамическая типизация и слабо типизированный), который интерпретирует источник код в байт-код, затем выполняет его.

В этой главе мы собираемся обсудить цели разработки и реализации языка.

Dragon и другие языки

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

Также на Dragon влияют следующие языки программирования

  • Луа
  • Питон
  • Рубин
  • Ява
  • QML
  • Кольцо

История

В октябре 2016 года я начал разработку и реализацию языка программирования Dragon. После 15 месяцев разработки в январе 2018 года интерпретатор языка и среда были готовы к использованию!

Первая версия языка Dragon 1.0 выпущена 4 января 2018 г.

Dragon 1.1 выпущена 6 марта 2018 г.

Dragon 1.2 выпущен 24 мая 2018 года

Dragon 1.3 выпущен 14 августа 2018 года

Dragon 1.4 выпущен 18 января 2019 года

Dragon 1.5 выпущен 25 апреля 2013 года

Dragon 1.5 выпущен 25 апреля 2013 года 9000 27 мая 2019

Dragon 1.7 выпущен 11 июля 2019

Dragon 1. 8 выпущен 9 августа 2019

Dragon 1.9 выпущен 29 августа 2019

Dragon 1.9.1 выпущен 20 сентября 15 сентября

Dragon 1.9.2 выпущен 18 сентября 2019 г.

Dragon 1.9.3 выпущен 13 октября 2019 г.

Dragon 1.9.4 выпущен 22 октября 2019 г. Dragon 1.9.6 выпущен 28 февраля 2020 г.

Dragon 1.9.7 выпущен 28 апреля 2020 г.

Dragon 1.9.8 выпущен 28 февраля 2021 г.

Dragon Native 1.0 выпущен 22 августа 2022 г.

Функции

Язык Dragon поставляется со следующими функциями

Подсказка

Язык готов к работе!

  • Переводчик

  • Декларативное программирование на вершине объектно-ориентированного программирования

  • Нет явного конца операторов (Нет или требуется ENTER)

  • Портативный (Windows, Linux и Mac OS X)

  • Комментарии (однострочные, линейные и многострочные)

  • Динамический ввод

  • Слабо типизированный

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

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

  • Сборщик мусора — автоматическое управление памятью (анализ экранирования и подсчет ссылок)

  • Структурное программирование

  • Богатые управляющие структуры и операторы

  • Нет основной функции

  • Функция вызова до определения

  • Рекурсия

  • Многострочные литералы

  • Рефлексия и метапрограммирование

  • Очистить структуру программы (операторы, затем функции)

  • Обработка исключений

  • Команды ввода/вывода

  • Математические функции

  • Строковые функции

  • Стандартные функции

  • Функции обработки файлов

  • Поддержка базы данных

  • Создание приложений с графическим интерфейсом для рабочего стола

  • Расширение файла . dgn

Лицензия

Язык программирования Dragon

https://dragon-lang.org

Лицензия MIT (MIT)

Авторское право (c) Аавеш Джилани

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

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

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕТСЯ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЕ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ НЕСУТ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГОЕ. ОТВЕТСТВЕННОСТЬ, БУДУЩАЯ ПО ​​ДОГОВОРУ, ДЕЛИКТУ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩАЯ ИЗ, ВНЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ В ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.

Язык программирования Dragon: введение

Язык программирования Dragon

Привет, ребята, я здесь с новой статьей. Сегодня я познакомлю вас с новым интересным языком программирования под названием « Dragon «.

Я знаю, что большинство из вас, возможно, не слышали об этом языке программирования, и все вы знаете, что «Дракон — это просто огнедышащее существо», но не беспокойтесь, так как я познакомлю вас с тем, что такое Дракон и чем он собирается стать. .
Хватит болтать!

Что такое Дракон?

Dragon — это инновационный и практичный язык сценариев общего назначения с несколькими парадигмами. Он поддерживает несколько парадигм программирования, таких как императивное, объектно-ориентированное, функциональное, естественное программирование и декларативное программирование с использованием вложенных структур.
Язык является переносимым (Windows, Linux, Mac OS X, Android и т. д.) и может использоваться для создания консольных и графических приложений. Язык разработан, чтобы быть простым, небольшим, гибким и быстрым. Это динамически и слабо типизированный язык, который интерпретирует исходный код через JVM или LLVM .
Первая версия языка была выпущена 4 января 2018 г. .

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

Дракон «Создан для ясной цели».

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

Также на Dragon повлияли следующие языки программирования:

  • Луа
  • Питон
  • Рубин
  • Ява
  • QML
  • Кольцо

Особенности Dragon:

Язык Dragon поставляется со следующими функциями

💡Подсказка:

Язык готов к производству!

  • Переводчик
  • Декларативное программирование на вершине объектно-ориентированного программирования
  • Нет явного конца операторов (Нет или требуется ENTER)
  • Портативный (Windows, Linux и Mac OS X)
  • Комментарии (однострочные, линейные и многострочные)
  • Динамическая типизация
  • Слабо типизированный
  • Область действия по умолчанию для переменных внутри функций (локальная)
  • Область по умолчанию для переменных вне функций (глобальная)
  • Сборщик мусора — автоматическое управление памятью (анализ экранирования и подсчет ссылок)
  • Структурное программирование
  • Богатые управляющие структуры и операторы
  • Нет основной функции
  • Вызов функции перед определением
  • Рекурсия
  • Многострочные литералы
  • Рефлексия и метапрограммирование
  • Очистить структуру программы (операторы, затем функции)
  • Обработка исключений
  • Команды ввода/вывода
  • Математические функции
  • Строковые функции
  • Стандартные функции
  • Функции обработки файлов
  • Поддержка базы данных
  • Создание приложений с графическим интерфейсом для рабочего стола
  • .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *