3,583 papers
arXiv:2510.00946 73 1 окт. 2025 г. FREE

Использование ChatGPT в обучении программированию: когда помогает, когда вредит

КЛЮЧЕВАЯ СУТЬ
Парадокс: ChatGPT делает твой код лучше, но не делает тебя лучшим программистом. Исследование на начинающих (CS1, язык C) показало: студенты с ChatGPT писали более качественный код и справлялись в 4-5 раз быстрее, но их концептуальное понимание было смешанным — хуже на одной теме, лучше на другой. Метод позволяет разделить использование ChatGPT на практическую помощь и обучение концептам — не получать готовый код, а прокачивать понимание. Механика: сначала пиши сам, потом проверяй с ChatGPT по структурированной рубрике из 5 категорий (корректность, эффективность, качество, обработка ошибок, предупреждения). Ты получаешь не просто "код хороший/плохой", а конкретные метрики что именно улучшить.
Адаптировать под запрос

TL;DR

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

Качество кода и понимание концептов — это разные навыки. ChatGPT улучшил все метрики code quality: корректность, читаемость, обработку ошибок. Студенты завершали задания в 4-5 раз быстрее. Но на концептуальных тестах результаты были смешанными. Парадокс: ты можешь написать правильный код с ChatGPT, но не понять почему он правильный. Когда ChatGPT пишет за тебя, ты получаешь готовый результат без процесса обдумывания.

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


🚀

Пример применения

Задача: Ты учишь Python и проходишь тему "словари". Преподаватель дал задачу: написать функцию, которая находит самое частое слово в тексте.

❌ НЕ делай так:

Напиши функцию на Python, которая находит самое частое слово в тексте.

→ Ты получишь готовый код, но не поймёшь логику.

✅ Делай так:

Шаг 1: Попробуй сам (даже если криво)

# твоя попытка
def most_frequent_word(text):
 # ... твой код
```

**Шаг 2:** Попроси проверить по рубрике
```
Проверь мой код по рубрике качества:

Корректность: работает ли для всех случаев (пустой текст, знаки препинания)?
Эффективность: можно ли оптимизировать?
Качество: понятны ли имена переменных, есть ли комментарии?
Обработка ошибок: что если текст пустой или None?

[твой код]

Оцени каждый пункт (1.0 = отлично, 0.5 = частично, 0 = плохо) и объясни ЧТО не так.
```

**Шаг 3:** Разбери ошибки
```
Ты сказал что у меня проблема с обработкой пустого текста. 
Объясни ПОЧЕМУ это проблема и как её решить концептуально (не давай готовый код).
```

**Шаг 4:** Исправь сам
→ Ты исправляешь код самостоятельно, опираясь на объяснение.

**Результат:**
Ты не просто получаешь правильный код — ты **понимаешь** как работают словари, циклы, обработка edge cases. Исследование показало: студенты которые сначала пробовали сами показали лучшее концептуальное понимание на некоторых темах.

---

## Почему это работает

LLM отлично видит **поверхностные паттерны кода**: синтаксические ошибки, неиспользуемые переменные, нечитаемые имена. Но понимание **почему** код работает — это другой навык, который формируется через самостоятельное решение задач.

Когда ты пишешь код сам, ты **вынужден разобраться в логике**. Ты думаешь: "Как хранить частоту слов? Словарь? Список кортежей? Как обновлять счётчик?" Этот процесс размышления и есть обучение.

Когда ChatGPT пишет за тебя, ты получаешь **готовый результат без процесса**. Ты видишь что код работает, но не прошёл путь от проблемы к решению. Исследование показало: студенты с ChatGPT писали лучше код, но на вопрос "для чего нужны функции?" группа без ChatGPT ответила правильно чаще.

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

Рубрика работает потому что **структурирует обратную связь**. Вместо "код хороший/плохой" ты получаешь конкретные метрики по пяти категориям. Это помогает учиться системно — ты видишь что именно надо улучшить.

---

## Шаблон промпта
```
Проверь мой код по рубрике качества для начинающих программистов:

