Генератор кода vs ChatGPT 5.3 Codex — тестируем кто пишет код лучше

от автора

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

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

Взяли два инструмента с 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 digitsMORSE_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

нейросеть написать код, генератор кода нейросеть, chatgpt codex программирование, нейросеть для разработчиков, написать python код нейросеть, нейросеть найти ошибку в коде, codex vs генератор кода, study ai программирование, нейросеть вместо программиста, как написать код через нейросеть

ссылка на оригинал статьи https://habr.com/ru/articles/1034246/