Детальная информация

Название: Реализация явно типизированных полей в компиляторе языка Kotlin: выпускная квалификационная работа бакалавра: направление 09.03.01 «Информатика и вычислительная техника» ; образовательная программа 09.03.01_02 «Технологии разработки программного обеспечения»
Авторы: Луняк Николай Алексеевич
Научный руководитель: Глухих Михаил Игоревич
Организация: Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и технологий
Выходные сведения: Санкт-Петербург, 2022
Коллекция: Выпускные квалификационные работы; Общая коллекция
Тематика: язык программирования Kotlin; теневые свойства; компиляторы; Kotlin programming language; backing properties; compilers; language feature
Тип документа: Выпускная квалификационная работа бакалавра
Тип файла: PDF
Язык: Русский
Уровень высшего образования: Бакалавриат
Код специальности ФГОС: 09.03.01
Группа специальностей ФГОС: 090000 - Информатика и вычислительная техника
DOI: 10.18720/SPBPU/3/2022/vr/vr22-1229
Права доступа: Доступ по паролю из сети Интернет (чтение, печать, копирование)
Ключ записи: ru\spstu\vkr\16662

Разрешенные действия:

Действие 'Прочитать' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети Действие 'Загрузить' будет доступно, если вы выполните вход в систему или будете работать с сайтом на компьютере в другой сети

Группа: Анонимные пользователи

Сеть: Интернет

Аннотация

Тема выпускной квалификационной работы: «Реализация явно типизированных полей в компиляторе языка Kotlin».В настоящей работе рассмотрены проблемы, связанные с использованием шаблона «теневых свойств» (англ. backing properties) при написании исходного кода на языке программирования Kotlin. Данные проблемы являются специфичными для Kotlin, а потому готовых решений не имеют. Был проведен анализ разных вариантов их решения и выбраны самые оптимальные из них. Для выбранных вариантов были разработаны программные прототипы, представляющие собой модификации компилятора языка Kotlin, и позволяющие отказаться от использования шаблона «теневых свойств» с помощью специального синтаксиса.В рамках данной работы предлагается расширить синтаксис свойств в языке программирования Kotlin, позволив разработчику определить хранимый внутри поля объект и его тип явным образом, а также позволить получать доступ к этому полю с помощью специального механизма сужения типа в месте вызова при соблюдении определенных условий. Для остальных ситуаций предлагается способ получить доступ к полю свойства напрямую, а также способ получить доступ к членам класса-делегата для делегированных свойств.

The subject of the graduate qualification work is «Implementing explicit backing fields for the Kotlin compiler».The current work was aimed to review the problems introduced by the backing properties programming pattern, which can be frequently found in Kotlin source code. These problems are Kotlin-specific, and therefore ready-made solutions are unavailable. A number of different approaches to solve them has been reviewed, and the most appropriate solutions have been chosen. For the ones chosen the corresponding prototypes have been developed in forms of the modified Kotlin compiler versions allowing to abandon the backing properties pattern with the help of special syntax.This work suggests extending the Kotlin programming language with the ability to declare the object stored in a property field and its type explicitly, along with a mechanism of use-site type narrowing, available if certain conditions are satisfied. To cover other cases a way of accessing property fields and delegate members directly is suggested.

Права на использование объекта хранения

Место доступа Группа пользователей Действие
Локальная сеть ИБК СПбПУ Все Прочитать Печать Загрузить
Интернет Авторизованные пользователи СПбПУ Прочитать Печать Загрузить
-> Интернет Анонимные пользователи

Оглавление

  • Перечень условных обозначений и терминов
  • Введение
  • Недостатки шаблона теневых свойств
    • Специальный синтаксис
    • Свойства и поля
    • Две декларации
    • Дублирование кода
    • Бизнес-стратегия
    • Запрос пользователей
  • Обзор предметной области
    • Другие языки программирования
      • Swift
      • C# и Java
      • TypeScript
    • Имеющиеся предложения
  • Исследование возможных подходов
    • Раскрывающие геттеры
      • Геттеры без тела
      • Геттеры с альтернативными типами
      • Геттеры с большей видимостью
      • Тип раскрывающего геттера
      • Порядок вызова геттеров
      • Ручной вызов раскрывающего геттера
      • Сеттер
      • Перегрузка свойств
      • Проблема ментальной модели
    • Предложение пользователя Andylamax
    • Предложение пользователя Fádi Hannoun
    • Предложение пользователя CharlyLafon37
      • Области видимости
      • Многоуровневость
      • Ментальная модель
    • Явное поле и сужение типа
      • Явное теневое поле
      • Умное сужение типа
      • Явный прямой доступ к полю
      • Явный прямой доступ к делегату
    • Приватные геттеры
      • Тип поля
  • Реализация прототипа
    • Реализация раскрывающих геттеров
      • Подготовка имеющейся кодовой базы
      • Обновление механизма разрешения символов
    • Реализация явных теневых полей
    • Реализация прямого доступа с помощью знака 99993em.5#
      • Реализация прямого доступа к полю
      • Реализация доступа к делегату
      • Изменение приоритета оператора 99993em.5#
  • Заключение
  • Перечень используемых источников
  • Приложение А. Модификации парсера
  • Приложение Б. Построение FirBackingField
  • Приложение В. Резолв
  • Приложение Г. Чекер типов свойств
  • Приложение Д. Сужение типа свойства

Статистика использования

stat Количество обращений: 25
За последние 30 дней: 0
Подробная статистика