**Корректность:**
- Проходит ли код все test cases?
- Обрабатывает ли edge cases и граничные значения?
- Выдаёт ли осмысленные сообщения об ошибках?

**Эффективность:**
- Оптимальна ли логика по времени и памяти?
- Можно ли упростить без потери функциональности?

**Качество кода:**
- Понятные имена переменных и функций?
- Есть ли комментарии для сложной логики?
- Код структурирован и форматирован?
- Нет ли неиспользуемых функций, параметров, переменных?

**Обработка ошибок:**
- Проверяется ли валидность входных данных?
- Обрабатываются ли некорректные входные данные?

**Предупреждения:**
- Нет ли неинициализированных переменных?
- Нет ли проблем с типами данных (например, float для денежных сумм)?

[вставь свой код]

Язык: {Python/JavaScript/C/другой}

Оцени каждый раздел (1.0 = отлично, 0.5 = частично, 0 = плохо) и дай конкретные рекомендации по улучшению.
```

Подставь свой код и язык программирования. ChatGPT проанализирует код по всем пунктам и даст конкретные советы что исправить.

---

## Ограничения

> ⚠️ **Не заменяет практику:** Проверка кода с ChatGPT не заменяет написание кода самостоятельно. Если всегда полагаешься на AI, концептуальное понимание страдает. Исследование показало что студенты которые получали готовый код от ChatGPT хуже справлялись с концептуальными вопросами по некоторым темам.

> ⚠️ **Зависит от темы:** Эффект ChatGPT на концептуальное понимание непредсказуем. В исследовании для одной темы (структуры данных) ChatGPT помог понять концепты, для другой (функции) — навредил. Причины этой разницы пока неясны.

> ⚠️ **Не для production кода:** Рубрика разработана для учебного кода начинающих программистов. Для рабочих проектов нужны дополнительные критерии: безопасность, масштабируемость, поддерживаемость, соответствие стандартам команды.

---

## Как исследовали

Команда провела **counterbalanced эксперимент** с 27 студентами начального курса программирования на C. Разделили на две группы: Group A делала первое задание (тема "функции") **с ChatGPT**, второе (тема "структуры данных") **без ChatGPT**. Group B — наоборот. Такой дизайн устраняет эффект порядка заданий.

Каждое задание включало 3 задачи на программирование. Измеряли:
- **Code quality** через детальную рубрику из 5 категорий (корректность, эффективность, читаемость, обработка ошибок, предупреждения компилятора)
- **Время выполнения** задания и пост-теста
- **Концептуальное понимание** через вопросы после задания
- **Восприятие студентов** через опросы

Два независимых оценщика проверяли код по рубрике. Согласие между ними высокое (κ = 0.87).

**Ключевые находки:**

**Code quality:** С ChatGPT код был **значительно лучше** по всем метрикам. Для темы "функции": средний балл 2.0 vs 1.1 у контрольной группы (t = 4.46, p = 0.018). Для темы "структуры": 2.5 vs 1.2 (t = 5.02, p < 0.001). Наибольшие улучшения — в корректности и анализе предупреждений компилятора.

**Время выполнения:** С ChatGPT студенты работали **в 4-5 раз быстрее**. Тема "функции": 495 секунд vs 2385 секунд. Тема "структуры": 868 секунд vs 1934 секунды. Разница статистически значима в обоих случаях.

**Концептуальное понимание:** Результаты **неоднозначные**. Для темы "функции" группа с ChatGPT показала хуже результаты на большинстве вопросов (кроме одного про "использование функций" — там 91.7% правильных ответов vs 0% у контрольной группы). Для темы "структуры" группа с ChatGPT показала лучше (U = 77.0, p = 0.0457), но ни один отдельный вопрос не показал значимой разницы.

**Парадокс:** Студенты писали правильный код с ChatGPT, но не всегда понимали **почему** он правильный. Инструмент который помогает **делать** не всегда помогает **понимать**.

---

## Адаптации и экстраполяции

💡 **Адаптация для самообучения любому навыку:**

Принцип "практика ≠ понимание" универсален за пределами программирования. Можно адаптировать подход для любого обучения с AI:

1. **Сначала попробуй сам** — реши задачу без AI (даже если получится плохо)
2. **Используй AI для проверки** — попроси оценить твоё решение по критериям
3. **Разбери ошибки с AI** — пойми **почему** твоё решение неправильно
4. **Повтори сам** — исправь ошибки без AI

Пример для изучения Excel:
```
Я учу Excel и создал формулу для расчёта среднего по условию. 
Проверь мою формулу:

