За последние несколько лет компании и сообщества разработчиков выпустили множество ИИ-помощников для программистов, чья задача — писать качественный код и улучшать существующий. В связи с этим возникла дискуссия о том, смогут ли нейросети снизить порог входа в профессию и сделать разработку без кода (no-code) обычной практикой. «РБК Тренды» разбирались, как обстоят дела с ИИ-программированием и какие у него перспективы.
Что происходит
В июне 2021 года платформа разработки GitHub и Microsoft представили ИИ-помощника Copilot, который был призван улучшить программный код путем подсказок программисту. За последние три года, помимо Copilot, появилось множество альтернатив. Так, Amazon в 2023 году представила CodeWhisperer. Этот инструмент поддерживает несколько языков программирования, а также вносит предложения по более безопасному коду и сканирует его на наличие багов. В том же году «Сбер» выпустил своего ИИ-ассистента GigaCode, который может интегрироваться с разными средами разработки, в том числе от Microsoft. А в марте 2024 года вышел ИИ-генератор кода Supermaven с контекстным окном 300 тыс. токенов — в разы больше, чем у GitHub Copilot. Всего за 10–20 секунд он может проанализировать репозиторий со всей кодовой базой, методами и документацией. С помощью этой информации нейросеть способна генерировать не просто работающий код, а подходящий конкретному проекту.
Есть и опенсорсные альтернативы, например StarCoder, которую обучили работать более чем на 80 языках программирования.
За прошедшие три года многие главы компаний, которые связаны с IT или занимаются разработками в сфере ИИ, заявляли, что нейросети смогут создавать программы на уровне человека, а разработчиком можно будет стать, не умея программировать. С подобными заявлениями выступали, например, глава IBM Арвинд Кришна и основатель Stability AI Эмад Мостак. Последний заявил в одном из интервью: «Уже сейчас 41% кода на GitHub — это сгенерированный код. Через пять лет программистов уже не будет как профессии». Менее радикальной позиции придерживается глава Nvidia Дженсен Хуанг, который считает, что уже сегодня тем, кто хочет стать разработчиками, не стоит глубоко погружаться в процессы программирования. «Все в мире теперь программисты», — уверен он. Генеральный директор GitHub Томас Домке же считает, что «рано или поздно 80% кода будет написано Copilot». Однако, по его словам, это не означает, что разработчикам больше не нужно знать программирование.
По данным GitHub, более 10 тыс. организаций, от Coca-Cola и до Airbnb, уже используют корпоративную версию Copilot, а более 30 тыс. сотрудников самой Microsoft регулярно пишут код с помощью ИИ. В Gartner прогнозируют, что к 2028 году 75% корпоративных программистов будут использовать подобные инструменты.
Однако сами разработчики рассматривают ИИ только в качестве умного помощника. Согласно опросу Docker, две трети респондентов положительно относятся к ИИ, так как он облегчает работу и позволяет сосредоточиться на более важных задачах. При этом менее четверти из них видят угрозу в нейросетях. Похожие цифры приводят в GitHub — 75% разработчиков платформы заявили, что чувствуют себя более удовлетворенными работой и могут сосредоточиться на более приятных задачах благодаря Copilot.
Плюсы ИИ-помощников
Объяснение кода
Домке говорит, что основная цель Copilot — облегчить задачу программисту, предложив ему шаги и объяснив сложный код. Он сравнивает это с тем, как устроены современные языки программирования, которые стали более простыми по сравнению с предшественниками. Домке отмечает, что начинающие программисты более позитивно воспринимают Copilot именно по этой причине. Он также приводит результаты опроса GitHub, согласно которым 75% разработчиков заявили, что теперь они затрачивают меньше усилий на решение сложных задач.
Помощь в обучении программированию
Инженеры GitHub используют Copilot для обучения и расширения своих навыков. Один из них поделился, что смог за 20 минут создать программу на Rust, не зная этого языка программирования.
Преподаватель Университета Дьюка в Северной Каролине Ной Гифт с 25-летним опытом программирования тоже смог выучить Rust с помощью Copilot.
«По сути, рядом со мной был суперумный помощник, который мог ответить на вопросы, пока я пытался повысить свой уровень», — говорит он. Теперь Гифт использует ИИ-ассистента для обучения студентов. По его словам, с помощью Copilot они довольно быстро научились создавать сложные проекты в виде сайтов со встроенными чат-ботами. Гифт считает, что ИИ-помощники — это просто последняя ступень развития софта. Ранее аналогичную роль играли компиляторы — инструменты для перевода программного кода в машинный.
Однако с этим утверждением согласны не все. Так, один из разработчиков использовал Copilot для изучения языка программирования Rust. Он отметил, что после применения автоподсказок не смог самостоятельно справиться с элементарной задачей по написанию кода. По мнению программиста, наличие умного помощника расслабляет и позволяет не фокусироваться на мелочах.
Ускорение написания кода
Обычно программисты тратят много времени на поиск решений распространенных проблем. Зачастую они собирают новые программы из общедоступных кусков уже опубликованного кода, минимально адаптируя его под свои нужды.
Ключевая идея Copilot и других помощников заключается в том, чтобы разместить нужные пояснения и инструкции в одном окне рядом с кодом. ИИ отслеживает процесс и комментарии к нему, а затем отправляет данные большой языковой модели, и та прогнозирует возможные дальнейшие действия. Эту опцию активно используют разработчики GitHub, чтобы автоматизировать одни задачи и больше концентрироваться на других, более сложных.
Исследование 2023 года с участием почти миллиона пользователей Copilot, опубликованное GitHub и консалтинговой фирмой Keystone Strategy, показало, что программисты приняли в среднем около 30% предложений инструмента или более миллиарда строк кода.
В том же году группа исследователей GitHub и Microsoft проверила влияние Copilot на программистов. Компании попросили 95 человек создать веб-сервер. Это нетривиальная задача, при этом требующая стандартного кода. Половине испытуемых дали доступ к Copilot. Те, кто использовал инструмент, выполнили задачу в среднем на 55% быстрее.
«Я думаю об этом так: рядом с вами сидит опытный разработчик и нашептывает рекомендации. Раньше вам приходилось искать информацию самостоятельно, а теперь это происходит автоматически», — говорит Марко Янсити, соучредитель Keystone Strategy и профессор Гарвардской школы бизнеса, где он изучает цифровую трансформацию.
Изменение навыков программирования
Некоторые эксперты утверждают, что суть ИИ-помощников в программировании посредством автоматизации заключается в изменении характера работы разработчика. Инбал Шани, директор по продукту GitHub, считает, что такие модели, как Copilot, позволяют задавать инструкции на обычном языке, и эта способность может выйти далеко за пределы программирования. По ее мнению, компании уже отказываются привлекать разработчиков просто для написания шаблонного кода, а предлагают им более творческие задачи, которые интересны и самим специалистам. Шани также приводит в пример кейс компании Accenture, где после внедрения Copilot выросло число программистов, которым интереснее не писать код, а собирать его из подсказок подобно конструктору и вносить свои изменения. В целом, по ее словам, ИИ-инструменты позволят программистам сосредоточиться на более глобальных вопросах, связанных, например, с архитектурой их кода. Эксперт уверена, что в ближайшие годы навыки разработчиков будут развиваться благодаря ИИ.
Так, GitHub в 2024 году представил платформу Copilot Workspace. Она позволит создавать целые проекты с помощью ИИ, а умный помощник будет обеспечивать их сопровождение, тестирование и подготовку к релизу. В GitHub хотят, чтобы программисты начали использовать Copilot на протяжении всего жизненного цикла разработки.
Однако Джастин Готтшлих, генеральный директор Merly, стартапа, который использует ИИ для анализа кода в крупных программных проектах, уверен, что возможности умных помощников будут всегда ограничены: «Они в основном связаны с тем, что способен сделать человек-программист. На данном этапе они, скорее всего, никогда не смогут сделать что-то чудесное». Он предвидит, что однажды ИИ возьмет на себя управление большими и сложными библиотеками кода, указывая инженерам-людям, как их поддерживать. Но Готтшлих не думает, что большие языковые модели подходят для этой задачи. С этим соглашаются и разработчики, которые пытались применить ChatGPT для решения нетривиальных задач в программировании. По их словам, ИИ хорошо справляется в тех случаях, когда решения уже были найдены людьми, но не может придумать собственного и идет по простейшему пути.
Проблематика
Снижение качества кода
Компания GitClear в начале 2024 года выпустила отчет, который содержит анализ 153 млн строк кода, созданного за два года. Он показывает, что качество кода за этот период снизилось за счет того, что разработчики стали чаще редактировать его и откатывать изменения. Авторы отчета указывают, что ИИ-ассистенты могут выдавать неплохой код, но они не обеспечивают его долгосрочную поддержку и не могут учитывать все нюансы текущего проекта. Именно поэтому опытные программисты реже используют автоподсказки, так как им проще один раз вручную написать код с учетом всех нюансов, чем положиться на ИИ и потратить время на перепроверку его работы.
Ошибки и слабый код
Исследование GitHub показало, что менее опытные программисты принимают больше предложений от ИИ по коду, а разработчики чаще пользуются им по мере привыкания.
Однако, как и все большие языковые модели, эти инструменты могут создавать нерабочий код. Несколько групп исследователей в последние пару лет независимо обнаружили, что Copilot может генерировать уязвимый код или даже баги. Так, исследование Нью-Йоркского университета показало, что в двух из пяти случаев код от Copilot содержит ошибки безопасности. Из 1689 программ, которые были сгенерированы ИИ, в 40% обнаружили уязвимости. А отчет Стэнфордского университета показывает, что те, кто полагался на помощь ИИ, с большей вероятностью выдают неверный и небезопасный код. Участники группы, работавшей с ИИ-ассистентом, давали правильные ответы на вопрос в 67%, тогда как в группе, которая работала самостоятельно, на вопросы верно отвечали в 79% случаев.
Те, кому помогал ИИ, «значительно чаще предлагали небезопасное решение, а также значительно чаще использовали тривиальные шифры, такие как шифры подстановки, и не проводили проверку подлинности возвращаемого значения».
В GitHub уже занимаются повышением точности предложений Copilot. Там тестируют систему Code Scanning Autofix, которая пропускает код через вторую нейросеть, обнаруживает в нем уязвимости и предлагает исправления. Однако пока поддерживается проверка кода только на языках JavaSript, Python, TypeScript и Java.
Пока же даже при использовании продвинутой версии Copilot X, которая вышла в 2023 году, ИИ может допускать мелкие ошибки, способные вызвать баги в программе. Выявить их могут только опытные разработчики.
Помимо ошибок, есть и другие проблемы. Исследователи обнаружили, что Copilot может предлагать слишком сложный код или не соответствующий лучшим практикам. Это усложняет проверку предложений ИИ разработчиками.
Суть всех проблем кроется в том, что качество работы любого ИИ-помощника напрямую зависит от обучающих данных. Например, Copilot обучали на репозиториях GitHub, история которого насчитывает 15 лет. Этот устаревший код содержит не только ошибки, но и баги в безопасности, о которых не было известно на момент его написания.
В долгосрочной перспективе это может усложнить работу командам разработчиков. Опытным программистам, возможно, придется тратить больше времени на двойную проверку кода, написанного новичками с помощью ИИ.
Нарушение коммерческой тайны и слив данных
Сразу после выпуска Copilot пользователи заметили проблемы с безопасностью проекта. Так, ИИ-помощник при генерации кода выдавал секретные данные из других репозиториев.
Некоторые компании, в том числе Apple, попросили сотрудников не использовать ИИ-помощников, опасаясь утечки интеллектуальной собственности и личных данных.
Есть и другая проблема. Еще в 2021 году в GitHub признали, что при обучении Copilot использовали весь доступный в репозиториях сервиса публичный код без учета типа лицензии. Позднее платформа оказалась в центре скандала после иска от программистов, недовольных этим. Microsoft предложила компенсацию пользователям своих моделей, которые опасаются возможных судебных разбирательств. Но на рассмотрение юридических вопросов в судах потребуются годы.
Тем не менее ряд сообществ отказались от использования ИИ из-за ситуации с нарушением авторских прав. Такие меры приняли в организации NetBSD Foundation и управляющем совете дистрибутива Gentoo Linux.
В опросе O'Reily Media, который провели в августе 2023 года, 67% разработчиков заявили, что у них в организации не используются Copilot, ChatGPT или иные подобные инструменты.
Перспективы программирования с ИИ
Компании разрабатывают инструменты, которые не только помогают писать код, но и сами способны создавать IТ-проекты с нуля. Подобное решение анонсировали в Cognition Labs. Инструмент Devin — это бот, который сам осваивает нужные технологии, прочитав документацию, а затем создает приложения на специальной платформе. Он способен найти ошибки в процессе разработки и исправить их. Кроме того, Devin реагирует на отзывы пользователей и выпускает обновления. К примеру, бот может создать веб-сайт со всеми итальянскими ресторанами Сиднея.
Однако и этот инструмент пока не способен сравниться с опытным разработчиком. Так, в тесте Devin самостоятельно выполнил только 13,86% задач с реальными проектами на GitHub. Кроме того, программисты уже обнаружили недочеты и даже ошибки в его работе — использование неверного синтаксиса, а также попытки решить проблему простейшим, но не самым эффективным способом.
Томас Домке, чья платформа первой внедрила ИИ-инструмент для программистов, видит перспективы работы с ними следующим образом: «По крайней мере, в обозримом будущем нам все равно придется проверять весь исходный код: понимать, что он делает, проводить проверки безопасности, соответствия, следить за скоростью его внедрения. Разработчик по-прежнему будет экспертом, понимающим код. Ему должно быть ясно, как то, что было синтезировано ИИ, соответствует первоначальным намерениям. Вероятно, в течение следующего десятилетия ситуация изменится в отношении написанного вручную и синтезированного кода. Но я не думаю, что мы хоть сколько-нибудь близки к разработке без кода».