Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Введение
Неодолимая волна хайпа подхватила меня и бросила в ранее неизведанную мной местность ChatGPT. Что новое несет сие чудо человеческого интеллекта: погибель аки Скайнет или спасение?
Я решил узнать, насколько быстро можно изучить библиотеку Bullet под чутким руководством ChatGPT. Ранее, мешок с костями уже представлял общее описание, составленное ущербным и отсталым методом варварских ударов пальцами по бедной клавиатуре. Что же сможет привнести в этот процесс кропотливого чтения, гугления и тщательного выписывания значимых фактов чудо дивное ChatGPT.
Для начала проанализируем ChatGPT: здесь будут только краткие выжимки, желающие могут изучить все подробнее. Он хорошо понимает входные инструкции и множество деталей (ссылка, ссылка), а значит стоит экспериментировать с развернутыми запросами. Он не может поддерживать долгий диалог(ссылка) и может посредине диалога забывать о чем идет речь. Выдача может содержать много непроверенной и малополезной информации, а иногда даже вредной, вводящей в заблуждение (ссылка, ссылка), потому что это именно языковая модель.
Для чего нужно вообще изучать чужие библиотеки? Человечество уже прошло этап, когда программы были простыми и маленькими, а бюджеты на их разработку огромными. Волны кризиса заставляют искать наиболее дешевый способ разработки, а именно использование то, что уже сделали ранее другие люди. Сам факт существования компаний и частной собственности, а значит и коммерческой тайны, генерирует бестолковый шлейф наработок, которые приходится использовать в настоящем. Сама структура программирование создала junior, middle и senior стратификацию. Несмотря на увеличивающие руководящие обязанности, их различает только опыт, сын ошибок трудный.
Обучать новоприбывшего сотрудника затратно, а “времени на раскачку нет”. Поэтому никто не хочет терять уже наработавшего опыт сотрудника: его обучать не нужно, а значит что и затрат будет меньше. Фактически, разница в зарплате между старым и новым сотрудником – это и есть сколько компания готова тратить на обучение? Так да не так, но не будем углубляться в политическую экономию, просто отметим, что библиотеки как общедоступные, так и закрытые внутри компании, имеют ценность, а их изучение стоит денег.
И так, постановка задачи – необходимо оценить трудоемкость изучения компьютерной библиотеки Bullet physics engine. Входящие условия: есть статья, написанная мною о библиотеке Bullet. Мне известна эта библиотека и я осведомлен о ее устройстве: так как я не сертифицированный тестер, мне придется имитировать незнание.
Используется версия ChatGPT Mar 14 Version (free account). Я не разбираюсь в их версиях (как я понял, это не 14 версия), поэтому это просто уточнение.
Исследование вопроса
Для начала, мне нужно объяснить СhatGPT, о чем идет речь: указать файлы, с которыми мы будем работать. Сначала я долго рыскал в интернете в поиске, как загрузить файлы в СhatGPT. Не получив удовлетворяющего меня ответа, я напрямую спросил у чата, как это сделать: chatGPT ответил, что можно через “pastebin”, но эксперименты показали неработоспособность этого варианта. То есть я сразу был введен в заблуждение СhatGPTом.
На мое счастье, он оказывается знал о github, о Bullet и даже моем публичном форке, однако там были достаточно давние коммиты. Впрочем, для указанных целей это вполне достаточно.
Следуя простейшей логике, мне следовало задать вопрос, где указать предмет исследования, входящие условия. Предмет исследования – это репозиторий гитхаба. Входящие условия: я новичок и только глянул на хранилище, а добрый автор указал мне прямо, что есть примеры(examples) и исходный код(src). С чего же мне начать? Наверно, мне нужен самый главный класс.
ChatGPT успешно определил нужный класс и даже выделил важные методы, включая stepSimulation, вокруг которых строится весь процесс симуляции. Сколько действий потребовалось для этого выполнить человеку:
Найти папку examples
Найти наиболее понятный пример
Прочитать файл пример
Сформировать краткую выжимку
Еще не круто, но уже видна экономия.
В папке примеров есть файл с именем "HelloWorld", который содержит полезную информацию о работе с библиотекой. Это прекрасная метка, которая указывает на самодостаточную инструкцию по использованию библиотеки. Давайте сообщим об этом ChatGPT.
С помощью ChatGPT мы смогли сэкономить время на чтение 155 строк обучающего файла. Интересно, что выжимка, которую он предоставил, не совпадает с комментариями в исходном коде. Это может быть не впечатляющим, но в то же время очень удобным. Однако, когда мы попросили ChatGPT уточнить имена переменных, он навыдумывать то, чего в исходном коде не было. Это может означать, что ChatGPT не всегда понимает, где можно использовать воображение, а где это не нужно. Тем не менее, получив список файлов, мы можем изучать их по мере необходимости.
Алгоритм, указанный выше, может быть использован в будущем при программировании. ChatGPT предоставил гораздо более продвинутое описание, чем то, что доступно в официальной документации или можно найти в исходном коде.
Та же самая информация может быть найдена:
Найти и прочитать файл HelloWorld.h (155 строк)
Найти и прочитать файл btDbvtBroadphase.h (146 строк)
Найти и прочитать файл btDbvtBroadphase.cpp (828 строк)
Найти и прочитать файл btCollisionWorld.cpp (1647 строк)
Найти и прочитать файл btBroadphaseInterface.h(79 строк)
Итого, 2344 строк, которые надо обработать. Может ли этот запрос привести к ответам, вводящим в заблуждение? Несомненно, прежде всего потому, что рассматривается абстрактный случай, поэтому конкретизируем задачи.
Для более продвинутого использования можно попытаться запросить от ChatGPT не только формальные понятия, но и инструкции. В некоторых рабочих задачах требуется изучить не только возможности, но и процесс: что происходит, где происходит, и как изменяется. Это затем используется для внесения изменений. Обычно это включает в себя построчное чтение большого количества файлов, что занимает много времени.
Давайте попробуем описать этот процесс ChatGPT и посмотрим, какой результат мы получим.
Представим численно сколько необходимо было проанализировать человеку:
btDiscreteDynamicsWorld.h (245 строк)
btDiscreteDynamicsWorld.cpp (1484 строк)
btDispatcher.h (110 строк)
btCollisionDispatcher.h(169 строк)
btCollisionDispatcher.cpp(302 строк)
btAxisSweep3.h(49 строк)
btAxisSweep3.cpp(34 строк)
btPersistentManifold.cpp(451 строк)
btPersistentManifold.h(375 строк)
btCollisionWorld.h(514 строк)
btCollisionWorld.cpp(1648 строк)
btRigidBody.h(688 строк)
btRigidBody.cpp(518 строк)
btAxisSweep3Internal.h(955 строк)
btManifoldResult.cpp(202 строк)
btManifoldResult.h(164 строк)
btSequentialImpulseConstraintSolver.cpp(1940 строк)
btSequentialImpulseConstraintSolver.h(229 строк)
Мы получили отличные результаты, которые требуют проверки, но то, что СhatGPT смог выполнить это задание, значительно экономит наше время и усилия (10 077 строк). Исходная инструкция была плодом интуитивного процесса. Однако, если приступить к более глубокому изучению влияния инструкции на результаты ответов, то можно достичь еще более впечатляющих результатов.
Я ожидаю, что синтез инструкции с системой Breakpoint будет более эффективен, поскольку Breakpoint, хоть и полезен, но все же довольно грубый инструмент. Автоматически разбросав точки отладки по процессу и указав процесс, СhatGPT сможет значительно упростить процесс отладки и повысить эффективность работы.
Заключение
Изначально я не ожидал многого от ChatGPT. Это обычное дело, когда предлагают использовать новую технологию. У меня возникают вопросы о ее стоимости, потребляемых ресурсах и возможной поддержке множества пользователей. Однако, после изучения известной мне библиотеки с помощью ChatGPT, я понял, что это действительно экономит время при наличии знания нужной библиотеки, доступа к ChatGPT и наличии исходного кода. Использование Sublime и браузера с ChatGPT оказалось надежной комбинацией, позволившей получить информацию за считанные часы вместо дней. Но это не отменяет необходимости обработки и структурирования информации, что требует знания логики, работы с источниками и критического анализа текста. Возникает вопрос, нужно ли теперь знать специфические библиотеки или же квалификацию хорошего специалиста определяет умение пользоваться логикой, работать с источниками и анализировать информацию, а не знание всех возможных библиотек.
Изучая возможности ChatGPT, я обнаружил, что он способен генерировать полезный программный код, включая тот, который специфичен для определенной библиотеки. Это привело меня к мысли о том, чтобы проанализировать дополнительные аспекты использования ChatGPT, включая написание технических заданий и решение сложных задач, связанных с библиотеками. Может ли ChatGPT сократить время на согласование технических заданий? Может ли он помочь решить специфические задачи, связанные с библиотеками? Эти вопросы заслуживают дополнительного исследования.
P.S.:
Он неплох однозначно, как редактор текста.