=СРЗНАЧЕСЛИ(A2:A100;"Москва";B2:B100)

Оцени по критериям:
1. Корректность: работает ли для всех случаев?
2. Эффективность: можно ли проще/быстрее?
3. Читаемость: понятна ли логика?
4. Обработка ошибок: что если данные некорректные?

Объясни ЧТО не так, но не давай готовую исправленную формулу.
```

---

💡 **Адаптация рубрики для других языков программирования:**

Рубрика из исследования для C легко адаптируется под Python, JavaScript, SQL и другие языки.

**Для Python добавь:**
- Следование PEP 8 (стиль кода)
- Использование list comprehensions где уместно
- Правильное использование типов данных (list, dict, set, tuple)
- Type hints для функций

**Для JavaScript добавь:**
- Использование const/let вместо var
- Асинхронная обработка (async/await vs callbacks)
- Обработка null/undefined
- Деструктуризация объектов и массивов

**Для SQL добавь:**
- Использование индексов
- Избегание N+1 queries
- SQL injection защита
- Читаемость запросов (форматирование, aliases)

---

🔧 **Техника: Принудительная рефлексия**

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

Это заставляет тебя **объяснить** логику кода своими словами, а не просто получить исправленную версию. Ты не сможешь пройти дальше пока не разберёшься.

Пример диалога:
```
ChatGPT: Вопрос 1 — Почему ты используешь словарь, а не список для хранения частоты слов?

Ты: Потому что словарь позволяет быстро проверить есть ли слово и увеличить счётчик.

ChatGPT: Верно! Словарь даёт O(1) доступ по ключу. 
Вопрос 2 — Что случится если text = None?

Этот формат вопросов-ответов закрепляет понимание гораздо лучше чем просто чтение правильного кода.


🔗

Ресурсы

ChatGPT in Introductory Programming: Counterbalanced Evaluation of Code Quality, Conceptual Learning, and Student Perceptions

Shiza Andleeb, Brandon Kantorski, Jeffrey Carver The University of Alabama SIGCITE '25, November 6–8, 2025, Sacramento, California, USA


📋 Дайджест исследования

Ключевая суть

Парадокс: ChatGPT делает твой код лучше, но не делает тебя лучшим программистом. Исследование на начинающих (CS1, язык C) показало: студенты с ChatGPT писали более качественный код и справлялись в 4-5 раз быстрее, но их концептуальное понимание было смешанным — хуже на одной теме, лучше на другой. Метод позволяет разделить использование ChatGPT на практическую помощь и обучение концептам — не получать готовый код, а прокачивать понимание. Механика: сначала пиши сам, потом проверяй с ChatGPT по структурированной рубрике из 5 категорий (корректность, эффективность, качество, обработка ошибок, предупреждения). Ты получаешь не просто "код хороший/плохой", а конкретные метрики что именно улучшить.

Принцип работы

Процесс в 4 шага вместо "напиши готовое". Шаг 1: попробуй написать сам (даже криво). Шаг 2: попроси ChatGPT проверить код по рубрике — оценить каждую категорию (1.0 = отлично, 0.5 = частично, 0 = плохо) и объяснить ЧТО не так. Шаг 3: попроси объяснить ПОЧЕМУ это проблема концептуально, без готового кода. Шаг 4: исправь сам, опираясь на объяснение. Ключевое: ты проходишь путь от проблемы к решению, а не получаешь готовый результат. Рубрика структурирует обратную связь — вместо размытого отклика ты видишь 5 конкретных метрик.

Почему работает

