- BrainTools - https://www.braintools.ru -

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 1

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

Всё чаще ИИ даёт советы, которые оказываются лучше, чем изначальная задумка. Claude, ChatGPT, Qwen — эти модели уже не просто угадывают следующее слово, а демонстрируют понимание логики, стиля и даже контекста проекта. Они объясняют свои решения, исправляют баги, пишут тесты и даже помогают новичкам (и не только) разобраться в чужом коде.

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

Пора разобраться. Сравниваем трёх гигантов современного AI-программирования: Claude от Anthropic, ChatGPT от OpenAI и Qwen от Alibaba Cloud — в реальных сценариях, которые знакомы каждому разработчику.  

Приятного прочтения!  

Каким будет наше приложение? 

Мы создадим простой консольный калькулятор на C++ — минималистичный, но с полным набором базовых операций: сложение, вычитание, умножение и деление. Приложение будет поддерживать ввод с клавиатуры, обработку ошибок (например, деление на ноль) и цикл выполнения, чтобы пользователь мог выполнять несколько операций подряд без перезапуска.

Код должен быть чистым, читаемым, включать комментарии и, по возможности, разделять логику [1] на функции. Эти критерии позволят нам оценить, насколько хорошо каждая модель понимает не только синтаксис, но и архитектуру, реализует безопасность и удобство кода. 

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

Наш промпт будет таким: 

>>> Напиши простое консольное приложение на C++ — калькулятор, который выполняет четыре базовые арифметические операции: сложение, вычитание, умножение и деление. Используй С++ без сторонних библиотек.

Если вы тоже хотите попробовать какую-то модель из моего обзора, то переходите по этой ссылке [2] и пользуйтесь не только ими, но и многими другими нейросетями без использования VPN

Claude Sonnet 4 

Самый длинный код написала нейросеть Claude Sonnet 4 — вышло 122 строки кода.

Калькулятор получился довольно удобный, не нужно запускать заново для нового вычисления (да-да, такое здесь будет), поддерживает все операции, которые описаны в промпте. Есть обработчик ошибок при делении на ноль или неверном вводе. 

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 2

Разбор кода 

Claude подключил две библиотеки: iostream и limits.

  • <iostream> — стандартная библиотека для ввода/вывода (cin, cout);

  • <limits> — нужна для доступа к numeric_limits, чтобы очистить буфер ввода. 

void clearInputBuffer() { 
    cin.clear(); 
    cin.ignore(numeric_limits<streamsize>::max(), 'n'); 
} 

Если пользователь ввёл что-то не то (например, буквы вместо числа), cin «ломается» — устанавливается флаг ошибки [3].

double getNumber(const string& prompt) { 
    double number; 
    while (true) { 
        cout << prompt; 
        if (cin >> number) { 
            break; 
        } 
        else { 
            cout << "Ошибка: введите корректное число!" << endl; 
            clearInputBuffer(); 
        } 
    } 
    return number; 
} 

Данная функция запрашивает у пользователя число до тех пор, пока ввод не станет корректным, иначе — выводит ошибку.

char getOperation() { 
    char operation; 
    while (true) { 
        cout << "Введите операцию (+, -, *, /): "; 
        cin >> operation; 
 
        if (operation == '+' || operation == '-' || 
            operation == '*' || operation == '/') { 
            break; 
        } 
        else { 
            cout << "Ошибка: введите корректную операцию (+, -, *, /)!" << endl; 
            clearInputBuffer(); 
        } 
    }  
    return operation; 
} 

Здесь вводится одна из четырёх операций, проверяется, что символ допустимый, и возвращается правильный символ операции.

double calculate(double num1, double num2, char operation) { 
    switch (operation) {  
    case '+': 
        return num1 + num2; 
    case '-': 
        return num1 - num2; 
    case '*': 
        return num1 * num2; 
    case '/': 
        if (num2 != 0) { 
            return num1 / num2; 
        }
        else { 
            cout << "Ошибка: деление на ноль!" << endl; 
            return 0;  
        }  
    default: 
        cout << "Ошибка: неизвестная операция!" << endl; 
        return 0; 
    } 
}

Функция 1) выполняет арифметическую операцию в зависимости от символа, 2) проверяет, не делится ли на ноль, 3) при неизвестной операции выводит ошибку и 4) возвращает результат. 

