Для этого система изучает структуру исходного кода и анализирует код программ с аналогичными свойствами. Точность MISIM до 40 раз превосходит современные системы проверки кода. Решение может использоваться для широкого спектра задач – от рекомендаций по программированию до автоматического исправления ошибок. MISIM была разработана Intel совместно с Массачусетским технологическим институтом (MIT) и Технологическим институтом Джорджии.
Важно. Создание систем точного выявления схожего кода пока что остается нерешенной проблемой. Современным компьютерам по-прежнему крайне сложно определять степень схожести двух фрагментов программы на основе анализа их исходного кода, а также понимать, что оба фрагмента выполняют одни и те же функции[1]. Система MISIM способна наиболее точно на сегодняшний день определять, когда два фрагмента исходного кода выполняют аналогичные вычисления, даже если они имеют разные алгоритмы и структуру данных.
Подробности. Ключевое отличие MISIM от существующих систем определения схожего кода – это новая контекстно-зависимая семантическая структура (contest-aware semantic structure, CASS). Цель CASS – определить, для чего предназначен тот или иной фрагмент кода. Она может быть настроена на определенный контекст – это позволяет ей эффективнее собирать информацию, описывающую код.
Как только структура кода интегрируется в CASS, несколько нейронных сетей оценивают степень сходства двух фрагментов на основе задач, которые они должны решать. То есть, если две части кода выглядят разными по структуре, но выполняют одни и те же функции, нейросети оценят их как схожие.
Другая особенность MISIM заключается в том, что она не использует компилятор[2]. Это позволяет системе анализировать неполные фрагменты кода, которые находятся в процессе разработки, что является одним из важнейших свойств для реализации системы подсказок и автоматического исправления ошибок.
Объединив все эти подходы в единую систему, исследователи Intel, MIT и Технологического института Джорджии выяснили, что MISIM позволяет до 40 раз точнее идентифицировать схожие фрагменты кода, чем другие существующие сегодня решения.
Перспективы. В настоящее время MISIM находится в стадии доработки, однако, проект уже перешел от исследовательской стадии к демонстрационным моделям. Они должны реализовать механизм рекомендаций к исходному коду для программистов, которые создают приложения, работающие в гетерогенных архитектурах. Такая система сможет распознавать задачи разрабатываемого алгоритма непосредственно в процессе его создания и предлагать семантически схожие, но более эффективные варианты его реализации.
[1] Машинное программирование призвано повысить производительность разработки программного ПО за счет автоматизации процессов. Ключевой технологией в новых инструментах машинного программирования является анализ схожести кода. В перспективе он поможет эффективно автоматизировать некоторые процессы в разработке ПО.
[2] Инструмент, который переводит понятный человеку текст программы в исполняемый машинный код.