ChatGPT отлично видит поверхностные паттерны кода: синтаксические ошибки, неиспользуемые переменные, нечитаемые имена. Но понимание почему код работает — это другой навык, который формируется через самостоятельное решение. Когда ты пишешь код сам, ты вынужден разобраться в логике: "Как хранить частоту слов? Словарь? Список кортежей?". Этот процесс размышления и есть обучение. Когда ChatGPT пишет за тебя, ты получаешь готовый результат без процесса. Исследование показало: студенты с ChatGPT писали лучше код, но на вопрос "для чего нужны функции?" группа БЕЗ ChatGPT ответила правильно чаще. Парадокс обучения: инструмент который помогает делать, не всегда помогает понимать. Рубрика работает потому что даёт 5 конкретных категорий вместо общего "хорошо/плохо" — ты видишь что именно надо улучшить.

Когда применять

Обучение программированию → конкретно для тех кто хочет научиться, а не просто получить готовый код, особенно когда изучаешь новую тему или синтаксис. Подходит для учебных проектов, домашних заданий, self-study. НЕ подходит: если нужен только результат без понимания (срочная задача на работе, прототип), или для production кода (там нужны дополнительные критерии: безопасность, масштабируемость, стандарты команды).

Мини-рецепт

1. Попробуй сам: Напиши код самостоятельно, даже если получится криво — главное попытаться разобраться в логике.
2. Проверь по рубрике: Скопируй промпт с рубрикой из 5 категорий (корректность, эффективность, качество кода, обработка ошибок, предупреждения), вставь свой код и язык программирования. Попроси оценить каждую категорию (1.0/0.5/0) и дать конкретные рекомендации.
3. Разбери ошибки концептуально: Для каждой проблемы попроси объяснить ПОЧЕМУ это проблема и как её решить концептуально, без готового кода. Пример: Ты сказал что у меня проблема с обработкой пустого текста. Объясни ПОЧЕМУ это проблема и как её решить концептуально (не давай готовый код).
4. Исправь сам: Внеси изменения самостоятельно, опираясь на объяснение. Повтори проверку по рубрике для исправленного кода.

Примеры

[ПЛОХО] : Напиши функцию на Python, которая находит самое частое слово в тексте — получишь готовый код, но не поймёшь логику работы словарей и циклов.
[ХОРОШО] : Сначала пишешь свою попытку, потом проверяешь: Проверь мой код по рубрике качества: 1. Корректность: работает ли для всех случаев (пустой текст, знаки препинания)? 2. Эффективность: можно ли оптимизировать? 3. Качество: понятны ли имена переменных, есть ли комментарии? 4. Обработка ошибок: что если текст пустой или None? [твой код] Оцени каждый пункт (1.0 = отлично, 0.5 = частично, 0 = плохо) и объясни ЧТО не так. Потом запрашиваешь: Объясни ПОЧЕМУ проблема с пустым текстом и как решить концептуально (без готового кода) → исправляешь сам.
Источник: ChatGPT in Introductory Programming: Counterbalanced Evaluation of Code Quality, Conceptual Learning, and Student Perceptions
ArXiv ID: 2510.00946 | Сгенерировано: 2026-01-12 00:47

Концепты не выделены.

📖 Простыми словами

Использование ChatGPT в обучении программированию: когда помогает, когда вредит

arXiv: 2510.00946

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

Это как качаться в спортзале, где за тебя штангу поднимает робот-экзоскелет. Формально упражнение выполнено, вес поднят, и со стороны всё выглядит красиво. Но твои мышцы при этом не растут, потому что они не почувствовали сопротивления. В программировании «сопротивление» — это когда ты полчаса тупишь над тем, как передать переменную в функцию. Если ChatGPT выдает ответ за секунду, ты проскакиваешь этап когнитивного усилия, и знание просто не прилипает к памяти.

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

Этот принцип универсален для любого обучения, будь то код, дизайн или тексты. Мы наблюдаем рождение иллюзии компетентности: ты видишь идеальный результат и веришь, что это ты такой умный, хотя на деле ты просто нажал кнопку. Исследование на языке C — это лишь частный случай, но механика везде одинаковая. Если инструмент решает задачу за тебя, он не учит тебя решать её в будущем. GEO и AI-поиск скоро завалят нас идеальными ответами, и навык «разбираться в деталях» станет дефицитным товаром.

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

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с