14 декабря 2021 в 8:00
Автор: Виталий Олехнович

Программисты больше не нужны? Искусственный интеллект научили писать код

Автор: Виталий Олехнович

«На редкость адекватный код», «немного пугает», «безумно полезный» — такие отзывы оставляют программисты, попробовавшие Copilot от GitHub — искусственный интеллект, который переводит естественный язык в код. Эта разработка базируется на новой системе искусственного интеллекта, разработанного OpenAI — той самой компанией, которая создала прекрасно замаскированную под человека машину и так долго опасалась давать кому-либо доступ к ней.

Что такое Copilot?

OpenAI прогремела на весь мир со своим продвинутым алгоритмом обработки естественного языка несколько лет назад. Тогда спонсируемая Илоном Маском некоммерческая исследовательская организация рассказала о революционной ИИ-системе, которая умеет дописывать сюжеты новостей и литературные произведения на английском языке. Опираясь всего на несколько строчек, искусственный интеллект дописывал текст так, что он стилистически и тематически соответствовал исходному образцу.

С тех пор алгоритмы обработки улучшились, ИИ натренировался и теперь умеет создавать тексты, практически неотличимые от того, что пишет человек. В OpenAI эту систему, которая носит название GPT-3, считают чересчур опасной: в неправильных руках она может оказаться слишком опасным оружием.

Тем не менее это не мешает OpenAI открывать ограниченный доступ к GPT-3 проверенным партнерам. А Microsoft так и вовсе договорилась об эксклюзивных правах на использование нейросетевого алгоритма.

По сути, Copilot — это и есть тот самый конечный продукт, который получил свое воплощение благодаря GPT-3. Это виртуальный напарник программиста, нейросетевой помощник, который обучен разным языкам программирования и фреймворкам. Он анализирует код, который пишет программист, и в зависимости от контекста предлагает вставить целые строки или функции.


Из Twitter

Покупку подписки на Copilot сравнивают с серьезным бустом производительности разработчика. Как если бы его Dell за $700 заменили на MacBook Pro за $2500

GitHub — это самый большой сборник открытого исходного кода в интернете. Принадлежит он Microsoft. На основе многих миллиардов строк кода, которые разные программисты со всего мира хранят на GitHub, и натренирована система Copilot.

GPT-3 пытались подружить с программистским кодом, однако эти попытки были, мягко говоря, не очень успешными: точность — около 0%. Взяв за основу один алгоритм, разработчики сделали и натренировали другой — OpenAI Codex, способный переводить естественный язык в код. Он-то и лежит в основе Copilot.

Сама фишка реализована в качестве плагина для редактора кода Microsoft Visual Studio Code, поддерживает несколько самых популярных языков программирования, но широкой общественности пока не доступна. В настоящее время Copilot находится в стадии технического тестирования, доступ — только по инвайтам.

Что говорят разработчики

В августе разработчики OpenAI устроили презентацию, где показали, как алгоритм учитывает контекст своей работы, в режиме чата отвечает на команды программиста, корректирует свой код. К примеру, один из разработчиков пишет: «Скажи „Hello, world!“» — и алгоритм выводит фразу «Hello, world!». На просьбу повторить фразу пять раз, используя цикл for, алгоритм пять раз распечатывает фразу в консоль, а на демонстрационном экране выводится код, который был сгенерирован ИИ для этой операции.

Обычным человеческим языком разработчики просят сперва сверстать «Hello, world!» в веб-страницу, а потом запустить локальный сервер для размещения этой страницы. Алгоритм генерирует код, программист набирает адрес в браузере и попадает на простейшую страницу.

«Такого рода вещи — это неинтересная часть программирования», — активно жестикулируя, поясняет разработчик OpenAI. По его мнению, алгоритм берет на себя всю скучную часть программирования, тогда как программист может выкроить больше времени на самое интересное — понимание проблемы, ее декомпозицию и решение с помощью кода.


цитата
Грег из OpenAI:
«Алгоритм видел все возможные способы того, как люди используют код. Он натренирован на всем доступном публичном коде. Он по-настоящему ускоряет мою работу как программиста, берет на себя всю скучную часть, так что я могу сфокусироваться на самом интересном».

Бояться ли программистам будущего?

Работа с Copilot выглядит с одной стороны впечатляюще, а с другой — пугающе. IT-отрасль для многих казалась тихой гаванью, спокойствие в которой способна нарушить лишь ядерная зима. Но Copilot словно звоночек из будущего: машины совсем скоро могут отжать работу не только у водителей и кассиров, но и у своих создателей. Ты просто пишешь, что хочешь получить, а ИИ пишет код за тебя. Делает то, что должен делать программист.

И речь не только про вывод на экран классической «Hello, world!». Copilot справляется и с алгоритмами, и с довольно редкими задачами с итерацией по массивам с уникальными условиями.

Стоит ли программистам бояться Copilot? Во-первых, они справедливо замечают, что это не первый искусственный помощник для «парного программирования». Уже несколько лет существует Tabnine — ИИ-ассистент, который умеет автоматически завершать начатую юзером строку. Правда, Copilot может генерировать целые многострочные функции, документацию и комментарии, тесты.

Но Copilot способен снизить порог входа в программирование. Пользователю этой фичи не обязательно помнить или даже знать определенный синтаксис языка или реализацию той или иной фичи, порой достаточно лишь точного описания того, что хочет юзер. Это как потенциально снизит порог входа, так и поможет сэкономить время при программировании, когда не придется долго гуглить типовые блоки кода. Есть надежда, что Copilot останется новым и хорошим инструментом, ускоряющим разработку.

«Создай data.html с данными в виде бар-чарта, где месяц располагается по оси X, а число подписчиков — по оси Y». Таким было задание в этом конкретном случае

Во-вторых, Copilot обучается на общедоступном коде под различными лицензиями, что ведет к юридическим проблемам для тех, кто использует подсказки искусственного интеллекта. В некоторых случаях использование подсказок в коде может стать нарушением лицензии, что потребует переаттестацию работы программиста по лицензии, совместимой с GPL. То есть возникают вопросы касательно авторского права: Copilot может побуждать разработчиков к копированию работ с открытым исходным кодом, защищенных авторским правом. В коммерческой же разработке малейшие сомнения на этот счет могут остановить компании от внедрения такого инструмента в свои процессы.

Разработчики Copilot заверяют, что код, написанный с помощью ИИ, «принадлежат вам, и вы несете за это ответственность». А «обучение моделей машинного обучения на общедоступных данных считается добросовестным использованием в сообществе машинного обучения».

Впрочем, это извращает всю идею открытого исходного кода.

Из Twitter:
«Весь смысл использования GPL состоит в том, чтобы заявить, что вы не хотите, чтобы проприетарное программное обеспечение получало выгоду от вашей работы. Обучение модели (по крайней мере частично) коду GPL, а затем ее использование для написания, возможно, несвободного программного обеспечения, кажется, по крайней мере, противоречит духу GPL».


В-третьих, Copilot не всегда пишет достаточно хороший код. Алгоритм обучали на общедоступном коде с GitHub. Туда сгружают свои проекты не только самые крутые программисты, но и начинающие, достаточно посредственные. А потому в целом получается нечто среднее, что не всегда в принципе нужно и полезно юзеру. К тому же модель ИИ не может поспевать за всеми нововведениями языков, а некоторые предложения могут быть устаревшими.

В целом программисты, с которыми удалось обсудить эту тему, делали упор на то, что больше времени в их работе уходит не на само написание кода, а на проектирование, отладку и поддержку. Когда кто-то, пускай даже самый продвинутый ИИ, пишет код вместо тебя, можно столкнуться с ситуацией, что объем этого кода существенно вырастет, и тогда будет много возни с его правкой и отладкой.


 

Все это похоже на отговорки. Конечно, в мгновение ока одна умная нейросеть не перевернет многотонную индустрию. Однако ей придется реагировать на появление с одной стороны полезного, а с другой — враждебного инструмента. Он может поднять производительность программиста, избавить от поисков типовых блоков кода в Google, но навряд ли будет полезен далекому от программирования человеку, который не способен провести отладку и дебаг. Однако с Copilot уровень абстракции в общении человека и машины заметно повышается.

Код пишет код, роботы собирают роботов. Немного грустно наблюдать за тем, как человек становится все бесполезнее.

 

Наш канал в Telegram. Присоединяйтесь!

Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро

Перепечатка текста и фотографий Onlíner без разрешения редакции запрещена. ng@onliner.by