Details

Title: Реализация восстановимых типовых параметров в языке программирования Kotlin: выпускная квалификационная работа магистра: направление 09.04.01 «Информатика и вычислительная техника» ; образовательная программа 09.04.01_15 «Технологии проектирования системного и прикладного программного обеспечения»
Creators: Ерниязов Тимур Ертлеуевич
Scientific adviser: Ицыксон Владимир Михайлович
Other creators: Новопашенный Андрей Гелиевич; Беляев Михаил Анатольевич
Organization: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Imprint: Санкт-Петербург, 2020
Collection: Выпускные квалификационные работы; Общая коллекция
Subjects: наследование; параметрический полиморфизм; котлин; inheritance; parametric polymorphism; kotlin
Document type: Master graduation qualification work
File type: PDF
Language: Russian
Level of education: Master
Speciality code (FGOS): 09.04.01
Speciality group (FGOS): 090000 - Информатика и вычислительная техника
Links: Отзыв руководителя; Рецензия; Отчет о проверке на объем и корректность внешних заимствований
DOI: 10.18720/SPBPU/3/2020/vr/vr20-751
Rights: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Record key: ru\spstu\vkr\6151

Allowed Actions:

Action 'Read' will be available if you login or access site from another network Action 'Download' will be available if you login or access site from another network

Group: Anonymous

Network: Internet

Annotation

Тема выпускной квалификационной работы: «Реализация восста­новимых типовых параметров в языке программирования Kotlin». Данная работа посвящена вопросу целесообразности выборочной поддержки восстановимых типовых параметров в языке Kotlin с точ­ки зрения сценариев использования, взаимодействия с другими осо­бенностями данного языка и производительности такой реализации при отсутствии прямой поддержки данной возможности со стороны виртуальной машины Java. В ходе исследования были решены следующие задачи: ∙были выделены основные возможности параметрического поли­морфизма, а также разобрано их представление в языке про­граммирования Kotlin; ∙проведен анализ существующих техник восстановления типовых параметров; ∙разработан дизайн техники восстановления типовых параметров для параметризованных типов в Kotlin; ∙на основе этой техники был реализован прототип компилятора с выборочной поддержкой восстановимых типовых параметров; ∙проведено тестирование производительности и анализ получен­ных результатов. Прототип компилятора с поддержкой восстановимых типовых параметров был сделан на основе версии 1.3.70 компилятора Kotlin. В ходе тестирования производительности были сравнены две версии прототипа, различающиеся реализацией, но не функциональностью,чтобы выявить более подходящую. В результате был разработан под­ход для выборочной поддержки восстановимых типовых параметров в языке программирования Kotlin, а также выявлены ограничения их использования (например, вместе с вариантностью по месту использования).

The subject of the graduate qualification work is “Implementation of reified typed parameters in the Kotlin programming language”. This work is devoted to a question of expediency of selective support of reified type parameters in Kotlin from the point of view of scenarios of use, interaction with other features of the given language and productivity of such realization at absence of direct support of the given possibility from Java virtual machine. During the research, the following tasks were solved: ∙the main features of parametric polymorphism were highlighted, and their presentation in the Kotlin programming language was analyzed; ∙analysis of existing techniques for reifying typed parameters; ∙the design of the technique for reifying typed parameters for parameterized types in Kotlin was developed; ∙based on this technique, a prototype compiler was implemented withselective support for reified typed parameters; ∙conducted performance testing and provided a comparison of the results. A prototype with support for reified typed parameters was made based on version 1.3.70 of the Kotlin compiler. During performance testing, two versions of the prototype were compared, differing inimplementation, but not in functionality, in order to identify a more suitable one. As a result, an approach was developed for the selective support of reified typed parameters in the Kotlin programming language,as well as limitations on their use (for example, along with use-sitevariance) were identified.

Document access rights

Network User group Action
ILC SPbPU Local Network All Read Print Download
External organizations N2 All Read
External organizations N1 All
Internet Authorized users SPbPU Read Print Download
Internet Authorized users (not from SPbPU, N2) Read
Internet Authorized users (not from SPbPU, N1)
-> Internet Anonymous

Table of Contents

  • СПИСОК ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ
  • ВВЕДЕНИЕ
  • 1. Параметрический полиморфизм и проблема восстановления типов параметров
    • 1.1. Параметрический полиморфизм
      • 1.1.1. Ограниченный параметрический полиморфизм
      • 1.1.2. Вариантность
    • 1.2. Параметрический полиморфизм в Kotlin
      • 1.2.1. Ограничения на параметры
      • 1.2.2. Вариантность в Kotlin
      • 1.2.3. Стирание типов
    • 1.3. Существующие техники восстановления типов параметров
      • 1.3.1. NextGen
      • 1.3.2. Microsoft .NET Common Language Runtime (C#)
      • 1.3.3. Run-Time Management Translation
      • 1.3.4. Load-Time Management Translation
      • 1.3.5. EGO компилятор
  • 2. Цели и задачи
    • 2.1. Цель работы
    • 2.2. Задачи
  • 3. Разработка техники восстановления типовых параметров в Kotlin
    • 3.1. Особенности языка программирования Kotlin
    • 3.2. Уровни поддержки восстановимых типовых параметров в языке
      • 3.2.1. Операции над типом параметра
      • 3.2.2. Операции над параметризованным типом
      • 3.2.3. Вложенные параметризованные типы
      • 3.2.4. Учет вариантности в операциях проверки подтипирования
      • 3.2.5. Параметризованные функции
    • 3.3. Дизайн
      • 3.3.1. Сохранение информации о типе
      • 3.3.2. Операции над типами
      • 3.3.3. Вариантность
      • 3.3.4. Использование рефлексии
      • 3.3.5. Двойное кэширование
  • 4. Разработка прототипа с поддержкой восстановимых параметров
    • 4.1. Устройство компилятора Kotlin
    • 4.2. Особенности реализации
    • 4.3. Библиотека для поддержки дескрипторов
      • 4.3.1. Дескриптор
      • 4.3.2. Реализация алгоритма подтипирования
      • 4.3.3. Приведение к типу и получение дескриптора типа
  • 5. Тестирование производительности
    • 5.1. Создание объекта
    • 5.2. Операции над типами
    • 5.3. Вывод
  • 6. Дальнейшее развитие
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ. ЛИСТИНГИ

Usage statistics

stat Access count: 12
Last 30 days: 1
Detailed usage statistics