Что нейросеть умеет в программировании, а что нет

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

  • Шаблонный код: CRUD-операции, парсинг файлов, скрипты автоматизации, конфиги.
  • Объяснение чужого кода — построчно или по блокам логики.
  • Перевод логики между языками (например, скрипт на Python в функцию на JavaScript).
  • Регулярные выражения и SQL-запросы по описанию схемы данных.
  • Черновые тесты, в том числе граничные случаи, если их явно перечислить.
  • Рефакторинг небольшого фрагмента с сохранением поведения.

Слабые места тоже стоит знать заранее:

  • Устаревшие версии API и библиотек — модель могла обучаться на старой документации, а метод или параметр с тех пор поменялся или устарел.
  • Выдуманные, но правдоподобные функции, параметры и даже названия пакетов — уверенным тоном, без пометки «не уверен».
  • Большие проекты целиком — нейросеть видит только то, что вставили в чат, или то, что открыл агент; она не держит в голове архитектуру всего репозитория.
  • Безопасность — код не проверяется на уязвимости специально, если об этом отдельно не попросить.

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

Как правильно задать вопрос по коду

Качество ответа почти всегда зависит от того, что вы указали в запросе, а не от «удачной» формулировки. Пять вещей, которые стоит включать почти всегда:

  • Язык и версия. Python 2 и 3, ES5 и современный TypeScript, PHP 7 и 8 — синтаксис и доступные функции отличаются.
  • Окружение. Фреймворк и его версия, ОС, если это важно (например, для путей к файлам), внешние зависимости.
  • Ожидаемое и фактическое поведение. Что должно было произойти и что произошло на самом деле — отдельно, а не одной фразой «не работает».
  • Точный текст ошибки. Полный traceback или сообщение консоли, а не пересказ своими словами — модель ориентируется на конкретный тип исключения и строку.
  • Минимальный воспроизводимый пример. Небольшой кусок кода, который воспроизводит проблему, с тестовыми данными вместо реальных — без паролей, ключей и персональных данных.
Плохой запросХороший запрос
«Почему не работает?»«Python 3.12, pandas 2.2. Функция должна вернуть отсортированный список, а возвращает пустой. Вот код и вывод: [код и результат]».
«Ошибка в коде, помоги»«Вот полный traceback: [текст ошибки]. Строка, на которую он указывает: [строка кода]. В чём причина и как исправить?»
«Напиши регулярку для email»«Regex на Python (модуль re) для проверки email в форме на фронте — не строгая RFC-валидация, а базовая проверка формата».
«Сделай функцию быстрее»«Вот функция (40 строк) и профиль cProfile — узкое место в цикле на строке 12. Как ускорить, не меняя сигнатуру функции?»

Если пока сложно формулировать запросы — общие приёмы разобраны в материале про составление промптов, здесь — только то, что специфично для кода.

Сценарии с примерами запросов

Ниже — частые задачи программиста в чате с ChatGPT: с примером запроса и тем, что обязательно стоит перепроверить в ответе.

Объяснить чужой код

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

Объяснение кода

«Объясни этот код на Python построчно. Отдельно — что делает декоратор @lru_cache и почему функция рекурсивная.»

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

Найти и исправить ошибку по трейсбеку

Вставляйте полный текст ошибки, а не «ругается на код». Traceback указывает точную строку и тип исключения — без него ответ превращается в гадание.

Отладка по traceback

«Python 3.12. Traceback: … KeyError: 'user_id'. Вот функция, которая падает: [код]. Почему возникает ошибка и как исправить, не убирая проверку типов?»

Что проверить: предложенное исправление часто убирает симптом (try/except вокруг проблемного места), а не причину — прочитайте объяснение полностью и убедитесь, что причина действительно устранена.

Написать функцию по спецификации

Опишите вход, выход и поведение при некорректных данных — иначе модель додумает это сама, и не факт, что так, как нужно вам.

Функция по спецификации

«Напиши функцию на TypeScript: принимает список заказов, возвращает сумму по статусу "paid". Пустой список — верни 0. Если сумма не число — выбрось ошибку. Добавь типы.»

Что проверить: граничные случаи — пустой вход, дубликаты, null/undefined — самое частое место, где сгенерированный код расходится с реальным техническим заданием.

Написать тесты на граничные случаи

Просите не «тесты вообще», а конкретные случаи: пустые данные, один элемент, дубли, кириллица и юникод, отрицательные и предельные значения.

Тесты на граничные случаи

«Напиши тесты на pytest для функции sort_users(): пустой список, один элемент, дубли имён, кириллические строки, None вместо списка.»

def test_sort_users_empty():
    assert sort_users([]) == []

