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

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

Сейчас в разработке популярна практика «вайбкодинга»: программист описывает задачу на словах, а ИИ генерирует код. Иногда это срабатывает, но чаще приходится много раз объяснять, где нужны исправления и что следует проверить. Слова не всегда передают логику. Легко упустить важные проверки, граничные случаи и последовательность действий. В результате мы ловим баги на ровном месте, что только усложняет процесс разработки.

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

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

Что такое ДРАКОН и чем он полезен?

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

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

Главные правила ДРАКОН:

  • Читается сверху вниз

  • Без пересекающихся стрелок

  • Единые блоки для условий, циклов и действий

  • Масштабирование детализации: от общей карты до конкретных шагов

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

Пример: определение возрастной категории пользователя

Для примера я возьму простую задачу, понятную всем: «Определить возрастную категорию пользователя». Я хотел бы расписать классическую для программирования задачу коммивояжёра, но с ней становится слишком много кода. Моя цель — передать именно логику подхода, а не запрограммировать что-то сложное.

Расписываем логику задачи в ДРАКОН-схеме
Расписываем логику задачи в ДРАКОН-схеме

Логика задачи:

  1. Спросить возраст.

  2. Если возраст меньше 0 или больше 150 — попросить ввести снова.

  3. Иначе проверить по порогам:

    • < 13 → «Ребёнок»

    • < 18 → «Подросток»

    • < 65 → «Взрослый»

    • Иначе → «Пожилой»

  4. Вывести результат.

Такую схему удобно представить визуально в редакторе ДРАКОН. Она хранится в структурированном виде (JSON): у каждого блока есть тип (вопрос, действие, выбор), входы и выходы. Для человека это картинка, а для ИИ — точная спецификация, по которой можно сгенерировать код на Python, PHP, JS и других языках, без предположений о том, «что автор имел в виду».

Как AI «читает» ДРАКОН схемы

Модели ИИ могут:

  • Разобрать структуру (последовательности, ветвления, циклы).

  • Перевести блоки в код (вопрос → if, действие → присваивание/вызов, цикл → while/for).

  • Проверить логику (мертвые ветки, непокрытые случаи, лишние проверки).

  • Собрать документацию на естественном языке.

ДРАКОН-схема представленная в JSON в виде дерева и текста
ДРАКОН-схема представленная в JSON в виде дерева и текста
{
    "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 видит предыдущую схему, хотя она алгоритмически не совсем верна, ИИ нормально понял задачу
Как К2 видит предыдущую схему, хотя она алгоритмически не совсем верна, ИИ нормально понял задачу

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


UPD:

В обсуждении появился лучший вариант применения ДРАКОН-схем:

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

А теперь другой подход. Расписываете в ДРАКОН'е весь алгоритм:

— Определи тип запроса: вопрос, жалоба, команда.
— Если вопрос — классифицируй по теме.
— Достань контекст из базы/FAQ.
— Сформируй ответ по шаблону.
— Проверь: нет выдуманных фактов? Если есть — пересобери.

Где это заходит лучше всего — в повторяющихся процессах:
— Модерация сообщений и жалоб.
— FAQ и поддержка.
— Разбор форм/заявок.
— Классификация тикетов.

Плюсы:
— Меньше галлюцинаций, предсказуемые ответы.
— Можно версионировать алгоритмы и делать A/B-тесты.
— Легче разбирать ошибки по шагам.

ДРАКОН выдаёт это в JSON, а LLM хорошо понимают такие промпты — схему можно сразу использовать как часть промпта.

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

Плюс на выходе получаете алгоритм — значит, можете сравнивать разные версии, проводить A/B-тесты. Можно получить неплохой выигрыш в качестве.


Комментарии (44)


  1. MAXH0
    08.10.2025 16:40

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


    1. randomsimplenumber
      08.10.2025 16:40

      Уже есть scratch.

      А так, задачи, для которых в далекие 80е придуман Дракон, решаются наличием IDE. А для больших проектов Дракон непригоден чуть более чем полностью. Вот как будет выглядеть diff двух простыней ? Можно ли его приложить к третьей как patch?


      1. MAXH0
        08.10.2025 16:40

        У scratch есть ключевой недостаток. А Дракон - это скрепно, державно и лампово. Кроме того, я не согласен, что Дракон, в принципе, не применим...


        1. randomsimplenumber
          08.10.2025 16:40

          Ну, в принципе, пристроить конечно можно. Но зачем? Большие проекты успешно пилят без. А кому синтаксис js сложное - может, они дверью ошиблись?


          1. MAXH0
            08.10.2025 16:40

            У меня ниша узкая - проекты школьников. Там он будет к месту. А дальше... Кто вообще знает, что будет после LLM сингулярности?


            1. randomsimplenumber
              08.10.2025 16:40

              Школьникам можно пихать в моск всякую ерунду, конечно. Тут программистская логика не работает;)


              1. MAXH0
                08.10.2025 16:40

                Всякая ерунда - scratch. По крайней мере в сравнении с блок-схемами. В том числе и Драконом. Вообще, формирование вербально-логического мышления тема интересная. И пока оно только формируется, тут, действительно, " программистская логика не работает;)" ... И есть разница 7 лет ребенку или 12. В 7 лет ляпать в scratch - самое то. А вот уже 10 лет ИМХО требует более серьезного подхода.
                На самом деле я считаю, что LLM там жизненно необходим. Это костыль. и Дракон костыль. Это орудие, которое помогает на определенном этапе мышления, но которое нужно стремиться отбросить.
                В промышленной разработке я не вижу ниши для Дракона, потому что он не лаконичен. Всё остальное решается.


                1. randomsimplenumber
                  08.10.2025 16:40

                  В 7 лет ляпать в scratch

                  Но зачем, Холмс? Зачем оно 7-леткам? Без умения в абстракции, которое вырастет чуть позже, что оно дает? Кривую осанку?


                  1. MAXH0
                    08.10.2025 16:40

                    Ну лично я этим не занимаюсь. Именно поэтому scratch и лежит вне моих педагогических интересов. 2 года протестировал и признал негодным. НЕТ, конечно, в 12 лет тоже можно делать проект на scratch. НО это дауншифтинг, ИМХО.
                    А так есть масса клубов которые обучают с 1 класса. Пока у родителей есть социальный заказ - его будут отрабатывать.


    1. mrMazai Автор
      08.10.2025 16:40

      Спасибо! Я добавил в статью еще один способ применения с ИИ и он кажется более перспективным.


  1. NeriaLab
    08.10.2025 16:40

    А где про ИИ, я ни слова не увидел?!


    1. mrMazai Автор
      08.10.2025 16:40

      Основная идея, используем ДРАКОН -> JSON -> Промпт для LLM
      В конце статьи добавил еще один вариант применения с ИИ.


      1. NeriaLab
        08.10.2025 16:40

        Так и надо писать Дракон+LLM или Дракон+нейронная сеть, но не Дракон+ИИ. Где слова про разум, про интеллект, про "свободу мысли" или желаний ИИ?!


      1. acc0unt
        08.10.2025 16:40

        Не обращай внимания. Это местный помешанный, который орёт про "ЭТОТ ВАШ ИИ НЕНАСТОЯЩИЙ" в каждом посте.

        Ну и про то, что у него есть НАСТОЯЩИЙ ИИ. Но никому он его не покажет.


        1. mrMazai Автор
          08.10.2025 16:40

          Спасибо! Понял-принял! )


  1. bondpuoq
    08.10.2025 16:40

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


    1. mrMazai Автор
      08.10.2025 16:40

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


  1. alan008
    08.10.2025 16:40

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


    1. af7
      08.10.2025 16:40

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

      Так что прогресс свернул очень даже туда! Отдавая процесс написания кода в руки ИИ, следует вспомнить незаслуженно забытые блок схемы, как абстрактный и пригодный именно для человека формат описания алгоритмов и логики. Недаром визуальное представление всё чаще всплывает в современных системах, особенно для workflows и автоматизаций.


      1. alan008
        08.10.2025 16:40

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


        1. mrMazai Автор
          08.10.2025 16:40

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


  1. TimurZhoraev
    08.10.2025 16:40

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


    1. mrMazai Автор
      08.10.2025 16:40

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


  1. vasilisc
    08.10.2025 16:40

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


  1. daylightcat
    08.10.2025 16:40

    Много, слишком много вопросов:

    Почему ДРАКОН, а не любой другой способ записи алгоритмов: UML, BPMN, EPC, "тысячи их"?

    Зачем отдавать схему "ненадежному" ИИ, когда есть специализированные решения для конвертации диаграмм в код?

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

    Ох...


    1. itGuevara
      08.10.2025 16:40

      когда есть специализированные решения для конвертации диаграмм в код?

      в JS - какие?


      1. daylightcat
        08.10.2025 16:40

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

        б) https://letmegooglethat.com/?q=uml+to+javascript


      1. mrMazai Автор
        08.10.2025 16:40

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


    1. mrMazai Автор
      08.10.2025 16:40

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


  1. 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');
    }