Может ли ИИ заменить разработчика — новое исследование MIT
Исследователи MIT и других институтов представили работу «Проблемы и пути к ИИ для инженерии ПО», в которой ИИ рассматривается как помощник программиста: он уже справляется с рутинными задачами — рефакторингом, миграцией старого кода и поиском гонок потоков — освобождая разработчиков для архитектуры и сложных задач.
Будущее ИИ в программной инженерии
Авторы подчеркивают, что несмотря на впечатляющий прогресс, до полной реализации обещаний автоматизации еще далеко. Они отмечают, что инженерия программного обеспечения выходит далеко за рамки генерации кода и требует глубокого понимания контекста, системного мышления и постоянного взаимодействия с существующей инфраструктурой.
Работа программистов включает:
— создание новых функций
— улучшение архитектуры
— миграцию миллионов строк устаревшего кода
— регулярное тестирование
— документирование
— анализ на уязвимости.
Так профессия программиста гораздо шире и сложнее, чем простая реализация алгоритмов или задачи уровня собеседований.
Проблемы измерения и оценки прогресса ИИ для программирования
Оптимизация кода промышленного масштаба, например, перенастройка ядер GPU или сложные многоуровневые улучшения движка V8 в Chrome — по-прежнему остается одной из самых трудных задач для объективной оценки. Современные метрики производительности были созданы для коротких, изолированных сценариев, и хотя тесты с множественным выбором до сих пор распространены в исследованиях по обработке естественного языка, для ИИ в области программирования они никогда не были адекватной мерой.
Главный существующий эталон — SWE-Bench — оценивает способность модели исправлять ошибки в репозиториях GitHub. Этот подход полезен, но отражает лишь часть реальности:
— задачи охватывают всего несколько сотен строк кода
— есть риск утечек данных из открытых репозиториев
— не учитываются широкий спектр практических сценариев, такие как, рефакторинг, совместное программирование человека и ИИ или критически важные переписывания систем, включающих миллионы строк.
Пока такие эталоны не научатся охватывать более масштабные и комплексные контексты, измерение реального прогресса ИИ в инженерии программного обеспечения останется нерешенной задачей.
Вызовы коммуникации и контекста в работе ИИ с кодом
Если измерение прогресса остается одной из главных проблем, то коммуникация между человеком и машиной — не менее серьезное препятствие. Современное взаимодействие программиста с ИИ пока напоминает тонкий и ненадежный канал связи. При генерации кода модели часто выдают объемные, неструктурированные файлы и поверхностные модульные тесты, не обеспечивающие реальной проверки корректности. Этот разрыв проявляется и в ограниченной способности ИИ использовать широкий спектр инструментов инженерии программного обеспечения — от отладчиков до статических анализаторов, которые необходимы для глубокого понимания и контроля качества кода.
Отсутствие прозрачности в работе моделей приводит к тому, что разработчики нередко вынуждены доверять коду, который компилируется, но может оказаться ошибочным при внедрении в рабочие системы. Для преодоления этого барьера необходимо, чтобы ИИ умел передавать степень уверенности в своих решениях и вовремя обращаться к пользователю за уточнениями.
Проблемы усиливаются с ростом масштаба. Большие кодовые базы с миллионами строк становятся серьезным испытанием:
— корпоративные репозитории имеют уникальные соглашения и стандарты
— ИИ может генерировать код, который выглядит корректным, но нарушает внутренние правила или не проходит проверки в CI/CD
— модели ошибаются при поиске фрагментов кода, ориентируясь на синтаксис, а не на функциональную логику, что снижает точность и надежность предложений.
Призыв к совместным усилиям и значение исследования
Авторы исследования подчеркивают, что универсального решения для существующих проблем не существует. Они призывают научное и инженерное сообщество к совместным усилиям: к созданию более богатых наборов данных, отражающих сам процесс написания кода — какие фрагменты разработчики сохраняют, какие удаляют и как код эволюционирует со временем. Исследователи также предлагают разрабатывать общие тестовые наборы, которые позволят измерять прогресс не только в точности генерации, но и в качестве рефакторинга, устойчивости исправлений и корректности миграций.
Отдельное внимание уделяется разработке прозрачных инструментов, способных показывать уровень уверенности модели и вовлекать человека в процесс принятия решений. Такой подход должен превратить ИИ из простого механизма автодополнения в полноценного инженерного партнера.
Это особенно важно, поскольку программное обеспечение лежит в основе всех ключевых сфер — от финансов и транспорта до здравоохранения. Человеческие ресурсы становятся узким местом, и именно ИИ, способный безопасно брать на себя рутинные задачи, сможет освободить специалистов для творческих и стратегических решений.
