ChatGPT – хайп или реальная помощь разработчику?

от автора

Одна из хайповых тем последней недели в англоязычном Твиттере – релиз ChatGPT от OpenAI. Чат-бот который, по задумке авторов, может писать код, фиксить баги, и отвечать на сложные вопросы.

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

Пример 1

Давайте начнем с простого. Хочу найти элемент в срезе (slice) – расширенном аналоге массива. Давайте зададим вопрос боту. MA в этом чате и далее – это я.

Что хорошо:

  • Код компилируется, есть пример применения бинарного поиска

  • Есть выводы сообщений «найден/не найден»

  • Есть базовые объяснения алгоритма, хотя упоминается функция Index, подразумевается Search.

Что плохо:

  • Код, конечно, не работает как надо, т.е. срез не отсортирован, а это основное требование к бинарному поиску. Но говорится, что массив д.б. отсортирован.

  • Выглядит сложно для новичка. Я бы предпочел цикл или пакет slices и IndexFunc, если не было явного требования о «быстром» поиске.

Пример 2

Но давайте явно укажем, что массив не сортированный.

Что хорошо:

  • В принципе, хорошо почти все 🙂 и код рабочий, и совет дан хороший.

Что плохо:

  • Название функции перепутано, нужно Search, а не Index.

Пример 3

Давайте перейдем к более специфичному примеру. Попробуем напечатать значение, заданное в Wei, в ETH (1 ETH = 10^18 Wei):

Что круто:

  • Почти все! Ну действительно, приятно удивил результат. Он действительно переведет в ETH значение wei (да, конечно, Int может не хватить, но можно инициализировать wei через wei.SetString)

  • Правильная единица конверсии (10^18)

  • Откомментированный код

  • Бот, похоже, обучается на основе фидбэка от пользователей. Предыдущий результат, который я получил несколько часов назад, включал очевидно неверный код с делением big.Int на big.Int.

Пример 4

Давайте попробуем получить баланс в USDT заданного кошелька в сети Ethereum:

Что хорошо:

  • Шаблон программы действительно сгенерирован и в целом имеет правильную структуру (подключение к API, получение баланса, печать)

  • Подключены правильные библиотеки (go-ethereum)

  • Подставлены осмысленные имена переменных

  • В одном из запросов (не в этом) был правильно определен адрес USDT в нужной сети (Ethereum Mainnet)

  • Бот правильно понял, что число символов после запятой равно шести и правильно написал код печати

Что плохо:

  • Правильный баланс этот код не напечатает. Не вдаваясь в подробности, но он напечатает (после правок) баланс в ETH (не в USDT)

  • Чтобы сделать пример рабочим, нужно добавить довольно много инфраструктурного кода, который я не буду здесь приводить для экономии места.

Итак, субъективные выводы:

  • ChatGPT – впечатляющая разработка, которая дает уже очень неплохие результаты. Как минимум, код из всех примеров может работать с изменениями различной степени, либо вообще без изменений

  • ChatGPT уже сейчас можно использовать для вдохновения (например, понять, какие библиотеки можно взять для решения задачи, набросать boilerplate), или для простого кода (результат примера 3 я бы взял в продакшен)

  • Возможно, не совсем для пользования новичками в программировании, которые сходу не смогут понять, в чем в коде проблема

  • Вижу классное нишевое использование подобных ботов, например, в плане поиска нужных библиотек и примеров из них, что потенциально может быть встроено сразу в IDE (вот тут кто-то уже запилил плагин для VSCode), или для сдачи лабораторных преподавателю, не особо разбирающемуся в теме 🙂 (надеюсь, такие уже не встречаются)


ссылка на оригинал статьи https://habr.com/ru/post/704158/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *