Вопрос или проблема
Я начал использовать VScode, чтобы помочь мне писать скрипты на Posh. Это лучше, чем копирование и вставка из chatgpt, так как он предназначен для меньшего количества болтовни и имеет кнопку для выгрузки того, что он придумал, в терминал.
Однако, если терминал выдает ошибку или создает вывод, который ничего общего не имеет с тем, что я описываю, VSCode AI – Copilot – этого “не видит”.
Например, предположим, я прошу Copilot
Напиши банальный, клишированный и тривиальный скрипт, который делает ничего, кроме как
бессмысленно приветствует всех на Земле.
Очевидно, я хочу вывести
Я говорю: привет, мир!
Однако, Copilot часто делает что-то вроде этого
$exclamation = "Я говорю"
$greeting = "привет"
$recipient = "мир"
$wholething = "$exclamation: $greeting $recipient"
Это, конечно, возвращает:
| Ссылка на переменную недействительна. ':' не был последован допустимым символом имени переменной.
| Рассмотрите возможность использования ${} для разграничения имени.
Я бы хотел, чтобы CoPilot действительно посмотрел на вывод, понял, что это не то, что просят, удалил или правильно экранировал двоеточие и запустил сценарий снова.
Я новичок в VScode, поэтому возможно это функция, которую я не заметил. Если нет, какой другой инструмент я могу использовать? Предпочтительно бесплатный.
Ответ или решение
В мире разработки программного обеспечения интегрированные среды разработки (IDE) играют ключевую роль, упрощая кодирование и предлагая множество функций, таких как автозаполнение, отладка и указание на ошибки. В последние годы появление искусственного интеллекта (ИИ) добавило новый уровень возможностей для IDE, включая такие инструменты, как GitHub Copilot, который предлагает автоматическое создание кода и поддержку во время разработки. Однако текущие инструменты ИИ, в основном, ориентированы на генерацию кода на основе контекста, а не на анализ выходных данных или обработку ошибок.
Теория
Современные AI-ассистируемые инструменты, такие как GitHub Copilot, способны предлагать код в реальном времени и интегрированы с такими популярными текстовыми редакторами, как Visual Studio Code (VSCode). Хотя они специализируются на помощи в написании кода, у них имеются значительные ограничения, когда дело доходит до анализа выполнения кода и обратной связи на основании выходных данных программы. Copilot, например, использует модели машинного обучения, обученные на широком массиве данных, для понимания и предсказания намерений разработчика. Однако текущая функциональность Copilot не позволяет ему обрабатывать и понимать синтаксическую или логическую правильность уже исполненного кода.
Пример
Предположим, что пользователь вводит команду через Copilot, например, скрипт на языке PowerShell, как в вашем примере:
$exclamation = "I say"
$greeting = "hello"
$recipient = "world"
$wholething = "$exclamation: $greeting $recipient"
Если скрипт выдает ошибку, такую как:
| Variable reference is not valid. ':' was not followed by a valid variable name character.
| Consider using ${} to delimit the name.
Copilot, в текущем виде, не сможет автоматически интерпретировать ошибку и внести необходимые исправления в код. Существующие ИИ-инструменты, сосредоточенные на стороне редактирования, не автоматизируют процесс коррекции на основе выходных данных или анализированных ошибок.
Применение
На сегодняшний день существует ограниченное количество IDE или инструментов, которые могут предложить полный цикл: генерацию кода ИИ, анализ выходных данных, автоматическую коррекцию и повторный автозапуск. Разработка таких систем требует не только средств ИИ для генерации кода, но и внедрения сложных алгоритмов, способных анализировать выходные потоки и ошибки, таким образом имитируя процесс отладки с помощью разработчика.
Тем не менее, для пользователей, которым необходимо комбинированное решение, существуют определенные пути улучшения рабочего процесса:
-
Интеграция CI/CD: Можно настроить процессы непрерывной интеграции и доставки (Continuous Integration/Continuous Deployment), чтобы автоматически тестировать новые изменения кода и выносить основные проблемы, которые возникли в результате тестирования.
-
Инструменты статического и динамического анализа: Используйте инструменты статического анализа вроде ESLint или SonarQube, которые помогают выявлять потенциальные проблемы в коде до его выполнения. Для тестирования выполнения кода применяйте динамический анализ с помощью таких библиотек, как Pytest для Python или JUnit для Java.
-
Плагины и расширения: Установите плагины или расширения к вашему редактору кода, которые предоставляют расширенные возможности обработки ошибок и предлагают дополнительные подсказки.
-
Ручной анализ и тестирование: Пока не существует доступных решений, полностью автоматизирующих процесс отладки, важно использовать ручное тестирование и анализ для проверки правильности выполнения кода.
Таким образом, на данный момент специалисты в области ИТ могут использовать комбинацию вышеперечисленных решений, чтобы смягчать ограничения существующих AI-поддерживаемых IDE. Перспективные достижения в области ИИ, возможно, в будущем приведут к появлению более "интеллектуальных" сред разработки, которые смогут автоматически воспринимать и обрабатывать ошибки выполнения кода, однако такой подход требует значительных исследований и разработок.