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

Логика задачи:
Спросить возраст.
Если возраст меньше 0 или больше 150 — попросить ввести снова.
-
Иначе проверить по порогам:
< 13 → «Ребёнок»
< 18 → «Подросток»
< 65 → «Взрослый»
Иначе → «Пожилой»
Вывести результат.
Такую схему удобно представить визуально в редакторе ДРАКОН. Она хранится в структурированном виде (JSON): у каждого блока есть тип (вопрос, действие, выбор), входы и выходы. Для человека это картинка, а для ИИ — точная спецификация, по которой можно сгенерировать код на Python, PHP, JS и других языках, без предположений о том, «что автор имел в виду».
Как AI «читает» ДРАКОН схемы
Модели ИИ могут:
Разобрать структуру (последовательности, ветвления, циклы).
Перевести блоки в код (вопрос → if, действие → присваивание/вызов, цикл → while/for).
Проверить логику (мертвые ветки, непокрытые случаи, лишние проверки).
Собрать документацию на естественном языке.

{
"items": {
"1": {
"type": "end"
},
"2": {
"type": "branch",
"branchId": 0,
"one": "5"
},
"4": {
"type": "question",
"content": "<p>Возраст меньше 0 и больше 150 </p>",
"one": "9",
"two": "5",
"flag1": 1
},
"5": {
"type": "arrow-loop",
"one": "16"
},
"6": {
"type": "case",
"one": "13",
"content": "<p>Возраст менее 65</p>",
"two": "10"
},
"7": {
"type": "case",
"one": "12",
"two": "6",
"content": "<p>Возраст менее 18</p>"
},
"8": {
"type": "case",
"one": "11",
"two": "7",
"content": "<p>Возраст менее 13</p>"
},
"9": {
"type": "select",
"one": "8",
"content": "<p>Проверка возраста</p>"
},
"10": {
"one": "14",
"type": "case",
"content": "<p>Возраст 65 и более</p>"
},
"11": {
"type": "action",
"content": "<p>Присвоить ранг «Ребёнок»</p>",
"one": "15"
},
"12": {
"type": "action",
"content": "<p>Присвоить ранг «Подросток»</p>",
"one": "15"
},
"13": {
"type": "action",
"content": "<p>Присвоить ранг «Взрослый»</p>",
"one": "15"
},
"14": {
"type": "action",
"content": "<p>Присвоить ранг «Пожилой»</p>",
"one": "15"
},
"15": {
"type": "simpleoutput",
"content": "<p>Вывести присвоенный ранг</p>",
"one": "1"
},
"16": {
"type": "simpleinput",
"content": "<p>Задать входящую переменную возраста</p>",
"one": "4"
}
},
"type": "drakon",
"id": "Демо для статьи.drakon"
}
Я пробовал разные LLM: ChatGPT, Cloude, Qwen, K2 — все они отлично понимают алгоритмы в виде JSON, и как результат, ДРАКОН становится мостом между замыслом и реализацией. Человек держит в руках логику, а машина — синтаксис и рутину.
Важно: Не все LLM принимают файлы с расширением .drakon. Поменяйте расширение файла на .txt, и ИИ гарантированно его примет.
Результат в виде кода Python
def get_age_rank():
while True:
try:
age = int(input("Введите возраст: "))
except ValueError:
print("Некорректный ввод. Пожалуйста, введите число.")
continue
if age < 0 or age > 150:
print("Возраст должен быть от 0 до 150. Попробуйте снова.")
continue
if age < 13:
rank = "Ребёнок"
elif age < 18:
rank = "Подросток"
elif age < 65:
rank = "Взрослый"
else:
rank = "Пожилой"
print(f"Присвоенный ранг: {rank}")
break
if __name__ == "__main__":
get_age_rank()
Результат в виде кода PHP
<?php
function getAgeRank() {
while (true) {
echo "Введите возраст: ";
$handle = fopen("php://stdin", "r");
$age = trim(fgets($handle));
fclose($handle);
if (!is_numeric($age)) {
echo "Некорректный ввод. Пожалуйста, введите число.\n";
continue;
}
$age = (int)$age;
if ($age < 0 || $age > 150) {
echo "Возраст должен быть от 0 до 150. Попробуйте снова.\n";
continue;
}
if ($age < 13) {
$rank = "Ребёнок";
} elseif ($age < 18) {
$rank = "Подросток";
} elseif ($age < 65) {
$rank = "Взрослый";
} else {
$rank = "Пожилой";
}
echo "Присвоенный ранг: $rank\n";
break;
}
}
getAgeRank();
Конечно, алгоритм слишком простой, но усложняя можно создать несколько связанных между собой блок-схем, можно делать тесты и придумать много других применений, я лишь хочу показать идею.
Где ещё это работает
Бизнес-процессы: заявки, согласования, логистика.
Медицина: протоколы диагностики и лечения.
Образование: учим детей думать алгоритмами без синтаксиса.
Юриспруденция: пошаговые процедуры применения норм.
Инженерия: аварийные инструкции и чек-листы.
Везде, где важна полнота и порядок, ДРАКОН спасает ИИ от лишних мыслей и предположений. Вы можете задать алгоритм обработки любых данных в понятном LLM формате и получить хорошую предсказуемость поведения.
Почему это важно сейчас
Генеративный код часто выглядит правдоподобно, но внутри могут быть дыры. Чёрный ящик не объясняет свои решения.
ДРАКОН возвращает контроль:
Мы видим все ветки и что случится в каждом случае.
Задаём валидации и «пути по умолчанию».
Передаём ИИ не «текст с идеями», а чёткую схему.
Это снижает риски и сюрпризы на продакшене.
Итог
ДРАКОН — язык честной логики. Он не даёт прятаться за общие фразы: показывайте шаги и связи. В паре с ИИ это работает так:
Человек формулирует структуру и ограничения.
ИИ пишет код, находит пробелы, предлагает улучшения.
Результат становится прозрачным и проверяемым.
Писать «по вайбу» можно. Но если хочется, чтобы система вела себя предсказуемо — лучше один раз собрать логику в ДРАКОН.
В качестве заключения, я хочу показать, что ДРАКОН применим не только в программировании. Давайте представим эту статью в виде алгоритмической структуры в ДРАКОН.


