Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

Drupal

Еще раз про ИИ в разработке

На днях погонял Codeium на генерации юнит-тестов. Что сказать, отлично ассистирует. Например, быстро сканирует и улавливает специфику — мок-классы, prophecy, методы, генерирующие тестовые структуры — и тут же их использует. Не всегда, конечно, понимает на 100%, какой вызов надо тестировать (тут специфика сказывается, если бы тестировал простой REST API, думаю бьло бы сильно лучше). Но вот подготовку данных и проверку результатов заполняет почти точно.

Также Кодиум отлично генерирует «обратные» тесты. Если, например, есть уже написанный и рабочий тест users_can_delete_their_data(), то достаточно написать Test that user cannot delete another user's data и тест сразу генерируется в точности какой нужно.

В целом, на мой взгяд, относиться к данному явлению — генерации кода AI — следует как к усовершенствованному, ускоренному, интегрированному прямо в пальцы IDE интерфейсу к StackOverflow. И работать с этим кодом так же. То есть если просто вставлять сгенерированный код без анализа, получится такое же говно, как если не читая копировать «решения» со стэковерфлоу. Поэтому лично я использую в данный момент генерацию для того, чтобы AI написал за меня то, что я и так примерно (хотя бы) знаю как написать, просто роботом писать немножко быстрее. После чего сразу пропускаю код через себя, проверяю, анализирую и правлю. Соответственно, поскольку я знаю, что хотел, мне сразу видно, что нужно поправить, что получилось нормально, а что даже лучше, чем я думал.

Кстати, стоит отметить и встроенный в VS Code интеллисенс, или как его там. Это тоже ИИ, как я понял, в первую очередь нужный для умных автодополнений. В начале работы с VS Code (давно, когда только для C# и Unity его использовал) я как-то не заметил особых плюшек и не вспоминал про него. А тут по мере продвижения по проектам заметил, что он становится всё умнее в плане контекста. И если поначалу он мог разве что предложить (хоть и довольно удачно) название для переменной или функции, то теперь когда я пишу в коде комментарий типа

// if subcommand corresponds to a form element key, run form element request handler

под ним интеллисенс немедленно предлагает код

if (in_array($this->subcommand, array_keys($this->getForm()))) {
}

и этот код в точности соответствует тому, что я хотел написать. И мне нужно только нажать Tab для выражения согласия. Полагаю, если бы я заранее реализовал "form element request handler", то в условном блоке он бы тоже уже был вызван.

Резюмируя, должен сказать, что искусственный интеллект в программировании сейчас — это весьма полезный инструмент, не применять который в наши дни, скажем так, легкомысленно. Но в то же время, применять его нужно с умом, обязательно анализируя результат. И тогда всем нам будет сингулярность счастье.

Комментарии