int main() { 
    cout << "=== Простой калькулятор ===" << endl; 
    cout << "Поддерживаемые операции: +, -, *, /" << endl; 
    cout << "Для выхода введите 'q' в любой момент" << endl << endl; 

Вначале нас информируют о всех функциях калькулятора, НО… калькулятор предлагает ввести q для выхода из него, а данной команды нет в коде — она обрабатывается как ошибка.

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 3
 char continueChoice;

  do {

      // Ввод первого числа

      double num1 = getNumber("Введите первое число: ");

      // Ввод операции

      char operation = getOperation();

      // Ввод второго числа

      double num2 = getNumber("Введите второе число: ");

      // Выполнение вычисления

      if (operation == '/' && num2 == 0) {

          cout << "Результат: Невозможно выполнить деление на ноль!" << endl;

      }

      else {

          double result = calculate(num1, num2, operation);

          cout << "Результат: " << num1 << " " << operation << " "

              << num2 << " = " << result << endl;

      }

Здесь происходит ввод двух чисел и ещё одна проверка деления на ноль до вызова функции calculate(). Она лишняя, так как calculate() уже этим занимается. 

while (true) {

        cout << "Хотите выполнить еще одно вычисление? (y/n): ";

        cin >> continueChoice;

        if (continueChoice == 'y'  continueChoice == 'Y' 

            continueChoice == 'n' || continueChoice == 'N') {

            break;

        }

        else {

            cout << "Введите 'y' для продолжения или 'n' для выхода." << endl;

            clearInputBuffer();

        }

    }

    cout << endl;

} while (continueChoice == 'y' || continueChoice == 'Y');

cout << "Спасибо за использование калькулятора!" << endl;

return 0;

Калькулятор спрашивает, хочет ли пользователь продолжить пользоваться калькулятором, принимает Y/N и либо продолжает цикл, либо завершает программу.

ChatGPT 5: мощь экосистемы OpenAI и её подводные камни

После самого длинного кода идёт самый короткий, написанный ChatGPT 5.

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

Здесь можно сразу ввести нужное выражение, без отдельного выбора первого/второго числа и математического знака. Насколько оно удобно — решает каждый сам для себя, но мне больше нравится вариант ввода, который предоставили Claude Sonnet 4 и Qwen3 Coder.

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 4
Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 5
Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 6

Разбор кода

Начинается всё с приветствия и небольшой инструкции к приложению:

int main() {

    std::cout << "Простой калькулятор (+, -, *, /)n";

    std::cout << "Введите выражение в формате: a op bn";

    std::cout << "Пример: 12.5 * 3n";

Объявляет переменные, пытается считать с консоли верный ввод, иначе выдаёт ошибку.

double a, b;

char op;

if (!(std::cin >> a >> op >> b)) {

    std::cerr << "Ошибка ввода.n";

    return 1;

}

Появляется переменная результата и начинается switch, который проверяет, что за операция была введена.

double result;

switch (op) {

case '+':

    result = a + b;

    break;

case '-':

    result = a - b;

    break;

case '*':

    result = a * b;

    break;

При делении появляется проверка второй переменной — не является ли она нулём.

case '/':

    if (b == 0.0) {

        std::cerr << "Ошибка: деление на ноль.n";

        return 1;

    }

    result = a / b;

    break;

Если никакая операция не подошла, то выводит ошибку.

default:

    std::cerr << "Неизвестная операция: " << op << "n";

    return 1;

}

Вывод результата.

std::cout << "Результат: " << result << "n";

    return 0;

}

Qwen3 Coder: азиатский подход к масштабу и локализации

И последняя нейросеть на рассмотрении у нас — Qwen3 Coder.

Имеет 62 строки кода. Так же как и калькулятор от ChatGPT 5, приходится запускать заново для новой операции.

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 7
Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 8
Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 9

Разбор кода

Qwen начинает писать код с объявления переменных: два дробных числа для операций, одно для результата и символ самой операции.

int main() {

    double num1, num2, result;

    char operation;

Выводится текст и запрашивается первое число через оператор cin.

cout << "Простой калькуляторn";

cout << "Введите первое число: ";

cin >> num1;

cin.fail [4]() — проверяет, был ли ввод корректным (например, если пользователь вместо числа ввёл букву).

Если ввод некорректен, выводится ошибка и программа завершается с кодом 1 (стандартный код ошибки).

// Проверка на корректность ввода числа

if (cin.fail()) {

    cout << "Ошибка: Введено некорректное значение.n";

    return 1;

}

Дальше идёт то же самое, но с вводом операции и вторым числом. 

При вводе операции, если пользователь введёт несколько символов для операции (например, ++), будет обработан только первый символ (+), остальные останутся в буфере. Однако это некритично, так как следующий ввод (num2) пропустит лишние пробелы/символы.

cout << "Введите операцию (+, -, *, /): ";

cin >> operation;

cout << "Введите второе число: ";

cin >> num2;

// Проверка на корректность ввода числа

if (cin.fail()) {

    cout << "Ошибка: Введено некорректное значение.n";

    return 1;

}

И последний штрих — switch. Здесь происходят все вычисления, а также запрещается делить на ноль.

switch (operation) {

    case '+':

        result = num1 + num2;

        cout << "Результат: " << num1 << " + " << num2 << " = " << result << endl;

        break;

    case '-':

        result = num1 - num2;

        cout << "Результат: " << num1 << " - " << num2 << " = " << result << endl;

        break;

    case '*':

        result = num1 * num2;

        cout << "Результат: " << num1 << " * " << num2 << " = " << result << endl;

        break;

    case '/':

        if (num2 != 0) {

            result = num1 / num2;

            cout << "Результат: " << num1 << " / " << num2 << " = " << result << endl;

        }

        else {

            cout << "Ошибка: Деление на ноль невозможно.n";

        }

        break;

    default:

        cout << "Ошибка: Неверная операция. Пожалуйста, используйте +, -, * или /.n";

        break;

    }

Стиль, структура, безопасность: как нейросети пишут код по-разному

Когда мы просим разные ИИ-модели написать один и тот же код, мы получаем не просто разные реализации — мы видим разные идеи программирования, заложенные в их обучении [5]. Давайте глубже погрузимся в то, как Claude, ChatGPT и Qwen подходят к созданию кода, анализируя не только функциональность, но и качество написания.

Стиль программирования и структурные различия

Claude Sonnet 4 демонстрирует академический подход к коду с четким соблюдением принципов чистого кода и разделением ответственностей. Модель создает функции вроде getNumber и clearInputBuffer, но добавляет избыточные проверки вроде двойной обработки деления на ноль. 

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

Claude Sonnet 4 создает полноценное приложение с архитектурой:

  • четкое разделение на функции;

  • обработка состояния приложения;

  • поддержка пользовательского сеанса;

  • цикл событий с возможностью выхода. 

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

Вот как Sonnet 4 описал сгенерированный код:

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 10

ChatGPT 5 выбирает «трушный» C++-стиль, с использованием std::-префиксов и строгим следованием стандартам языка. 

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

ChatGPT предлагает алгоритмическую реализацию:

  • весь код в одной функции;

  • нет поддержки сеанса;

  • линейная обработка.

Решение скорее подходит как фрагмент кода для встраивания в другое приложение, чем как самостоятельный инструмент.

Особенностей своей программы ChatGPT не выдал :(

Особенностей своей программы ChatGPT не выдал :(

Qwen3 Coder использует «практичный» стиль программирования, объединяя всю логику в одной функции main() без излишней модульности, и обработка ввода и логика приложения переплетены в одном блоке.

Такой подход эффективен для быстрого прототипирования и простых утилит, но не подходит для сложных проектов, требующих поддержки и расширения.

Qwen занимает промежуточную позицию:

  • простая структура без дополнительных функций;

  • базовая обработка ошибок;

  • отсутствие поддержки сеанса.

Такой код напоминает тестовый проект, который написан для проверки работоспособности своей идеи. 

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 12

Сравнительный анализ

Анализируя все три подхода, можно сделать несколько практических выводов:

  • Для образовательных целей — Claude вне конкуренции: его код можно давать новичкам как пример правильной структуры и обработки ошибок. Но естественно, могут быть ошибки, как в нашем примере — избыточность проверок. 

  • Для быстрого прототипирования — Qwen идеален. Его код функционален, так как использует привычный интерфейс ввода (число, операция, число).

  • Для встраивания в другие проекты — ChatGPT выигрывает, благодаря своей лаконичности и чистому C++-стилю, без глобальных using

  • Для production-ready-решений — Claude снова в лидерах, благодаря многоуровневой обработке ошибок и поддержке пользовательского сеанса. 

Важно понимать: ни одна модель не «лучше» другой в абсолютном смысле: Claude перестраховывается, ChatGPT слишком минималистичен, Qwen слишком прост. Но именно эти различия делают их полезными в разных сценариях.

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

Таблица для тех, кто не любит читать 

Топ AI-моделей для генерации кода: Claude, ChatGPT, Qwen — сравниваем гигантов - 13

Выводы

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

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

Если Вы считаете по-другому, или знаете более действенный способ генерации кода, то пишите в комментарии! 

Спасибо за прочтение! 

Автор: Morgothraw

Источник [6]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/18348

URLs in this post:

[1] логику: http://www.braintools.ru/article/7640

[2] по этой ссылке: https://bothub.chat/?invitedBy=m_aGCkuyTgqllHCK0dUc7

[3] ошибки: http://www.braintools.ru/article/4192

[4] cin.fail: http://cin.fail

[5] обучении: http://www.braintools.ru/article/5125

[6] Источник: https://habr.com/ru/companies/bothub/articles/937314/?utm_source=habrahabr&utm_medium=rss&utm_campaign=937314

www.BrainTools.ru

Rambler's Top100