На втором скрине показал как К2 видит ДРАКОН-схему статьи, хотя она алгоритмически не совсем верна, ИИ нормально понял задачу и может написать статью. Для статей, конечно достаточно и простого списка, я просто хотел показать, что в ДРАКОН можно не только программировать
UPD:
В обсуждении появился лучший вариант применения ДРАКОН-схем:
К примеру, вы делаете телеграм-бота с ИИ. Обычная схема — написали промпт типа «обработай запрос пользователя корректно» и молитесь, чтобы ИИ не начал фантазировать.
А теперь другой подход. Расписываете в ДРАКОН'е весь алгоритм:
— Определи тип запроса: вопрос, жалоба, команда.
— Если вопрос — классифицируй по теме.
— Достань контекст из базы/FAQ.
— Сформируй ответ по шаблону.
— Проверь: нет выдуманных фактов? Если есть — пересобери.
Где это заходит лучше всего — в повторяющихся процессах:
— Модерация сообщений и жалоб.
— FAQ и поддержка.
— Разбор форм/заявок.
— Классификация тикетов.
Плюсы:
— Меньше галлюцинаций, предсказуемые ответы.
— Можно версионировать алгоритмы и делать A/B-тесты.
— Легче разбирать ошибки по шагам.
ДРАКОН выдаёт это в JSON, а LLM хорошо понимают такие промпты — схему можно сразу использовать как часть промпта.
Когда задача повторяющаяся — на отладку алгоритма не жалко потратить время. Циклично обрабатываете тысячи запросов? ДРАКОН-схема в промпте даёт ИИ чёткий план действий. Это уже оправдывает время на описание и отладку.
Плюс на выходе получаете алгоритм — значит, можете сравнивать разные версии, проводить A/B-тесты. Можно получить неплохой выигрыш в качестве.
Комментарии (44)

NeriaLab
08.10.2025 16:40А где про ИИ, я ни слова не увидел?!

mrMazai Автор
08.10.2025 16:40Основная идея, используем ДРАКОН -> JSON -> Промпт для LLM
В конце статьи добавил еще один вариант применения с ИИ.
NeriaLab
08.10.2025 16:40Так и надо писать Дракон+LLM или Дракон+нейронная сеть, но не Дракон+ИИ. Где слова про разум, про интеллект, про "свободу мысли" или желаний ИИ?!

