Как стать автором
Поиск
Написать публикацию
Обновить

Действительно ли ИИ умеет программировать?

Время на прочтение5 мин
Количество просмотров2.6K
Автор оригинала: Rachel Gordon

Исследование MIT о барьерах на пути к автономной разработке ПО

От переводчика: Новое исследование MIT развенчивает популярные мифы об ИИ в программировании и показывает реальные барьеры на пути к автономной разработке ПО. Оригинал статьи опубликован в MIT News.

Представьте будущее, где искусственный интеллект молча берет на себя рутинную работу в разработке ПО: рефакторинг запутанного кода, миграцию legacy-систем и поиск состояний гонки (race conditions), позволяя инженерам-людям сосредоточиться на архитектуре, дизайне и действительно новых проблемах, которые пока недоступны машинам.

Последние достижения, казалось бы, приблизили нас к этому будущему, но новая работа исследователей из MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) и нескольких партнерских институтов утверждает, что эта потенциальная реальность требует трезвого взгляда на современные вызовы.

Что показало исследование

Работа под названием "Challenges and Paths Towards AI for Software Engineering" ("Вызовы и пути к ИИ для разработки программного обеспечения") анализирует множество задач разработки ПО за пределами генерации кода, выявляет текущие узкие места и указывает на перспективные направления исследований для их преодоления, с целью позволить людям сосредоточиться на высокоуровневом дизайне, пока рутинную работу автоматизируют.

"Все говорят о том, что программисты больше не нужны, и теперь доступна вся эта автоматизация", — говорит Армандо Солар-Лезама, профессор электротехники и компьютерных наук MIT, главный исследователь CSAIL и старший автор исследования. "С одной стороны, область добилась огромного прогресса. У нас есть инструменты, которые гораздо мощнее всего, что мы видели раньше. Но до полной автоматизации, которую мы ожидаем, еще очень далеко."

Мифы против реальности: что такое настоящая разработка ПО

Солар-Лезама утверждает, что популярные нарративы часто сводят разработку ПО к "студенческой части программирования: кто-то дает вам спецификацию небольшой функции, и вы ее реализуете, или решаете задачи в стиле LeetCode на собеседованиях".

Реальная практика гораздо шире:

Ежедневная работа разработчика включает:

Рефакторинг, который улучшает дизайн, масштабные миграции — перевод миллионов строк с COBOL на Java, меняющий целые бизнесы, непрерывное тестирование и анализ — фаззинг, property-based тестирование и другие методы для поиска багов конкурентности или исправления уязвимостей нулевого дня, а также рутину сопровождения — документирование десятилетнего кода, создание сводок истории изменений для новых коллег, ревью пулл-реквестов на стиль, производительность и безопасность.

Оптимизация кода в промышленных масштабах

Например, тонкая настройка GPU-ядер или непрерывные многоуровневые улучшения движка V8 в Chrome остается крайне сложной для оценки.

Проблема №1: Ограниченные бенчмарки

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

Де-факто стандарт области — SWE-Bench — ставит перед моделью задачу исправить баг в GitHub: это полезно, но все еще напоминает парадигму "студенческого программного упражнения".

Ограничения SWE-Bench:

SWE-Bench касается только нескольких сотен строк кода, создает риск утечки данных из публичных репозиториев и игнорирует другие реальные контексты: ИИ-ассистированный рефакторинг, парное программирование человек-ИИ, критичные по производительности переписывания миллионов строк.

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

Проблема №2: Слабая коммуникация человек-машина

Алекс Гу, первый автор и аспирант MIT по электротехнике и компьютерным наукам, видит сегодняшнее взаимодействие как "тонкую линию коммуникации".

Типичная проблема:

Когда он просит систему сгенерировать код, он часто получает большой неструктурированный файл и даже набор unit-тестов, но эти тесты поверхностны.

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

Критичный аспект

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

Проблема №3: Масштаб усугубляет сложности

Современные модели ИИ серьезно страдают при работе с большими кодовыми базами, часто охватывающими миллионы строк.

Проблема уникальности каждой компании:

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

Результат — код, который:

Выглядит правдоподобно, но вызывает несуществующие функции, нарушает внутренние правила стиля и не проходит пайплайны непрерывной интеграции.

Это часто приводит к тому, что ИИ-сгенерированный код "галлюцинирует" — создает контент, который выглядит правдоподобно, но не соответствует специфическим внутренним соглашениям, вспомогательным функциям или архитектурным шаблонам данной компании.

Проблема №4: Неправильный поиск кода

Модели часто ошибочно извлекают информацию, потому что ищут код с похожим названием (синтаксис), а не функциональностью и логикой, что действительно нужно модели, чтобы знать, как написать функцию.

"Стандартные техники поиска очень легко обмануть фрагментами кода, которые делают одно и то же, но выглядят по-разному", — говорит Солар-Лезама.

Призыв к действию: что нужно сделать

Поскольку нет универсального решения для этих проблем, авторы призывают к объединению усилий всего сообщества.

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

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

В-третьих, необходимы прозрачные инструменты, которые позволяют моделям раскрывать неуверенность и приглашать к человеческому руководству, а не к пассивному принятию.

Гу называет эту повестку "призывом к действию" для более крупных open-source коллабораций, которые ни одна лаборатория не могла бы организовать в одиночку.

Видение будущего

Солар-Лезама представляет пошаговые улучшения — "исследовательские результаты, которые по частям решают каждый из этих вызовов" — которые затем внедряются в коммерческие инструменты и постепенно превращают ИИ из помощника-автодополнения в настоящего инженерного партнера.

Почему это важно?

"Программное обеспечение уже лежит в основе финансов, транспорта, здравоохранения и мелочей повседневной жизни, и человеческие усилия, необходимые для безопасного построения и поддержания его, становятся узким местом. ИИ, который может взять на себя рутинную работу — и делать это без введения скрытых сбоев — освободит разработчиков для сосредоточения на креативности, стратегии и этике", — говорит Гу.

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

Экспертная оценка

"Учитывая множество новых исследований в области ИИ для программирования и сообщество, часто гонящееся за последними трендами, бывает сложно отступить назад и подумать о том, какие проблемы наиболее важно решать", — говорит Батист Розьер, ученый по ИИ в Mistral AI, который не участвовал в исследовании. "Мне понравилось читать эту работу, потому что она дает четкий обзор ключевых задач и вызовов в области ИИ для разработки ПО. Она также намечает перспективные направления для будущих исследований."

Исследовательская команда

Гу и Солар-Лезама написали статью совместно с Кушиком Сеном, профессором Калифорнийского университета в Беркли, и PhD студентами Наманом Джейном и Манишем Шетти, а также с Кевином Эллисом, доцентом Корнелльского университета, и PhD студентом Вен-Дином Ли, с Дии Ян, доцентом Стэнфордского университета, и PhD студентом Ицзя Шао, и с Зияном Ли, будущим доцентом Университета Джонса Хопкинса.

Теги:
Хабы:
+3
Комментарии3

Публикации

Ближайшие события