Сценарии использования ИИ для учебы на поверхности. Тот же ChatGPT как стандарт по умолчанию студенты (да и преподаватели тоже) используют для написания текстов (рефераты, курсовые, дипломы и тому подобное), для анализа данных, изучения языков и, конечно же, для решения задач. Поговорим же здесь про то, как можно использовать ChatGPT для обучения программированию. Типично, студенты и школьники "скармливают" чату условие своей задачки, а на выходе получают код программы на требуемом языке. Часто чат дает еще и объяснения основных моментов в коде, рассказывает про алгоритм. Так можно учиться программированию, имея под боком "умного" консультанта. Не всегда, правда, код чата адекватен, а решения полные. Но, это очевидные вещи. Попробуем тут составить список примеров, которые могут быть полезны и тем, кто изучает программирование и тем кто учит. Начнем с простого.
Анализ кода программы
Вы можете предложить чату фрагмент или готовый код программы или функции и попросить его:
рассказать какую задачу решает код;
объяснить код по строкам;
добавить комментарии в код;
найти в коде синтаксические ошибки;
найти в коде логические ошибки;
оптимизировать код (уменьшить расход памяти или ускорить выполнение);
уменьшить сложность алгоритма;
сменить парадигму, например создать классы (ООП);
Все перечисленные задания ChatGPT в состоянии выполнить, но вот качество реализации и правильность не гарантируется. Бывает, что он зацикливается на вашем задании и выдает одно и тоже. В этом случае не стоит мучить текущий диалог, а перепишите промт (уточняя задание и конкретизируя) и начните новый чат.
Перевод кода программы из одного языка в другой
С типовыми учебными задачами, которые уже решались когда-то и кем-то чат справляется без проблем. Новые и сложные задачи тоже может перевести с одного языка на другой, но тестировать результат всегда стоит. Иногда к коду можно добавить и текстовое условие задачи. Возможно стоит разбивать задачу на несколько простых. Приведем пример кода С++ для перевода (чтобы показать уровень сложности задач) с которым чат справляется без труда:
Стартовый код C++
#include
using namespace std;
int main()
{for (int i = 0; i < 5; i++)
for (int j = 0; j < 15; j++)
{cout << '+';}
cout << endl;}
return 0;}
Переведенный код Python
for i in range(5):
for j in range(15):
print('+', end='')
print()
Составление тестов для Moodle
К великой радости преподавателей, которым надо составлять тесты в разметке Moodle для дистанционного обучения или тестирования, ChatGPT может здорово помочь. Разметку GIFT или Aiken он знает и после небольших тренировок по вашей тематике, чат успешно генерирует тестовые вопросы с правильной разметкой. Приведем примеры таких тестовых вопросов:
::1::Кто разработчик языка Pascal?{
=Никлаус Вирт
~Блез Паскаль
~Билл Гейтс
~Питер Нортон
}
Пример генерации вопроса в чате ниже:
![Тестовый вопрос на соответствие Тестовый вопрос на соответствие](https://habrastorage.org/getpro/habr/upload_files/d30/736/97e/d3073697e78ad7bd3626dfc66d621635.jpg)
Больше примеров смотрите здесь - тут наши эксперименты с разными типами вопросов для тестов Moodle.
Составление блок-схем к коду
Пожалуй, это самое интересное. Вы точно помните свои муки, когда вам надо было нарисовать блок-схему к алгоритму или коду программы, когда вы начинали учить программирование. Все учителя этим грешат, требуя "прокачать" логику. Как показывает опыт, половине студентов это не надо, они в состоянии без картинок абстрагироваться и сразу писать логику алгоритма кодом. Но, блок-схему все равно надо рисовать. И в тех случаях, когда блок-схемы реально нужны тому, кому трудно писать код, и когда эта задача просто "обязаловка", ChatGPT может помочь. Правда есть еще один случай, когда блок-схема точно необходима студенту - при оформлении курсовой или дипломной работы всегда нужен контент для наполнения пояснительной записки. И тут блок-схемы - идеальный вариант. Работа смотрится солидно, есть куча картинок, а текста писать надо меньше.
Как это работает?
Очевидно, у студента, ученика или преподавателя бесплатная версия ChatGPT-3.5. А он не рисует картинок и тем более схем. Однако есть хитрость: вы можете попросить чат написать код для разметки PlantUML для вашей задачи по программированию - по условию задачи или по уже готовому коду. И, о чудо - чат умеет это. Дальше остается отправить этот код в соответствующий онлайн сервис и получить готовую блок-схему. Приведем для понимания пример кода PlantUML и блок-схему для него:
start
:Конструктор блок-схем;
while (Создать блок-схему?) is (Да);
:Вводим код блок-схемы;
:Блок-схема генерируется;
:Сохраняем картинку;
:Делимся с друзьями;
:Пишем комментарии;
endwhile (Нет);
stop
А теперь блок-схема:
![](https://habrastorage.org/getpro/habr/upload_files/96d/f8c/710/96df8c7103200b32cd83a065f7994c2d.png)
Для справки - синтаксис диаграмм UML и примеры блок-схем смотрите здесь.
Комментарии (19)
kozlov_de
25.03.2024 17:54Я часто прошу реализовать задачку в хаскель
Получается отличный код. Там говнокодить сложно.
А потом прошу перевести на нужный мне язык
anonymous
25.03.2024 17:54НЛО прилетело и опубликовало эту надпись здесь
odmin227
25.03.2024 17:54Я бы не сказал, что это какие то неочевидные примеры
GPT — generative pretrain transformer
Transformer ~ трансформация, превращение. Да и в целом все трансформеры работают по логике преобразования из X в Y.
И соответственно получили свою популярность в переводе текстов на разные языки -> нет проблем перевести из одного ЯП в другой ЯП при условии что модель обучена и имеет представление этих языков, то сможет и генерализацией понять косвенные зависимости между разные языками. (Ссылаюсь на посты и видосы Игоря Котенкова)
edh_krusher
25.03.2024 17:54Мне одному видится несопоставимость кода на си и на питоне в начале? Или я все же так язык уже забыл что не увидел сходства.
primats Автор
25.03.2024 17:54С кодом кажется все норм. На выходе результат одинаковый при выполнении.
edh_krusher
25.03.2024 17:54#include using namespace std;
int main()
{
**for (int i = 0; i < 5; i++)
****for (int j = 0; j < 15; j++)
****{
******cout << '+';
****}
**cout << endl;
}
return 0;}
Вот даже разложил. По тем канонам что я помню + будет печатать только во втором операторе, а енд вообще напечается после всех операторов. И более того лишняя закрывающая скобка, есть вероятность что потеряли открывающую скобку.
edh_krusher
25.03.2024 17:54Зашебись табуляции на хабре нет, так и пробелы в начале строки он стирает. Одно разочарование.
primats Автор
25.03.2024 17:54Вы первый, кто заметил что в коде С++ есть неточности. Поздравления. Так в том и замечательность этого примера, что ChatGPT "осознал" как должно быть и при переводе кода С++ в Python відал правильную работающую версию кода.
CharonIkh
25.03.2024 17:54Из моего опыта, Gemini справляются куда лучше, правда пока с русским у него беда, но на английском даже точнее выходит, в хорошую эру живем.
excoder
Вы так говорите, будто chatgpt-4 (DALL-E) нарисует блок-схему, да если бы. Разве что исполнить код, который отрендерит PlantUml или там dot. Да и потом, 20$ в месяц неужели нет, мне кажется люди (даже не в Москве уже) на такси больше тратят в неделю.
primats Автор
Нет, chatgpt-4 (DALL-E) не нарисует, и тут об этом не идет речь. Схема проста - chatgpt генерирует код PlantUML а уже по этому коду генерируется блок-схема.
zlengos
настолько ли chatgpt 4 лучше 3.5? я на протяжении года пользуюсь 3.5 чуть ли не каждый день, с деньгами щас туго, иногда задумываюсь, а стоит ли правда обновиться до 4 и платить 2500 или сколько там. какие есть удобные способы оплаты гпт4, не знаю какие есть лучшие сайты для приобретения карт иностранных банков и тд. если не трудно, расскажите пожалуйста
VBDUnit
Скажем так. Оно умеет рисовать + вероятность нести дичь понижена
primats Автор
Все зависит от ваших потребностей. Для описанного тут случая генерации кода plantUML для блок-схем версии 3.5 вполне хватает. Для изображений совсем бесплатно можно использовать Copilot в браузере Edge. 3.5+Copilot будет достаточно многим.
smind
Сильно лучше в определенных моментах в других так же, но я бы на 3.5 не вернулся
baguwka
Значительно лучше. 3.5 в целом уже давно сложно рассматривать как полезный инструмент.