Кабина современного программиста: мои мысли о GitHub Copilot

Кабина современного программиста: мои мысли о GitHub Copilot

1 апреля 2023 г.

Несмотря на то, что несколько месяцев назад я освещал некоторые замечательные возможности ChatGPT, следующий логичный шаг, чтобы попробовать Copilot, инструмент Github для поддержки кодирования AI. Однако мой интерес пробудился на прошлой неделе, когда мой коллега поделился снимком экрана тестового набора, созданного искусственным интеллектом.

Подсказка была достаточно простой, а сгенерированные тестовые примеры — актуальными; достаточно, чтобы я захотел подписаться на бесплатную пробную версию GC и внести свой вклад в появление события сингулярности.

Я не буду подробно рассказывать о том, что Copilot может или не может делать: другие уже предвосхитили меня. Мне интересно, как я могу смириться с этой новой технологией.

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

Настоящая роль ИИ в программировании

Когда думаешь об искусственном интеллекте в программной области, на ум приходит много спонтанных вопросов.

Это полезно? Это опасно? Отнимет ли это наши рабочие места? Самое главное — не загонять себя в угол из-за ограничивающего мышления и не позволять своим эмоциям создавать какие-то странные истории вокруг ИИ — будь то неолуддисты или утопические техноэнтузиасты.

Вместо этого я нахожу другие типы вопросов более интересными, и на них гораздо проще ответить: эти вопросы не предполагают ответа «да» или «нет», а обычно начинаются с «что», «когда» и «где».

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

Ценность ИИ в нашей работе в основном понятна инженерам-программистам. Тем не менее, я понимаю, что люди из других слоев общества могут серьезно недооценивать возможности, особенно потому, что многие создатели контента или журналисты любят привлекать внимание, предлагая катастрофические сценарии (или обещая, что создание программного обеспечения теперь доступно для всех).

Да, это правда, что инструменты, основанные на GPT-3, а совсем недавно на GPT-4, могут писать код, и да, сгенерированный код часто компилируется и делает то, что от него ожидается.

Однако это не обязательно представляет собой непосредственную угрозу моей безопасности работы, поскольку написание кода — это не то, чем на самом деле занимаются разработчики программного обеспечения. Позвольте мне уточнить.

Наша работа заключается не в том, чтобы набирать код в текстовом редакторе. Мы не стенографисты. Работа заключается в том, чтобы решить, что кодировать. На самом деле, всякий раз, когда я разрабатываю программное обеспечение и, наконец, начинаю вводить что-то в свою IDE, я уже представляю, каким будет следующий фрагмент кода.

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

Даже если ИИ может внести вклад в более чем 80 % некоторой кодовой базы, выдача соответствующей подсказки (первоначальные 20 %) имеет важное значение, так как она содержит огромное количество информации, необходимой сборщику мусора для правильной работы. И вы не получите это начальное приглашение без инженера за клавиатурой.

Второй пилот... или автопилот?

Я считаю, что хорошее сравнение можно провести с автопилотами самолетов. AFCS (Auto-Flight Control System) может отлично выполнять различные полетные операции: корректировать траекторию полета, приближаться к аэропорту или даже приземляться.

Я до сих пор не мечтаю прыгнуть на коммерческий рейс без человеческого присмотра.

Тот факт, что компьютер может управлять самолетом, не означает, что пилоты сидят без дела в кабине экипажа.

Предстоит еще многое сделать: узнать прогноз погоды, связаться с авиадиспетчерской службой, спланировать альтернативные маршруты и, самое главное, следить за автопилотом и при необходимости взять бразды правления в свои руки.

Таким образом, мы можем видеть, что пилоты все еще управляют самолетом.

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

Вот мой образ мыслей при использовании Copilot: я с радостью делегирую ему второстепенные задачи, но в то же время я буду бдительно следить за тем, какой результат он производит.

Заключение

Как вы, возможно, знаете, алгоритм машинного обучения, лежащий в основе Copilot, называется GPT-3 и прогнозирует наиболее вероятную последовательность генерации токенов. Хотя сгенерированный код обычно синтаксически верен, инструменты не понимают, что такое спецификации и является ли сгенерированный код допустимым.

Возможная мера противодействия – помочь сборщику мусора за счет быстрой разработки: например, написание комментария о том, что делает следующий фрагмент кода, — это мощная техника, помогающая ИИ.

Более того, иногда даже комментарий может быть сгенерирован автоматически после ввода первых нескольких слов.

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

На данный момент я не решил, стоит ли полностью включать Copilot в свой набор инструментов или нет: случайный характер его предложений иногда может быть помехой.

В любом случае, я бы посоветовал всем попробовать и хотя бы раз попробовать: думайте о нем как о служебном инструменте, таком как подсветка синтаксиса или функция автозаполнения вашей любимой IDE.

Что вы думаете о Github Copilot? Вы включили это в свою повседневную работу или это было для вас тяжелым испытанием? Не стесняйтесь и дайте мне знать в комментариях!


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE