Одна из хайповых тем последней недели в англоязычном Твиттере – релиз 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/
Добавить комментарий