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

В этой статье я разберу практический кейс: от простого алгоритма до готового кода через 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-тесты. Можно получить неплохой выигрыш в качестве.


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


  1. MAXH0
    08.10.2025 16:40

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


    1. randomsimplenumber
      08.10.2025 16:40

      Уже есть scratch.

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


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

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


  1. NeriaLab
    08.10.2025 16:40

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


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

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


  1. bondpuoq
    08.10.2025 16:40

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


  1. alan008
    08.10.2025 16:40

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


  1. TimurZhoraev
    08.10.2025 16:40

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


  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