Оригинал: The AI singularity is here
Автор: Мэтт Асей (Matt Asay)
В предыдущей статье я был неправ, признаю. Прорыв в области искусственного интеллекта (ИИ) состоялся. Нравится нам это или нет, но ИИ — это не то, что может повлиять на разработку программного обеспечения в отдаленном будущем. ИИ используется в разработке ПО уже сегодня. Сегодня! Конечно, не каждый разработчик использует большие языковые модели (large language models, LLM) для создания или тестирования кода. На самом деле, таких пока меньшинство. Но у тех, кто доверяет ИИ, способ создания программного обеспечения меняется кардинально. Думаю, вам полезно будет узнать, как можно использовать LLM, такие как ChatGPT, чтобы значительно повысить собственную эффективность и эффективность команды разработчиков.
Амбиции, основанные на искусственном интеллекте
Одним из самых ярых сторонников разработки с использованием LLM является Саймон Уиллисон (Simon Willison), основатель проекта Datasette с открытым исходным кодом. По словам Уиллисона, искусственный интеллект «позволяет ему быть более амбициозным в своих проектах». Каким образом? «ChatGPT (а также GitHub Copilot) экономят мне массу времени, позволяя не задумываться об элементарных вещах. Для таких вещей, как написание цикла for в bash или формирование междоменного CORS-запроса в JavaScript, мне больше не нужно прибегать к поиску — я могу спросить ИИ и в 80% случаев получить правильный ответ.»
Для Уиллисона и других разработчиков экономия времени на рутинных действиях означает, что они могут не заниматься отладкой стандартных фрагментов методом проб и ошибок, а уделить больше внимания разработческим задачам более высокого уровня.
Для тех, кто сомневается в оптимальности кода, который могут генерировать LLM, или опасается его явной ошибочности), Уиллисон говорит в подкасте, что беспокоиться не о чем. Во всяком случае, не позволяйте этой обеспокоенности затмить тот прирост производительности, который дает ИИ. Он говорит, что несмотря на имеющиеся серьезные проблемы, «вы можете радикально повысить производительность и амбициозность своих проектов, если признаете истинность обоих утверждений: код, написанный ИИ, может быть неверным и содержать ошибки, но при этом он может значительно повысить эффективность процесса разработки.»
Хитрость в том, чтобы потратить время на изучение того, как правильно обращаться с LLM, чтобы получать от них требуемое. Уиллисон подчеркивает: «Чтобы извлечь из LLM максимальную пользу и избежать множества ловушек, которые они расставляют для неосторожных пользователей, нужно потратить время на эксперименты с ними и сформировать для себя представление о том, как они работают, на что они способны, а где могут подвести.»
Большие языковые модели, такие, как ChatGPT, могут быть полезны для генерации кода, но, возможно, они могут быть еще более полезны для тестирования кода, включая код, созданный ими самими. На это указала разработчик GitHub Яана Доган (Jaana Dogan). Хитрость в том, чтобы грамотно использовать LLM, а не просто по просить искусственный интеллект выполнить вашу работу за вас и загорать на пляже пока он выполняет задачу. Большие языковые модели способны помочь разработчику в его работе, а не заменить его.
«Самое большое изобретение после WWW»
Разработчик Стив Йегге (Steve Yegge) из Sourcegraph убежден, что «LLM — это не просто крупнейшая инновация в ряду социальных сетей, мобильных устройств или облачных вычислений — это самая значимая разработка со времен изобретения Всемирной паутины. Что касается создания программного кода, то LLM являются самым большим шагом вперед со времен изобретения интегрированных сред разработки (IDE) и Stack Overflow и вполне могут превзойти и то, и другое.» Йегге — далеко не новичок в разработке, и поэтому, когда он говорит «если вы еще не в восторге и не беспокоитесь по этому поводу, что ж … вам стоило бы», это означает , что пришло время всерьез присмотреться к LLM и понять, как сделать их полезными для вас лично и для вашей компании.
С точки зрения Йегге, одна из самых больших проблем использования LLM в разработке ПО в действительности является наименее серьезной. Меня, как и многих, сильно смущало, что разработчики, полагающиеся на LLM, по-прежнему отвечают за код в целом. Это кажется проблематичным, учитывая насколько несовершенен код, создаваемый ИИ.
Но по словам Йегге, это беспокойство смехотворно, и он прав, говоря, что «вы совершенно упускаете из виду, что дисциплина разработки ПО потому и появилась, что вы не можете доверять программному коду никогда и ни при каких обстоятельствах. Вот почему мы используем перекрестный контроль кода, средства автоматического контроля качества кода, отладчики, модульное тестирование, интегрированное тестирование, раздельные среды разработки, тестирования и эксплуатации, описания стандартных операционных процедур и все то, что называют обеспечением качества, средства проверки безопасности, средства проверки соответствия требованиям и т.д. и т.п.!
По логике Уиллисона, ИИ не должен создавать безупречный код. Он должен сэкономить разработчику время на создание безупречного кода. Как сказал бы Доган, идея в том, чтобы с помощью LLM создать тесты и запросы, которые обнаружат все изъяны в нашем не вполне безупречном коде.
Йегге резюмирует: «вы получает от LLM черновой код, который верен на 80%, и доводите до ума остальные 20% вручную.» Это означает пятикратный прирост производительности — кто же от такого откажется?
Вызов, стоящий сейчас перед разработчиками,— научиться применять LLM для написания и тестирования кода, а также научиться тренировать LLM на примерах кода для получения наилучших результатов. Когда вы все сделаете правильно, то будете ощущать себя как Мэтт Бейтман (Matt Bateman) из компании Higher Ground, который признается: «У меня такое впечатление, что в моем распоряжении небольшая армия компетентных хакеров, которые выполняют мои задания и учат меня в процессе. Это просто чистый восторг и волшебство.» Вот почему AWS и другие компании изо всех сил изобретают способы более продуктивной работы со своими платформами, и для этого активно тренируют LLM.
Будущее за разработкой программного обеспечения с помощью больших языковых моделей — признайте это и начните работать с этой технологией прямо сегодня.
Обсудить