bondpuoq
08.10.2025 16:40Могли бы пояснить, почему именно дракон-схемы решили конвертировать, а не стандартные блок схемы? Не очень понятно, чем они нагляднее и понятнее и как именно метод такой визуальной организации информации может снизить вероятность ошибки по сравнению с блок-схемой, например, если человек, допустим, просто не мыслит системно и не разбирается в предметной области по которой составляет схему?

mrMazai Автор
08.10.2025 16:40Я много лет пользуюсь ДРАКОН, когда начал пользоваться ИИ захотел написать эту статью. Т.е. я начал использовать два своих рабочих инструмента в связке. Опять же, если человек не мыслит системно, визуализация его мыслей или поможет ему увидеть ошибки… ну или ему уже ничего не поможет )

alan008
08.10.2025 16:40Раньше по коду рисовали блок-схему, а теперь ИИ по блок-схеме пишет код. Прогресс свернул не туда :-D

af7
08.10.2025 16:40Погодите-погодите. Это кто это раньше рисовал блок схему по коду? Это называется reverse engineering. В нормальных учебных заведениях учат сначала составлять алгоритм в виде блок схемы (пусть то на бумаге или в голове), а затем писать код. Многие умельцы делали это наоборот, но в таком виде это не имеет смысла, разве что для того чтобы написать отчёт. Но концептуально блок схема всегда первична, и уже из неё пишется код. И правильность логики также проверяется на блок схеме.
Так что прогресс свернул очень даже туда! Отдавая процесс написания кода в руки ИИ, следует вспомнить незаслуженно забытые блок схемы, как абстрактный и пригодный именно для человека формат описания алгоритмов и логики. Недаром визуальное представление всё чаще всплывает в современных системах, особенно для workflows и автоматизаций.

alan008
08.10.2025 16:40Скажу честно, блок-схемы это совсем уж... Они подходят только для очень простого (мало ветвистого) кода и только когда у вас императивный язык и нет многопоточности, асинхронной обработки, всяких там Continuation, yield, анонимных методов, переданных в качестве параметра другого метода и т.д. Современный код исполняется сложнее, чем можно отразить на блок схеме.

mrMazai Автор
08.10.2025 16:40Как и документирование, можно описывать всё, можно не описывать, зависит от установок и подхода. В Алгоритмах так же, можно сделать принципиальную схему, вложенные блоки ДРАКОН это поддерживает, LLM тоже поймут, думаю. Всё можно описать блок-схемами. Нужно-ли, это вопрос.
Я обновил статью, дописал вариант когда связку «ДРАКОН -> JSON -> Промпт для LLM» можно использовать повторно — для управления системными промптами LLM и мне кажется, в таком виде это более перспективно.

TimurZhoraev
08.10.2025 16:40Для языка, претендующего как инструмент общего назначения, самый лучший тест - это написать компилятор/интерпретатор Дракона на самом Драконе. Так называемые Self-Hosting языки. Тем более что здесь первично фактически абстрактное синтаксическое дерево (JSON для этого мало подходит из-за проблемы циклических ссылок) и алгоритм. Скорее для обучения ИИ больше подойдёт описание проверяемой последовательности действий или непосредственно абстрактного синтаксического дерева.

mrMazai Автор
08.10.2025 16:40LLM, условно, понимают циклические ссылки, а «дерево решений» как-раз не предусматривает их, использовать циклы или нет, придется решить для себя на практике общения с LLM. Но и не обязательно использовать «схемы», в ДРАКОН есть «Карта мыслей», ее можно использовать как дерево решений для ИИ. В статье я больше хотел показать сам смысл перевода визуального представления на более понятный для LLM язык.


vasilisc
08.10.2025 16:40Для Linux систем в своё время упаковал drakon в snap. Если не являетесь хейтером snap, то welcome

daylightcat
08.10.2025 16:40Много, слишком много вопросов:
Почему ДРАКОН, а не любой другой способ записи алгоритмов: UML, BPMN, EPC, "тысячи их"?
Зачем отдавать схему "ненадежному" ИИ, когда есть специализированные решения для конвертации диаграмм в код?
Ну и зачем было "рисовать" на зыке описания алгоритмов структуру документа, для которой нужен язык разметки?
Ох...

itGuevara
08.10.2025 16:40когда есть специализированные решения для конвертации диаграмм в код?
в JS - какие?

daylightcat
08.10.2025 16:40а) я не утверждал, что "есть специализированные решения для конвертации" ЛЮБЫХ диаграмм в код на ЛЮБОМ языке.

