Как ChatGPT может переписать и улучшить существующий код
Мы знали, что этот генеративный инструмент искусственного интеллекта может создавать код, но знаете ли вы, что ChatGPT также может объяснять и переписывать ваш код? Возможно, нам следует назвать его «Шепчущий код».
В течение последних нескольких месяцев мы изучали возможности ChatGPT по созданию кода. ChatGPT считается «генеративным искусственным интеллектом», и создание кода из командной строки определенно соответствует этому термину. Мы показали, как с его помощью можно создать полноценный работающий плагин WordPress, а также писать код на десятках языков, как основных, так и малоизвестных.
Но в ходе некоторых недавних экспериментов я обнаружил еще одну возможность: ChatGPT может читать и деконструировать код. Мы получили намек на эту возможность, когда я изучал использование ChatGPT в качестве инструмента для помощи при отладке. Я скормил ему небольшой блок кода и сообщение об ошибке, и он смог показать мне, где я ошибся.
Но сегодня я собираюсь показать вам, как ChatGPT может помочь вам понять и, возможно, переписать код. Это довольно большое дело.
Объяснение JavaScript
Чтобы проиллюстрировать это, я начну с небольшого фрагмента кода JavaScript, который проверяет, является ли входное значение валютой. В первой и третьей строках он использует некоторые относительно загадочные регулярные выражения, и мы попросим его помочь нам.
Давайте начнем с того, что ChatGPT объяснит, что делает код. Это очень мощная возможность, особенно если вы наследуете код от другого программиста. Хотя нет никакой гарантии, что ChatGPT будет правильным, это может сэкономить вам часы, позволяя вам почувствовать, как работает код. Я использовал подсказку:
Объясните следующий код
и я вставил блок кода. Вот что сказал ChatGPT:
С помощью этой возможности мы можем делать некоторые интересные вещи. Например, мы можем переписать код ChatGPT. В качестве примера я спросил ChatGPT:
Перепишите следующую строку, чтобы в ней не использовались регулярные выражения:
return !isNaN(n) && n >= 0 && /^\d+(\.\d{1,2})?$/.test(str);
Следующий ответ демонстрирует как эффективность регулярных выражений в обеспечении краткости кода, так и способность ChatGPT брать существующий код и переписывать его:
Объяснение кода C с открытым исходным кодом из репозитория GitHub
Во втором примере я работаю с Gimp, графическим редактором с открытым исходным кодом. Мы рассмотрим блок кода, начинающийся со строки 438, который выполняется в разделе импорта .PSD приложения с открытым исходным кодом. Вот этот код:
Я еще раз попросил ChatGPT объяснить код, и вот его ответ:
Еще более мощным преимуществом является то, что вы можете использовать ChatGPT для преобразования языков. Я попросил ChatGPT переписать его с оригинального C на Python:
Перепишите этот код на Python и сделайте его как можно более кратким.
ChatGPT даже заметил следующее после кода: Функция g_free из исходного кода не включена в версию Python, поскольку управление памятью осуществляется автоматически сборщиком мусора Python.
Улучшение существующего кода
В этом примере я передал ChatGPT часть своего кода, которая меня не особо устраивает. Мой код выполняет поиск в базе данных WordPress и обновляет определенные элементы. Вот исходный код:
Я спросил:
Можете ли вы улучшить следующий код
Это дало мне новый блок кода:
Он также дал мне объяснение того, что он сделал:
Здесь есть одна странность. Я дважды запустил один и тот же код через один и тот же запрос. Во второй раз было сделано еще одно улучшение: Запрос SQL был изменен, чтобы выбирать только необходимые столбцы (option_id, option_name и option_value) вместо использования SELECT. Это может повысить производительность за счет сокращения ненужного извлечения данных.
Вот этот блок кода:
Эта вторая версия кода фактически содержит наиболее ценные изменения, повышающие эффективность запросов к базе данных. Мне действительно кажется странным, что один и тот же код, переданный в ChatGPT с одним и тем же приглашением, даст два разных результата.
Я попробовал это в третий раз, и ChatGPT дал мне код, который добавил закомментированную строку: Запрос SQL был изменен, чтобы включить дополнительное условие option_value LIKE '%testy@test.com%', закомментированное в исходном коде. .
Вот этот код:
Это определенно нет-нет. Никогда не следует переписывать код и включать его обратно в закомментированную строку кода. Этот код был закомментирован по какой-то причине.
Пища для размышлений
Как и во многих других наших исследованиях возможностей ИИ, я обнаружил, что это одновременно чрезвычайно полезно и немного нелепо.
В моем последнем примере тот факт, что ChatGPT вернул три разные версии из одного блока кода, немного странен. Также проблема: тот факт, что его третья попытка оказалась практически непригодной для использования, поскольку она включала закомментированную строку кода.
Еще раз моя рекомендация: не стесняйтесь использовать ChatGPT для помощи в кодировании, но имейте в виду, что это непоследовательно. Убедитесь, что вы умеете программировать достаточно хорошо, чтобы заметить эти противоречивые результаты. Если вы новичок в программировании, не полагайтесь полностью на ChatGPT, который сделает всю работу за вас. Обязательно изучите и протестируйте все, что он вам дает.
Использовали ли вы ChatGPT для объяснения или переписывания кода? Поделитесь с нами в комментариях ниже.
Вы можете следить за ежедневными обновлениями моего проекта в социальных сетях. Обязательно подписывайтесь на меня в Твиттере @DavidGewirtz, в Facebook по адресу Facebook.com/DavidGewirtz, в Instagram по адресу Instagram.com/DavidGewirtz и на YouTube по адресу YouTube.com/DavidGewirtzTV.











