ОТЗЫВ руководителя на выпускную квалификационную работу бакалавра кафедры системного программирования СПбГУ направления 010500 “Математическое обеспечение и администрирование информационных систем” Вьюгинова Николая Юрьевича “Динамическое выделение типов в Ruby” Ruby — один из популярных языков объектно-ориентированного программирования, используемый в разработке клиент-серверных веб-приложений. Это язык семейства динамически типизируемых, для которого классические алгоритмы статического анализа практически бессильны в плане проверки семантической корректности конструкций (видозависимый анализ) из-за возможности динамически менять менять структуру программы и код. Одной из самых популярных сред разработки для языка Ruby является среда RubyMine, разрабатываемая компанией JetBrains. Для интегрированной среды разработки видозависимый анализ необходим не только для предварительной проверки корректности, но и для обеспечения удобства редактирования кода, например, подсказками программисту о том, какие значения принимает аргумент функции. Поскольку для среды разработки точный видозависимый анализ не является обязательным, но чем точнее определяется тип (как множество допустимых значений), тем лучше, решено было попробовать реализовать нестрогий анализ типов. Перед Вьюгиновым Н.Ю. была поставлена следующая задача: реализовать видозависимый анализ для языка программирования Ruby на основе собираемой во время выполнения программы информации о фактических аргументах методов. Собственно сбор необходимой информации из виртуальной машины Ruby, алгоритм вывода типов и интеграция в среду — всё это было подзадачами, которые Николаю предстояло решить в ходе работы. Считаю, что Николай прекрасно справился со всеми задачами в полном объёме, продемонстрировал практические навыки разработки и хороший уровень владения теоретическими знаниями. Текст дипломной работы, хоть и не абсолютно идеален по стилистике, четко описывает разработанное решение, включая алгоритмы. Работу положительно выделяет наличие теоретического результата: был использован конечно-автоматный подход к представлению типовых контрактов, при этом формально определены и доказаны необходимые свойства, в том числе, приводится формальное обоснование оценки сложности. Код реализации работы является свободным программным обеспечением и выложен в свободном доступе в сети Интернет. Проект реализован на должном техническом уровне. Основные результаты представлялись на следующих конференциях. Современные технологии в теории и практике программирования, СПбПУ, 26.04.2017, опубликованы тезисы доклада. СПИСОК-2017 “Всероссийская научная конференция по проблемам информатики”, СПбГУ, 25-27 апреля 2017 г. “SYRCoSE Software Engineering Colloquium” 2017, Иннополис, 4-7 июня 2017 г. (принята к докладу). Продемонстрированные студентом за время сотрудничества ответственность и самостоятельность, общий уровень теоретической подготовки и практических навыков позволяют утверждать, что Вьюгинов Н.Ю. является сложившимся молодым специалистом в области системного программного обеспечения. Такая работа, безусловно, заслуживает оценки “отлично”, а Николаю рекомендую продолжить работу над темой в магистратуре. Старший преподаватель кафедры системного программирования Я.А.Кириленко 25.05.2017