Как это происходит на реальных проектах и ​​действительно ли помогает?

Три месяца назад мне разрешили использовать Github Copilot с моей личной учетной записью Github, и с тех пор я могу использовать этот инструмент во время повседневного программирования. За это время у меня была возможность протестировать его с Angular, веб-компонентами на основе проектов LitElement, Node.js (TS) и VanillaJS. Итак, давайте посмотрим, как нам помогает ИИ для парного программирования, и помогает ли он на самом деле?

Что такое GitHub Copilot?

GitHub Copilot — это инструмент искусственного интеллекта, созданный GitHub и OpenAI, чтобы помочь программистам писать код с использованием автозаполнения. Пользователи Visual Studio Code, Neovim и JetBrains уже могут использовать плагин.

GitHub Copilot основан на модели OpenAI Codex, обученной естественному языку и миллиардам общедоступных строк исходного кода, включая проекты GitHub.

Инструмент Copilot на GitHub может написать код или предложить альтернативу. Сервис поддерживает все языки программирования, но лучше всего работает с Python, JavaScript, TypeScript, Ruby, Java и Go.

По их данным, 50% разработчиков на GitHub продолжали пользоваться сервисом после пробного периода в июле 2021 года.

Как это использовать?

Copilot в настоящее время находится на стадии технической предварительной версии. Технический предварительный просмотр открыт для ограниченного числа тестировщиков. Чтобы присоединиться к списку ожидания, посетите copilot.github.com.

Чтобы использовать GitHub Copilot, сначала необходимо установить расширение Visual Studio Code.

  1. Посетите страницу GitHub Copilot extension в Visual Studio Code Marketplace (или JetBrains marketplace) и установите расширение.
  2. Откройте код Visual Studio. Вам будет предложено авторизовать расширение, войдя в GitHub.
  3. После авторизации расширения Github вернет вас в Visual Studio Code.

После установки вам нужно открыть или создать новый файл для поддерживаемого языка и начать вводить свой код.

Например:

  1. Создайте новый файл JavaScript (.js).
  2. Начните объявлять любую функцию и ждите волшебства.

Вот и все. Если вам не нравится предложенный код, вы можете переключаться между вариантами с помощью сочетаний клавиш.

Удобство использования

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

Что можно улучшить

Прежде всего, я хочу выделить на GIF выше, как я должен удалить лишнюю скобку после Copilot. В течение этих трех месяцев я делал это постоянно. Особенно, когда вы пишете условия или новые функции.

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

Вот и все. Сейчас я хочу говорить только о хорошем, потому что это творит настоящее волшебство.

Что было хорошо

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

Кроме того, вам даже не нужно искать формулы. Например, как конвертировать градусы Фаренгейта в градусы Цельсия.

Потрясающе, правда?

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

Позвольте мне показать вам, как написать класс службы API с помощью GitHub Copilot.

Ты это видел? С самого начала предлагался даже весь класс с методами. Но когда я изменил конструктор и добавил строки хоста и JWT, он принял и предложил писать методы get и post с использованием моих переменных.

Кроме того, он распознал имя переменной JWT и понял, как его использовать. Он добавил заголовок к запросам: “Authorization”: “Bearer “ + this.jwt.

Последнее, но не менее важное, это то, как это работает между классами. Например, Copilot может анализировать импортированные или существующие методы и повторно использовать их. Даже если они находятся в других классах или объектах.

Как это работает по сравнению с Tabnine?

Такие темы, как Github Copilot VS Tabnine, популярны, и на сайте Tabnine даже есть страница сравнения.

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

По этой причине я не рисковал работать с проектами с основной работы. Tabnine работает локально и сохраняет вашу конфиденциальность. Кроме того, Tabnine работает в автономном режиме.

Но я не вижу причин сравнивать другие вещи, потому что вы можете идеально использовать их вместе. Время от времени мне приходится удалять лишние скобки, но это происходит даже со стандартным VS Code IntelliSense.

Вы можете начать печатать что-то. Сначала Tabnine предложит какие-то методы, а потом Copilot напишет остальной код 🤖.

Есть еще один подводный камень для компаний. Во время собеседований компании часто задают кандидатам тестовое задание. Например, написать алгоритм или реализовать полифилл.

Если кандидат выполняет свою задачу на собственном ноутбуке с установленным Copilot, он может просто написать свою задачу в виде комментария, а Copilot сделает все остальное. Мне уже доводилось встречаться с таким «умным» кандидатом на реальном собеседовании.

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

Спасибо за прочтение! И убедитесь, что в вашей компании разрешено использовать расширение Copilot.

Если вам понравился мой пост, но по какой-то причине вы до сих пор не являетесь участником Medium, вы можете поддержать меня и получить членство по этой ссылке.



Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.