Ещё три года назад идея попросить нейросеть написать рабочий код казалась экспериментом для энтузиастов. Сейчас это обычная рабочая практика. Разработчики используют ИИ чтобы закрывать рутинные задачи быстрее, а люди без технического образования — чтобы решать задачи которые раньше требовали нанять специалиста.

Вопрос уже не «умеет ли нейросеть писать код». Вопрос — какая справляется лучше и в чём разница.

Взяли два инструмента с Study AI — Генератор кода и ChatGPT 5.3 Codex — и прогнали через два теста: написать код с нуля и найти ошибку в готовом. Смотрим что вышло.

Генератор кода vs ChatGPT 5.3 Codex
Генератор кода vs ChatGPT 5.3 Codex

Участники тестирования

Генератор кода

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

Хорошо справляется с генерацией с нуля, рефакторингом, поиском ошибок и объяснением чужого кода. Отвечает лаконично — без лишних слов вокруг кода.

Генератор кода
Генератор кода

ChatGPT 5.3 Codex

ChatGPT 5.3 Codex - это версия GPT специально оптимизированная для задач программирования. Умеет работать с кодом в широком контексте — понимает не только что написано, но и зачем, предлагает альтернативные подходы, объясняет решения развёрнуто.

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

ChatGPT 5.3 Codex
ChatGPT 5.3 Codex

Оба инструмента доступны на Study AI без VPN и лишних регистраций.

Тест 1: написать код с нуля

Задание

Написать на Python функцию которая переводит текст в азбуку Морзе. На вход — строка, на выходе — строка с точками и тире. Должна обрабатывать буквы, цифры и пробелы. Если символ не поддерживается — пропускать его.

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

Промт для обеих нейросетей

Напиши функцию на Python которая переводит текст в азбуку Морзе.
Вход: строка с текстом (буквы, цифры, пробелы).
Выход: строка с кодом Морзе, символы разделены пробелом,
слова разделены " / ".
Неподдерживаемые символы — пропускать без ошибки.
В конце покажи пример использования с выводом.

Генератор кода — результат

from typing import Dict

# International Morse code mapping for Russian + English letters and digits
MORSE_MAP: Dict[str, str] = {
    # Russian letters
    "а": ".-", "б": "-...", "в": ".--", "г": "--.", "д": "-..", "е": ".",
    "ё": ".", "ж": "...-", "з": "--..", "и": "..", "й": ".---", "к": "-.-",
    "л": ".-..", "м": "--", "н": "-.", "о": "---", "п": ".--.", "р": ".-.",
    "с": "...", "т": "-", "у": "..-", "ф": "..-.", "х": "....", "ц": "-.-.",
    "ч": "---.", "ш": "----", "щ": "--.-", "ъ": "--.--", "ы": "-.--", "ь": "-..-",
    "э": "..-..", "ю": "..--", "я": ".-.-",
    # English letters
    "a": ".-", "b": "-...", "c": "-.-.", "d": "-..", "e": ".", "f": "..-.",
    "g": "--.", "h": "....", "i": "..", "j": ".---", "k": "-.-", "l": ".-..",
    "m": "--", "n": "-.", "o": "---", "p": ".--.", "q": "--.-", "r": ".-.",
    "s": "...", "t": "-", "u": "..-", "v": "...-", "w": ".--", "x": "-..-",
    "y": "-.--", "z": "--..",
    # Digits
    "0": "-----", "1": ".----", "2": "..---", "3": "...--", "4": "....-",
    "5": ".....", "6": "-....", "7": "--...", "8": "---..", "9": "----.",
}

def text_to_morse(text: str) -> str:
    """Convert text to Morse code.
    Rules:
    - letters/digits are separated by a single space
    - words are separated by " / "
    - unsupported characters are skipped without error
    """
    words = text.lower().split()
    encoded_words = []
    for word in words:
        encoded_symbols = []
        for ch in word:
            morse = MORSE_MAP.get(ch)
            if morse is not None:
                encoded_symbols.append(morse)
        if encoded_symbols:
            encoded_words.append(" ".join(encoded_symbols))
    return " / ".join(encoded_words)