def test_sort_users_none_raises():
    with pytest.raises(TypeError):
        sort_users(None)

Что проверить: запустите тесты на самом деле. Сгенерированные assert иногда подгоняются под текущее — возможно, ошибочное — поведение функции, а не под то, каким оно должно быть.

SQL-запрос по схеме

Дайте структуру таблиц — список колонок с типами или CREATE TABLE, а не описание словами. Укажите конкретную СУБД: диалекты PostgreSQL, MySQL и SQLite отличаются, особенно в работе с датами.

SQL по схеме

«Таблицы orders(id, user_id, status, amount, created_at) и users(id, email). PostgreSQL. Нужен запрос: сумма amount по каждому email за paid-заказы последних 30 дней.»

SELECT u.email, SUM(o.amount) AS total
FROM orders o
JOIN users u ON u.id = o.user_id
WHERE o.status = 'paid'
  AND o.created_at >= now() - interval '30 days'
GROUP BY u.email;

Что проверить: план запроса и индексы на больших таблицах, а также то, что функции дат и типы действительно соответствуют указанной СУБД — их легко перепутать.

Регулярное выражение

Регулярку нужно тестировать на реальных примерах, включая пограничные строки, а не доверять объяснению «эта регулярка ловит email».

Регулярное выражение

«Regex на Python для телефона в формате +7XXXXXXXXXX, ровно 10 цифр после +7. Покажи 3 строки, которые пройдут проверку, и 3, которые не должны.»

import re
re.fullmatch(r'\+7\d{10}', phone)

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

Рефакторинг

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

Рефакторинг

«Отрефактори эту функцию на Python: убери дублирование в циклах, не меняя сигнатуру и возвращаемый тип. Отдельно опиши, что изменилось.»

Что проверить: сравните поведение до и после на одинаковых входных данных, лучше — прогоните существующие тесты. Рефакторинг иногда незаметно меняет обработку граничных случаев.

Перевод с одного языка на другой

Перенос логики между языками — сильная сторона нейросети, но идиомы конкретного языка (итераторы, менеджеры контекста, работа с датами) переносятся не всегда буквально корректно.

Перевод логики

«Перепиши этот код с Python (pandas) на JavaScript без сторонних библиотек, сохранив логику агрегации по группам.»

Что проверить: типизацию, обработку null/undefined и округление чисел — языки по-разному работают с плавающей точкой и датами, из-за этого возникают тихие расхождения в результатах.

Документация и комментарии

Просите docstring в формате, принятом в проекте (Google style, NumPy, JSDoc), а не просто «добавь комментарии».

Документация к функции

«Добавь docstring в стиле Google для этой функции на Python: описание, Args, Returns, Raises.»

Что проверить: сверьте описание параметров с реальной сигнатурой функции — при последующих правках кода docstring не обновляется сам по себе и быстро расходится с кодом.

Как проверять код от нейросети

Ответ в чате — черновик, а не готовое решение. Прежде чем использовать код, стоит пройти по нескольким пунктам.

Запуск и тесты. Не переносите код в проект «на веру» — запустите его, прогоните существующие тесты, для нового кода отдельно попросите тесты или напишите их сами.

Существование библиотек. Нейросеть может уверенно посоветовать пакет, которого не существует в природе, — в англоязычных источниках это называют «слопсквоттингом» (slopsquatting): злоумышленники заранее регистрируют такие правдоподобные, но несуществующие имена в npm или PyPI и кладут туда вредоносный код, рассчитывая, что кто-то — человек или агент — установит пакет по совету нейросети без проверки.

Перед установкой проверяйте пакет на официальном реестре (pypi.org, npmjs.com): дату публикации, число загрузок, автора. Не ставьте зависимость только потому, что её назвал чат.

Лицензии. Если нейросеть предлагает крупный фрагмент кода «как в библиотеке X» — проверьте лицензию исходной библиотеки, прежде чем копировать его в закрытый коммерческий проект.

Безопасность. Параметризуйте SQL-запросы вместо конкатенации строк (защита от SQL-инъекций), не храните пароли и ключи прямо в коде — даже в примере «для наглядности», проверяйте пользовательский ввод перед использованием.

Короткий чек-лист перед тем, как код уходит в проект:

  • код запущен и покрыт тестами, а не просто «выглядит рабочим»;
  • все зависимости существуют и проверены в официальном реестре пакетов;
  • в коде нет захардкоженных секретов и токенов;
  • SQL-запросы параметризованы, а не собраны конкатенацией строк;
  • лицензия стороннего кода, если он скопирован, проверена;
  • для чувствительной логики (деньги, доступ, персональные данные) прошло ревью человеком.

ChatGPT, Codex или расширение в IDE: что выбрать