mrMazai Автор
08.10.2025 16:40В DrakonHub онлайн, есть конвертация в JS (раньше точно была, сейчас не знаю, пользуюсь дексктопной)

mrMazai Автор
08.10.2025 16:40Я дополнил статью, в дополнении, наверное, родилось более красивое решение для ДРАКОН с ИИ. Я хотел показать ход мысли, а как использовать каждый сам решит. «Зачем рисовать» — это именно для того, чтобы показать, что можно применять в разных вариантах, не обязательно для программирования, в подписи к картинке я написал «Как К2 видит предыдущую схему, хотя она алгоритмически не совсем верна, ИИ нормально понял задачу», т.е. это просто вариант применения, не совсем правильный, но возможный.

Rsa97
08.10.2025 16:40ДРАКОН — визуальный язык
Дракон - не язык. Это максимум нотация или стайлгайд для блок-схем. Ну или покажите мне программу или описание процесса на драконе, но не используя любой другой язык, как естественный, так и программирования.
Его разработали для задач высокой ответственности, где ошибка недопустима.
Но дракон, сам по себе, не гарантирует от ошибок. Как он защищает, например, от деления на ноль или от взаимоблокировки двух процессов?
Для примера я возьму простую задачу, понятную всем
А возьмите другой пример, скажем, из JavaScript с асинхронностью, промисами (обещаниями) и каллбэками. Как будет выглядеть для него схема на драконе?
пример
function foo() { const promise = new Promise((resolve, reject) => { setTimeout( () => { reject(new Error('Time is out!')); }, 1000, ); }); promise .then( (result) => { alert(`Fulfilled: ${result}`); }, (error) => { alert(`Rejected: ${error.message}`); }, ); alert('Timer is armed'); }
MAXH0
Идея интересная. Надо дать школьникам пощупать границы применимости методов.
Компиляция блок-схемы в код на Python, конечно, выглядит как жесть. НО сама идея меня заинтересовала.
randomsimplenumber
Уже есть scratch.
А так, задачи, для которых в далекие 80е придуман Дракон, решаются наличием IDE. А для больших проектов Дракон непригоден чуть более чем полностью. Вот как будет выглядеть diff двух простыней ? Можно ли его приложить к третьей как patch?
MAXH0
У scratch есть ключевой недостаток. А Дракон - это скрепно, державно и лампово. Кроме того, я не согласен, что Дракон, в принципе, не применим...
randomsimplenumber
Ну, в принципе, пристроить конечно можно. Но зачем? Большие проекты успешно пилят без. А кому синтаксис js сложное - может, они дверью ошиблись?
MAXH0
У меня ниша узкая - проекты школьников. Там он будет к месту. А дальше... Кто вообще знает, что будет после LLM сингулярности?
randomsimplenumber
Школьникам можно пихать в моск всякую ерунду, конечно. Тут программистская логика не работает;)
MAXH0
Всякая ерунда - scratch. По крайней мере в сравнении с блок-схемами. В том числе и Драконом. Вообще, формирование вербально-логического мышления тема интересная. И пока оно только формируется, тут, действительно, " программистская логика не работает;)" ... И есть разница 7 лет ребенку или 12. В 7 лет ляпать в scratch - самое то. А вот уже 10 лет ИМХО требует более серьезного подхода.
На самом деле я считаю, что LLM там жизненно необходим. Это костыль. и Дракон костыль. Это орудие, которое помогает на определенном этапе мышления, но которое нужно стремиться отбросить.
В промышленной разработке я не вижу ниши для Дракона, потому что он не лаконичен. Всё остальное решается.
randomsimplenumber
Но зачем, Холмс? Зачем оно 7-леткам? Без умения в абстракции, которое вырастет чуть позже, что оно дает? Кривую осанку?
MAXH0
Ну лично я этим не занимаюсь. Именно поэтому scratch и лежит вне моих педагогических интересов. 2 года протестировал и признал негодным. НЕТ, конечно, в 12 лет тоже можно делать проект на scratch. НО это дауншифтинг, ИМХО.
А так есть масса клубов которые обучают с 1 класса. Пока у родителей есть социальный заказ - его будут отрабатывать.
mrMazai Автор
Спасибо! Я добавил в статью еще один способ применения с ИИ и он кажется более перспективным.