if __name__ == "__main__":
    sample_text = "Привет, World 123 !"
    result = text_to_morse(sample_text)
    print("Input:", sample_text)
    print("Morse:", result)

Вывод:

Input: Привет, World 123 !
Morse: .--. .-. .. .-- . - / .-- --- .-. .-.. -.. / .---- ..--- ...--

Сразу бросается в глаза: Генератор кода добавил полную поддержку русского алфавита — без дополнительного запроса. Все 33 буквы, включая ё, ъ, ы. Кроме того — аннотация типов через Dict[str, str], docstring с чёткими правилами, обработка регистра через .lower().

Результат генератора кода
Результат генератора кода

ChatGPT 5.3 Codex — результат

def text_to_morse(text: str) -> str:
    """
    Преобразует текст в азбуку Морзе.
    Правила:
    - Поддерживаются буквы (латиница), цифры и пробелы.
    - Символы в Морзе разделяются пробелом.
    - Слова разделяются " / ".
    - Неподдерживаемые символы пропускаются без ошибки.
    """
    morse_map = {
        # Буквы A-Z
        'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.',
        'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---',
        'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---',
        'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-',
        'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--',
        'Z': '--..',
        # Цифры 0-9
        '0': '-----', '1': '.----', '2': '..---', '3': '...--',
        '4': '....-', '5': '.....', '6': '-....', '7': '--...',
        '8': '---..', '9': '----.'
    }
    encoded_words = []
    # Разделяем по пробелам: каждое слово кодируем отдельно,
    # между словами затем ставим " / "
    for word in text.upper().split():
        encoded_chars = []
        for ch in word:
            code = morse_map.get(ch)
            if code is not None:  # неподдерживаемые символы пропускаем
                encoded_chars.append(code)
        if encoded_chars:  # добавляем только непустые слова
            encoded_words.append(' '.join(encoded_chars))
    return ' / '.join(encoded_words)

# Пример использования
input_text = "Hello 123 world!"
result = text_to_morse(input_text)
print("Вход:", input_text)
print("Выход:", result)

Вывод:

Вход: Hello 123 world!
Выход: .... . .-.. .-.. --- / .---- ..--- ...-- / .-- --- .-. .-.. -..

Codex поместил словарь прямо внутрь функции и добавил подробный docstring на русском. Код компактнее и читается как единое целое — всё в одном месте, ничего лишнего снаружи. Из минусов: только латиница, русский алфавит не поддерживается.

Результат ChatGPT 5.3 Codex
Результат ChatGPT 5.3 Codex

Итог теста 1

Оба написали рабочий код. Генератор кода пошёл дальше задания — добавил русский алфавит и вынес словарь на уровень модуля, что удобно если функция будет вызываться много раз. Codex придерживался задания точнее: только латиница, структура проще. Для быстрого прототипа подойдёт любой. Для кода который должен работать с русским текстом — однозначно первый.


Тест 2: найти и исправить ошибку

Код с ошибкой

Вот небольшая функция на Python. Она должна находить самый частый элемент в списке. Код выглядит правдоподобно — но в нём есть ошибка.

def most_frequent(numbers):
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 0  # <- вот здесь

    return max(counts, key=counts.get)

print(most_frequent([1, 2, 2, 3, 3, 3, 4]))

Где ошибка: в строке counts[num] = 0. Когда элемент встречается впервые, его счётчик устанавливается в 0 вместо 1. В итоге все элементы которые встречаются ровно один раз получают счётчик 0, а те что встречаются дважды — счётчик 1 (а не 2). Функция возвращает неправильный результат — в данном случае выдаст 2 вместо 3.

Промт для обеих нейросетей

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

[код вставляется полностью]

Генератор кода — результат

Нашёл ошибку сразу и точно:

Когда число встречается впервые, ты ставишь счётчик в 0, хотя первая встреча уже произошла. Из-за этого все частоты занижены на 1.

