21 июня вышел GitHub Copilot — инструмент, который помогает разработчикам писать код. Сервис доступен по подписке от $10 в месяц.
Дмитрий Дзюба, руководитель Центра практик «Архитектура» МТС, тестирует его уже полгода, и за это время собрал много интересных кейсов. Как писать, чтобы не запутать GitHub Copilot. Где его можно использовать? И заменит ли он разработчиков? Расскажем в этой статье.
Дмитрий Дзюба
Руководитель Центра практик «Архитектура» МТС
Что такое GitHub Copilot
GitHub Copilot — искусственный интеллект, который интегрируется в среду разработки — IntelliJ, PyCharm, Microsoft Visual Studio Code и другие. Инструмент поддерживает множество языков программирования, в том числе Java, C, C++ и C#, Python, JavaScript, TypeScript, Ruby и Go.
Запустить его просто: открываешь IDE, устанавливаешь нужный плагин, который авторизуется на GitHub. Так, среда разработки подключается к GitHub и общается с этим искусственным интеллектом.
Основные функции GitHub Copilot:
Chat GPT Пишет Браузер на Python за 3 минуты
- проанализировать комментарии и написать код;
- дописать комментарии к готовому коду;
- определить типовые алгоритмы и дописать их за разработчика.
Как это выглядит
У нас есть некоторая программа. И в ней есть функция, которая выводит на экран результаты работы другой несуществующей функции.
Задание — сделать функцию, которая будет складывать два числа, которые могут быть условно бесконечными. С GitHub Copilot оно решается так:
- пишем комментарии — то есть ТЗ, на которое интеллект будет смотреть;
- начинаем писать функцию;
- система выдаёт её продолжение (выделено серым) — на основе описания задачи и первых строк кода;
- жмём tab — и задача решена.
Другой пример написать тесты для функции, которая переводит из римской системы счисления в арабскую, и обратно — пока само́й функции нет.
Эту задачу Copilot решил только на основе моих комментариев. Сам взял римские цифры и перевёл их в арабские, правильно подставив входные и результирующие данные.
Инструмент знает несколько языков, так что можно спокойно писать комментарии по-русски. Он поймёт, что ей делать.
Здесь у нас домашка по Python. Нужно создать словарь с континентами, добавить списки стран, расположенных на них, и написать программу, которая будет выдавать ответ в стиле «На этом материке находятся такие государства».
Я добавил комментарий с описанием программы и начал писать код. И Copilot сам добавил все контенты и разбил по ним страны (с географией у него, конечно, проблемы, но в нашем случае это не так важно). По сути, он написал весь цикл, разобравшись в задаче, — мне оставалось только проверить код.
Как работать с GitHub Copilot
По моему опыту система выдаёт весьма неплохой код. Но при определённых условиях.
Во-первых, нужно писать подробные комментарии, которые чётко описывают, что должна делать каждая функция. Без них инструменту будет сложно догадаться, что вам нужно.
Python ищем заказы на фриланс и выполняем их. Python requests, lxml, csv
Так, я однажды решал задачку — искал значение среднего элемента последовательности. В коде, который я написал, была функция min (условно, средняя). Но я не писал комментарии, и Github Copilot пришлось угадывать, что мне нужно, по названию переменных и функций. Так, он сгенерировал функцию median, которая вместо значения среднего элемента искала сам средний элемент.
Во-вторых, называть функции по тому, что они делают. И добавлять адекватные переменные — названия a1, a2, a3, a4, a5 точно не помогут.
В-третьих, писать просто. Я долго старался подобрать код, который запутает систему.
Например, здесь я писал функцию, которая должна сравнивать два числа. Но название функции не совсем адекватное, и реализация странная — в итоге Copilot постоянно старался угадать, что мне нужно, какие функции типы данных я использую. И подсовывал неправильный код.
Отдельная тема — проверка кода. Иногда инструмент косячит или ведёт себя странно. Например, может выдать несколько ответов на одну и ту же задачу (почему так — загадка) или неверный — но очень похожий на правильный — код. Будто изначально Copilot написал правильную программу, но потом вставил 2–3 ошибки.
Такое случается нечасто, но перестраховаться стоит.
Приведу пару примеров. Мне нужно было перемножить две последовательности, и взять поэлементно сумму квадратных корней. Система сгенерировала код, который производит вычисления с последовательностью — но вместо сумм квадратных корней посчитала сумму квадратов. При этом результат назвала sqrt — то есть намерение инструмент понял правильно.
Другой случай — GitHub Copilot сгенерировал достаточно большой код для разбора выражения. Но он половину if’ов сделал правильно, а половину — нет, например, вложил в условие одну операцию вместо двух.
Где инструмент можно использовать
Инструмент берёт на себя рутинную работу. Если есть типовой фрагмент кода, который писать лень или очень скучно — это к нему. При этом времени на комментарии и проверку уходит не так много (и делать их надо в любом случае).
Ещё он хорош для работы с незнакомыми библиотеками и фреймворками. Copilot анализирует огромную базу, которая есть на GitHub, и предлагает типовые решения — в том числе не известные разработчику. Так что можно смело подключать библиотеку, которую вы не знаете, и не копаться в документации и на StackOverflow.
Таким же образом можно учить новые языки (в задаче с континентом мы именно этим и занимались).
Но программистов он всё равно не заменит — потому что не может работать без человека . Всегда нужно либо чёткое описание алгоритма в комментариях, либо заготовка кода — чтобы понять что нужно дописывать.
К тому же он неспособен написать что-то уникальное, а только подставляет блоки, которые уже где-то видел, в определённое места (растить их в произвольном порядке, чтобы создать что-то новое, ему тоже пока не по силам).
Наконец, код, который пишет Copilot, всё равно нужно тестировать. Инструмент может предложить огромный фрагмент, который вытащил из никому неизвестных недр GitHub. И Приходится его исследовать: «Что же мне предложили? Правильный это алгоритм или нет? Эффективный или нет?
Заработает или нет?».
5 шпаргалок по Git: от основ до работы с GitHub
Так что пока инструмент — даже настолько крутой и интересный — не сможет заменить человека. И можно смело учиться на айтишника.
На этом всё! Делитесь впечатлениями о GitHub Copilot. Что вам нравится в инструменте и чего не хватает? Смогли ли его протестировать? Успели ли заметить какие-то странности и собрать необычные кейсы?
Источник: tproger.ru
Код, который пишет себя сам
ChatGPT: Конец программированию (как мы его знаем). Искусственный интеллект, который пишет код.
Что же такое, нашумевший AI ChatGPT.
ChatGPT — это прототип чат-бота с искусственным интеллектом, разработанный OpenAI и специализирующийся на диалогах. ChatGPT — большая языковая модель, отлаженная как с помощью методов обучения с учителем, так и с подкреплением. Базовой моделью, которая была доработана, была языковая модель от OpenAI GPT-3.5, улучшенная версия GPT-3.
t.me/ai_machinelearning_big_data – каннал, который поможет вам погрузися в мир искусственного интеллекта
Теперь все, что нам нужно сделать, это скопировать / вставить код и посмотреть, как выглядит страница.
Разве это не эффективно?
ChatGPT может уже сегодня делать работу Джунов.
Заменит ли ChatGPT Junior разработчиков.
Чтобы ответить на этот вопрос, давайте посмотрим, чего можно ожидать от этой позиции.
Вот что я нашел в сообщении о приеме на работу в LinkedIn.
1 Разрабатывать код для указанной работы в соответствии со стандартами времени, качества и затрат
2 Поддерживать существующий проект путем разрешения, устранения неполадок или отладки кода.
3 Понимать требования клиента и разрабатывать код для создания необходимых функций
4 Читать и писать документация о выполненной работе.
ChatGPT может выполнять задачи 1, 2 и 4 быстрее и лучше, чем Junior разработчик.
Вам даже не нужно тратить время и ресурсы на обучение чат-бота, потому что он уже хорошо разбирается в программировании.