Отзыв научного руководителя на выпускную квалификационную работу студента 471 группы Смиренко Кирилла Петровича “Детектор аномалий в программах на языке Kotlin” Для проверки производительности компилятора любого языка программирования часто составляют набор тестов в виде фрагментов кода, содержащих типовые конструкции языка. Часто в такие наборы добавляют и тесты на некорректные конструкции: их компилятор также должен корректно обрабатывать. Однако полнота подобных тестовых наборов ограничивается фантазией разработчиков языка. В случае, если у языка обширное сообщество, заведомо найдутся люди, которые будут писать программы таким образом, каким авторы языка и не предполагали. Подобные фрагменты кода можно считать кодовыми аномалиями: это может быть корректный код, но он написан крайне нетипично. Кодовые аномалии крайне интересны для разработчиков языков, поскольку позволяют не только оценить работу компилятора в подобных нестандартных случаях, но и в целом посмотреть на то, как язык используется (и может даже внести какие-то изменения в план его развития). Кириллу Петровичу была поставлена задача разработки инструментария для автоматизированного определения кодовых аномалий для языка программирования Kotlin: относительно молодого объектно-ориентированного языка с непрерывно растущим и активным сообществом. Кирилл Петрович провёл обширную аналитическую работу: изучил существующие методы детектирования аномалий в непомеченных данных, а также подходы к векторизации исходного кода, необходимой для его автоматизированного анализа методами машинного обучения. При помощи сервиса GitHub им был сформирован большой набор данных, содержащий в себе около 930 тысяч уникальных файлов с кодом на Kotlin. На данном наборе была проведена серия экспериментов и подобраны оптимальные для данной задачи параметры нескольких алгоритмов. Результатом работы стал список из 322 аномалий, разбитых на 23 класса. На основе этого списка был сформирован отчёт, переданный разработчикам языка Kotlin. Более трети найденных аномалий были оценены авторами Kotlin как полезные, что показывает практическую пользу от проделанной работы. По результатам работы была подана статья на тематический практический семинар (workshop) при конференции ECOOP 2018 (32nd European Conference on Object-Oriented Programming). В ходе работы Кирилл Петрович активно взаимодействовал с научным руководителем, продемонстрировав хорошие навыки как анализа проблемы, так и непосредственно программирования. На мой взгляд, работа заслуживает оценки “отлично”. к.т.н., доцент кафедры системного программирования СПбГУ Т.А.Брыксин