Исправленный код:

def most_frequent(numbers):
    if not numbers:
        raise ValueError("numbers must not be empty")
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 1  # первая встреча = 1
    return max(counts, key=counts.get)

if __name__ == "__main__":
    print(most_frequent([1, 2, 2, 3, 3, 3, 4]))  # 3

Помимо основного исправления добавил проверку на пустой список — чтобы max() не падал с неочевидной ошибкой. Лаконично и по делу.

Исправление ошибки в Генераторе кода
Исправление ошибки в Генераторе кода

ChatGPT 5.3 Codex — результат

Тоже нашёл ошибку, объяснил чуть подробнее:

Ошибка в строке инициализации счётчика: было counts[num] = 0, должно быть counts[num] = 1. Когда число встречается впервые, его частота уже равна 1. Если поставить 0, все частоты будут занижены на 1. В этом примере итог часто получается правильным — потому что относительный порядок частот сохраняется — но это логически неверный подсчёт и может привести к проблемам при дальнейшей обработке частот.

Исправленный код:

def most_frequent(numbers):
    if not numbers:
        raise ValueError("Список numbers не должен быть пустым")
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 1  # исправлено: первая встреча = 1, а не 0
    return max(counts, key=counts.get)

print(most_frequent([1, 2, 2, 3, 3, 3, 4]))  # 3

Тоже добавил проверку на пустой список — независимо от первого.

Исправление ошибок в ChatGPT 5.3 Codex
Исправление ошибок в ChatGPT 5.3 Codex

Итог теста 2

Оба нашли ошибку правильно и оба самостоятельно добавили проверку на пустой список — без запроса. Разница в подаче: Генератор кода — коротко, с пояснением. Codex — чуть подробнее, отдельно объясняет почему на конкретном примере результат всё равно иногда выходит верным — и это полезно если важно понять суть, а не просто получить фикс.

Вопросы и ответы

Подходит ли это для людей без опыта программирования? Да. Для простых задач — написать скрипт, автоматизировать таблицу, собрать парсер — опыт не нужен. Главное чётко описать что должна делать программа. Чем конкретнее описание, тем точнее результат.

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

На каком языке программирования лучше работают? Python — лучше всего, он был в обучающих данных больше всего. JavaScript, TypeScript, Go, Rust — тоже хорошо. Редкие или специфические языки — хуже, возможны ошибки.

Что лучше — Генератор кода или Codex? Зависит от задачи. Генератор кода — когда нужно быстро сделать или исправить. Codex — когда важно понять логику и получить подробное объяснение. Попробовать оба на своей задаче можно на Study AI.

Как правильно описывать задачу для лучшего результата? Указывайте язык, входные данные и ожидаемый результат. Если есть ограничения — напишите их сразу. «Напиши функцию на Python, вход — список чисел, выход — число, без использования сторонних библиотек» — это хороший промт.

Заключение

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

Разница между ними не в качестве, а в стиле и глубине. Генератор кода — быстро, компактно. ChatGPT 5.3 Codex — подробно, с комментариями и разбором логики. Для разных ситуаций подходят разные инструменты — и хорошо что они доступны в одном месте.

Попробовать написать код в нейросети на Study AI

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


  1. TerryChan2003
    13.05.2026 09:44

    Уже 5.5 вышла


  1. sami777
    13.05.2026 09:44

    1. А что не добавили в сравение Qwen и deepseek, думаю обы бы справились не хуже. Ибо оба теста мягко говоря слабоваты. 2. А по цене, что ваш генератор кода заметно дешевле codex?


  1. grucshetsky_aleksei
    13.05.2026 09:44

    Автор эстонец? Уже 2 версии gpt вышло после 5.3


  1. MrLimon
    13.05.2026 09:44

    По моему статья из 2022 или 2023, потому что уровень задач буквально как первый опыт работы с gpt-3


  1. BroniTimGert
    13.05.2026 09:44

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


  1. zIs
    13.05.2026 09:44

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