Отзыв научного руководителя на выпускную квалификационную работу студента 445 группы Танкова Владислава Дмитриевича “Основанный на данных синтез кода в IntelliJ IDEA” Задача автоматизированного написания программ всегда вызывала интерес у исследователей. Идея состоит в том, что на вход такому инструменту подаётся описание требуемой программы в некотором формальном или неформальном виде, а на выходе получается код на заданном языке программирования, решающий поставленную задачу или удовлетворяющий заданным требованиям. И если в общем виде задача видится крайне сложно разрешимой, то для ряда частных случаев получены весьма интересные и применимые на практике результаты. Одним из таких подходов является подход Bayesian Sketch Learning (BSL-подход), предложенный группой исследователей из Университета Райса и позволяющий по заданным типам данных и вызовам библиотечных методов генерировать участки кода, использующие эти типы данных и вызовы методов. Авторы реализовали данный подход в виде нескольких прототипов под общим названием Bayou, однако, как и любой прототип, реализованный в рамках отдельного инструмента, использовать его в повседневной работе довольно затруднительно. Владиславу Дмитриевичу была поставлена задача интегрировать наработки авторов BSL-подхода с популярной средой разработки IntelliJ IDEA, что автоматически делает этот инструмент доступным всем пользователям IDEA. Владислав Дмитриевич провёл обширную исследовательскую работу, в деталях разобравшись в методах машинного обучения, лежащих в основе BSL-подхода. Он также подробно изучил исходный код Bayou и разработал гибкую архитектуру, позволяющую переиспользовать и комбинировать различные части Bayou, настраивая синтезатор под свои нужды. Так как IntelliJ IDEA реализована на Java, и все подключаемые модули к ней должны также исполняться на виртуальной машине Java, некоторые части Bayou, реализованные на Python, пришлось реализовать заново. В результате получилось целостное решение, позволяющее пользователям IntelliJ IDEA удобно генерировать участки кода, работающие со стандартной библиотекой Java и с Android SDK. По результатам работы был сделан доклад на конференции SEIM’18, тезисы доклада будут опубликованы в сборнике трудов конференции, индексируемым в базе данных научных работ Scopus. В ходе работы Владислав Дмитриевич активно взаимодействовал с научным руководителем и другими членами исследовательской группы, в которой выполнялся данный проект, продемонстрировав высокий уровень технических, аналитических навыков и навыков работы в команде. На мой взгляд, работа заслуживает оценки “отлично”. к.т.н., доцент кафедры системного программирования СПбГУ Т.А.Брыксин