Все три варианта работают на одной и той же технологии OpenAI, но решают разные задачи.

ИнструментЧто делаетКогда использовать
Чат ChatGPTОтвечает на вопрос и показывает код в ответе; вы сами копируете его в проектРазовый вопрос, объяснение, небольшая функция, обучение
Codex (агент)Получает доступ к репозиторию, вносит правки сразу в нескольких файлах, запускает команды и тесты в песочнице, отдаёт готовый diffЗадача вида «поправь баг» или «добавь фичу», которая затрагивает несколько файлов реального проекта
Расширение в IDEРаботает прямо в редакторе: видит открытые файлы, предлагает правки на месте, при необходимости передаёт длинную задачу в облачный CodexПовседневная работа над проектом без переключения между чатом и редактором

Официальное расширение OpenAI для VS Code добавляет в редактор чат-панель, а для более крупных изменений передаёт задачу в облачную версию Codex — подробнее в документации ChatGPT Learn. О том, как им пользоваться и как подключить, — в материалах «Как пользоваться Codex» и «Как установить Codex».

Безопасность и конфиденциальность

Не вставляйте в диалог с нейросетью пароли, API-ключи, токены доступа, персональные данные пользователей и закрытый код работодателя без разрешения — даже «для примера» и даже если потом удалите сообщение. Замените реальные значения на тестовые заглушки — это не мешает получить полезный ответ.

Отдельная настройка касается обучения моделей на переписке. В личном аккаунте ChatGPT она находится в разделе Settings → Data controls и называется «Улучшать модель для всех» (Improve the model for everyone). Отключение останавливает использование новых диалогов для обучения, но не удаляет уже переданные ранее данные. На бизнес-тарифах (Business, Enterprise) данные по умолчанию для обучения не используются. Актуальное описание — в справке OpenAI по контролю данных.

Как учиться программированию с нейросетью и не разучиться думать

Если цель — не только получить код, но и разобраться, полезно менять формулировку запроса: просить объяснение подхода и наводящие вопросы вместо готового решения целиком. Например: «не пиши решение, задай мне два вопроса, которые помогут разобраться самому» или «покажи направление, дальше я допишу сам».

Стоит сначала попробовать написать код самостоятельно — хотя бы черновик — и только потом сверить с вариантом нейросети: так вырабатывается собственное понимание, а не привычка копировать ответ не глядя. Более общие приёмы такой работы — в материале про обучение с нейросетью.

Частые вопросы

Может ли ChatGPT написать программу целиком?

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

Какой язык программирования он знает лучше всего?

Качественнее всего модель работает с языками, для которых в открытом коде больше всего примеров, — Python, JavaScript и TypeScript, Java и им подобными. С нишевыми языками, старыми версиями фреймворков и внутренними DSL компании ответы менее надёжны — их стоит проверять внимательнее.

Можно ли доверять коду из ChatGPT?

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

Хватит ли бесплатной версии для программирования?

Для разовых вопросов и объяснений кода обычно хватает, а текстовые чаты на бесплатном плане с августа 2026 года идут без лимита по частоте; ограничены загрузки файлов и инструменты, а агент Codex на Free доступен лишь с небольшими лимитами и без облачных задач (они начинаются с Plus). Состав тарифов и лимиты периодически меняются — актуальную информацию смотрите на официальной странице тарифов OpenAI.

Чем ChatGPT отличается от Codex?

В чате ChatGPT отвечает и показывает код, который вы сами переносите в проект. Codex — агент: он получает доступ к репозиторию, сам вносит изменения сразу в несколько файлов, запускает команды и тесты в песочнице и отдаёт готовый diff. Подробнее — в материале «Как пользоваться Codex».

Можно ли подключить ChatGPT к VS Code?

Да, через официальное расширение издателя openai из маркетплейса VS Code — оно добавляет чат-панель прямо в редактор и, если задача крупная, передаёт её в облачный Codex. Как установить — в материале «Как установить Codex».

Итог / чек-лист

  • Указывайте язык, версию, окружение и точный текст ошибки — это решает большую часть проблем с качеством ответа.
  • Давайте минимальный воспроизводимый пример: без лишнего кода вокруг и без секретов внутри.
  • Для точечных правок хватает чата; для изменений сразу в нескольких файлах репозитория — переходите на агента Codex.
  • Запускайте и тестируйте всё, что получили от нейросети, — включая SQL-запросы и регулярные выражения.
  • Проверяйте существование пакетов в официальном реестре, прежде чем их устанавливать.
  • Не вставляйте в диалог токены, пароли, персональные данные и чужой закрытый код без разрешения.
  • Если цель — научиться, просите объяснение и наводящие вопросы, а не готовое решение целиком.