Почему Copilot на GitHub — это не конец программирования — CloudSavvy IT

Логотип GitHubРазная фотография / Shutterstock.com

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

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

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

Что на самом деле такое второй пилот?

Во-первых, полезно узнать, что такое Copilot сегодня. Предварительный выпуск построен на OpenAI Codex, система искусственного интеллекта, приобретенная Microsoft у OpenAI. Это мощный анализатор исходного кода, совместимый с десятками популярных языков программирования.

Кодекс предназначен для понимания того, «как» люди используют код. Он определяет контекст кода, который вы пишете, и предлагает, что может быть дальше. В отличие от автозаполнения IDE, Copilot способен синтезировать новый вывод из изученного кода. Это не просто указатель ранее увиденного кода.

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

Система также может автоматизировать завершение повторяющихся участков кода, таких как массив объектов с похожими свойствами. Вы можете написать первые несколько вручную, а затем попросите Copilot заполнить остальную часть массива, используя ваш пример. Это напоминает перетаскивание значений ячеек в Excel.

Как далеко заходит второй пилот?

В настоящее время ответ — «недалеко». Несмотря на все модные «интеллектуальные», «контекстные» и «синтезаторные» слова, Copilot по-прежнему имеет ограниченное представление о ваших истинных намерениях и о том, чего должен достичь ваш код.

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

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

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

Второй пилот не масштабируется

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

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

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

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

От Собственное признание GitHub, Copilot действительно зависит от вас. Инструмент работает лучше всего, когда ваша база кода логически организована в небольшие функции с четкими типами, комментариями и блоками документов. Если вы хотите добиться наилучших результатов, вам нужно вести Copilot, самостоятельно написав высококачественный код.

А как насчет лицензирования?

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

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

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

Эти события должны быть редкими. Считается, что они более вероятны, если окружающий контекст кода слабый или неясный. Примеры, рассмотренные до сих пор, включают лицензию GPL Код землетрясения издается как есть (с ненормативной лексикой) и текст веб-сайта реального человека и социальные ссылки появляется, когда Copilot думает вы пишете страницу «обо мне».

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

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

Заключение

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

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

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

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

Наконец, Copilot не дает никаких указаний на как или же Зачем его предложения работают. Если он действительно призван заменить людей-разработчиков, он должен уметь объяснять, как работает решение, и обеспечивать видимость принятых решений. Разработчики не могут слепо доверять машине; всегда будет требоваться надзор и оценка различных решений.

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *