Странная долина кода: почему сгенерированный AI код так сложно отлаживать
5 августа 2025 г.Таблица ссылок
Аннотация и 1 введение
2. Предыдущие концептуализации интеллектуальной помощи для программистов
3. Краткий обзор больших языковых моделей для генерации кода
4. Коммерческие инструменты программирования, которые используют большие языковые модели
5. Надежность, безопасность и последствия безопасности моделей ИИ, генерирующих код,
6. Изузаение юзабилити и дизайна программирования A-ассистентного
7. Опыт отчетов и 7.1. Писать эффективные подсказки сложно
7.2 Активность программирования сдвигается в сторону проверки и незнакомой отладки
7.3. Эти инструменты полезны для шаблона и повторного использования кода
8. Неадекватность существующих метафор для программирования A-A-Advisted
8.1. Помощь ИИ в качестве поиска
8.2. Помощь ИИ в качестве компиляции
8.3. Помощь ИИ в качестве парного программирования
8.4. Отчетливый способ программирования
9. Проблемы с применением программирования конечного пользователя
9.1. Выпуск 1: Спецификация намерений, разложение проблемы и вычислительное мышление
9.2. Выпуск 2: Правильность кода, качество и (над) уверенность
9.3. Выпуск 3: Понимание и обслуживание кода
9.4. Выпуск 4: Последствия автоматизации в программировании конечных пользователей
9.5. Выпуск 5: Код без кода и дилемма прямого ответа
10. Заключение
A. Источники отчета о испытании
Ссылки
7.2 Активность программирования сдвигается в сторону проверки и незнакомой отладки
Когда код может быть сгенерирован быстро, как наблюдается с исследованиями в разделе 6, проверка правильной формы генерации кода становится основным узким местом. Этот сдвиг или компромисс, более быстрого авторизации за счет большего времени, проведенного проверкой кода, не без критики. Для некоторых это неправильный баланс приоритетов между системой и программистом.
Соответственно, некоторые пользователи разработали эвристику для того, когда стоимость оценки правильности кода больше, чем время или усилия, сохраненные с помощью генерации кода, например, сосредоточиться на очень коротких (например, одной строке) завершениях и игнорировании более длительных завершений.
Кроме того, некоторые пользователи обнаружили, что вместо того, чтобы иметь предложения постоянно показывать, что может отвлекаться и занимать много времени, может быть использовано более преднамеренное использование из -за того, что выключите автосуггированное усилие и только запустив завершение кода вручную, используя сочетание клавиатуры. Тем не менее, это требует, чтобы пользователи сформировали ментальную модель, когда Copilot, вероятно, поможет им в их рабочем процессе. Эта ментальная модель требует времени и преднамеренности для построения и может быть неверной. Более того, он вводит новое когнитивное бремя постоянной оценки, будет ли текущая ситуация выиграть от помощи LLM. Комментаторы на Hacker News поднимают эти проблемы:
«Я считаю, что трачу свое время на рассмотрение предложений об копировании (которые в основном неверны), а не думать о коде и фактически выполнять работу».
«[...] гораздо быстрее читать код, чем написать его. Кроме того, 95% предложений об копировании являются одной линией, и они почти всегда правы (и также совершенно необязательны). [...] Я признаю, что я параноик каждый раз, когда он предлагает более 2 строк, поэтому я обычно избегаю его. Затем я начал облегчить, так как это было точнее, а затем я усвоил свой второй урок с другой ошибкой.
«[...] Написание кода не является узким местом, нуждающимся в оптимизации. Зачатие решения. В любое время« сохранено »через копилог, и его непосредственно аннулируется, чтобы проверить его правильность. [...]»
«Что я хочу, так это копило, который находит ошибки [...] инвертирует отношения. Мне не нужен какой -нибудь генератор шаблонов, мне нужен придиркий, который умнее, чем Линтер. Я умный мыслитель с биологическим мозгом, который невнимателен.
«Я отключил автоматическую самостоятельную, и это имело огромное значение. Теперь я буду использовать его, когда узнаю, что делаю что-то повторяющееся, что это будет легко, или если я не уверен на 100% уверен, что я хочу сделать, и мне любопытно, что это предлагает. Таким образом, я получаю помощь, не прерывая мои мысли своими предложениями».
Другим частым опытом является то, что языковые модели могут вводить тонкие, трудно обнаружить ошибки, которые не являются теми, которые могут быть представлены человеческим программистом, пишущим код вручную вручную. Таким образом, существующие интуиции разработчика вокруг источников ошибок в программах могут быть менее полезными или даже вводящими в заблуждение при проверке правильности сгенерированного кода.
Один разработчик сообщил о своем опыте наличия неверного, но правдоподобного названия поля, предложенного Copilot (AccessTokensecret вместо AccessSecret) и последующей погоней за отладкой дикой гусей до обнаружения проблемы. В качестве источников ошибок эти инструменты являются новыми, и разработчикам необходимо изучать новые методы ремесел для отладки.«Есть нулевые места, которые могут научить вас этим вещам. Вы должны испытать их и разблокировать такие знания»., разработчик завершает,«Не позволяйте инструментам AI завершить код, управлять вашей работой.Полем Комментаторы на новостях Hacker аналогичный опыт:
«[...] самая большая проблема, с которой я столкнулся, заключается не в том, что она не пишет правильно, а в том, что он думает, что знает, как, а затем с первого взгляда с хорошим выглядящим кодом, но с неправильной логикой. [...]» »
«[...] оказалось очень хорошим в создании поверхностно привлекательного результата, который может выдержать не только быстрое сканирование, но и для умеренно глубокого чтения, но и все еще разваливается на более осторожном чтении. [...] это сверхничный эффект типа долины. Кроме того, опасности почти самостоятельного вождения;
«[...] код, который он генерируетвнешний видПравильно, но обычно неверно заметить пути, но вещи, которые вы никогда не пишете себе ».
Многие разработчики сообщили о проблемах, связанных с такими инструментами, повторяющими частную информацию или повторяя авторские права на код, что может иметь значение для лицензий в их собственных проектах. Понятия об опасностях таких «стохастических попугаев» (Bender et al., 2021) не являются новыми и были хорошо развязаны, и не так напрямую связаны с пользовательским опытом помощи в программировании, как некоторые другие проблемы, которые мы перечислили здесь. Таким образом, здесь мы не будем подробно рассмотреть эту дискуссию, за исключением того, что эти проблемы присутствовали в нескольких статьях в блоге и онлайн -дискуссиях.
Таким образом, на практике программисты описывают проблемы написания эффективных подсказок, неверно истолкованного намерения, кода, который включает в себя тонкие ошибки или плохие методы программирования, бремя осмотра и проверки, которое сгенерированное код является правильным, и беспокоиться о личной информации, плагиате и авторском праве.
Авторы:
(1) Advait Sarkar, Microsoft Research, Кембриджский университет (advait@microsoft.com);
(2) Эндрю Д. Гордон, Microsoft Research, Эдинбургский университет (adg@microsoft.com);
(3) Карина Негрину, Microsoft Research (cnegreanu@microsoft.com);
(4) Christian Poelitz, Microsoft Research (cpoelitz@microsoft.com);
(5) Sruti Srinivasa Ragavan, Microsoft Research (a-srutis@microsoft.com);
(6) Бен Зорн, Microsoft Research (ben.zorn@microsoft.com).
Эта статья есть
Оригинал