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
