Создатель C++ раскритиковал вайбкодинг: «AI приводит к росту ошибок и уязвимостей»

Создатель C++ раскритиковал вайбкодинг: «AI приводит к росту ошибок и уязвимостей» — Tech | Versia.media

Создатель языка программирования C++ Бьёрн Страуструп сообщил, что современные инструменты искусственного интеллекта пока не способны качественно создавать сложный системный код и проектировать языки программирования. Тему вайб-кодинга обсудили в подкасте Райана Петермана.

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

Страуструп указал, что сложность заключается не только в качестве генерации, но и в верификации результата: изменения, внесённые ИИ, сложно отслеживать, поскольку небольшое изменение промпта может повлиять сразу на множество частей проекта.

«Код, сгенерированный ИИ, обычно более подвержен изменениям, чем код, написанный человеком. Когда разработчик вносит правки, они, как правило, локальны, и можно относительно легко проследить их последствия. С ИИ всё иначе: вы не всегда понимаете, что именно изменилось и где, поэтому приходится разбираться», — подчеркнул Бьёрн Страуструп.

При этом отец C++ не утверждает, что ИИ бесполезен. По его мнению, ИИ можно применять для написания документации, но проверять её всё равно должен человек.

«На данный момент ИИ плохо справляется с кодом, критичным для безопасности или производительности. Конечно, возможно, 70–80% всего программного кода не относятся к таким категориям. Но меня интересуют именно те 10–20%, где требования особенно высоки. Вот там ИИ пока не дотягивает».

Также в подкасте затронули тему LLM. Страуструп отметил, что LLM обучается на уже существующем коде, на старых подходах и решениях.

«Проблема LLM-генерации в том, что она в основном воспроизводит старый код вместе со старыми ограничениями производительности и ошибками. Возможно, это можно улучшить. Я слышал, что существуют так называемые «Бьёрн-приложения», которые опираются на мои работы, но даже тут есть сложность: сегодня я говорю уже не совсем то же самое, что говорил двадцать лет назад».

Своим мнением по поводу активного распространения AI-кодинга также поделились разработчики статического анализатора кода PVS-Studio. Инструмент специализируется на поиске ошибок в коде, написанном в том числе на языке программирования C++.

Филипп Хандельянц, руководитель разработки статических анализаторов PVS-Studio:

Критика Бьёрна Страуструпа полностью оправдана в случаях, когда разработчик просто вставляет результат работы ИИ-агента в проект. При таком подходе, в зависимости от промпта, нейросеть может сгенерировать неоптимальный код, к тому же содержащий баги и/или потенциальные уязвимости. Мы видели подтверждение этому при проверках проектов, написанных с помощью вайбкодинга: Vib-OS, markus. К счастью, авторы этих проектов ставили перед собой цель не написать production-level решение для всех, а скорее провести тематическое исследование.

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

Олег Лысый, руководитель направления разработки C++:

Безусловно, ИИ — это инструмент, который уже вошел в нашу жизнь. У нас нет выбора, использовать его или нет. Вопрос только в том, как именно его применять. Подход, при котором ИИ-агент генерирует код по описанию задачи в трекере задач и сразу же заливает его в кодовую базу, невозможно применять для серьезной разработки (кто-то вообще так делает в здравом уме?).

Тем не менее с тем же успехом можно критиковать использование IDE с их системами автодополнения кода. Представьте, что мы будем критиковать подход, при котором разработчик пишет случайную букву на клавиатуре, жмет кнопку Tab для автодополнения и сразу же коммитит код. Звучит безумно? Вот и мне хайп вокруг ИИ кажется безумием.

← Tech