title: Ð ÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð² ÑÐ·ÑÐºÐµ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Kotlin
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð¼Ð°Ð³Ð¸ÑÑÑÐ°
titleType: Subtitle
title: Implementation of reified typed parameters in the Kotlin programming language
Creators: name: ÐÑÐ½Ð¸ÑÐ·Ð¾Ð², Ð¢Ð¸Ð¼ÑÑ
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2020
Subjects: Ð½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ðµ
Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¸ÑÐµÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸Ð¼Ð¾ÑÑÐ¸Ð·Ð¼
ÐºÐ¾ÑÐ»Ð¸Ð½
inheritance
parametric polymorphism
kotlin

description: Ð¢ÐµÐ¼Ð° Ð²ÑÐ¿ÑÑÐºÐ½Ð¾Ð¹ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð¾Ð¹ ÑÐ°Ð±Ð¾ÑÑ: Â«Ð ÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ñ Ð²Ð¾ÑÑÑÐ°Â­Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð² ÑÐ·ÑÐºÐµ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ KotlinÂ». ÐÐ°Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð¿Ð¾ÑÐ²ÑÑÐµÐ½Ð° Ð²Ð¾Ð¿ÑÐ¾ÑÑ ÑÐµÐ»ÐµÑÐ¾Ð¾Ð±ÑÐ°Ð·Ð½Ð¾ÑÑÐ¸ Ð²ÑÐ±Ð¾ÑÐ¾ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÐ¸ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð² ÑÐ·ÑÐºÐµ Kotlin Ñ ÑÐ¾ÑÂ­ÐºÐ¸ Ð·ÑÐµÐ½Ð¸Ñ ÑÑÐµÐ½Ð°ÑÐ¸ÐµÐ² Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ, Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ Ð´ÑÑÐ³Ð¸Ð¼Ð¸ Ð¾ÑÐ¾Â­Ð±ÐµÐ½Ð½Ð¾ÑÑÑÐ¼Ð¸ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÐ·ÑÐºÐ° Ð¸ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ ÑÐ°ÐºÐ¾Ð¹ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸Ð¸ Ð¿ÑÐ¸ Ð¾ÑÑÑÑÑÑÐ²Ð¸Ð¸ Ð¿ÑÑÐ¼Ð¾Ð¹ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÐ¸ Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÐ¸ ÑÐ¾ ÑÑÐ¾ÑÐ¾Ð½Ñ Ð²Ð¸ÑÑÑÐ°Ð»ÑÐ½Ð¾Ð¹ Ð¼Ð°ÑÐ¸Ð½Ñ Java. Ð ÑÐ¾Ð´Ðµ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±ÑÐ»Ð¸ ÑÐµÑÐµÐ½Ñ ÑÐ»ÐµÐ´ÑÑÑÐ¸Ðµ Ð·Ð°Ð´Ð°ÑÐ¸: âÐ±ÑÐ»Ð¸ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ñ Ð¾ÑÐ½Ð¾Ð²Ð½ÑÐµ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÐ¸ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¸ÑÐµÑÐºÐ¾Ð³Ð¾ Ð¿Ð¾Ð»Ð¸Â­Ð¼Ð¾ÑÑÐ¸Ð·Ð¼Ð°, Ð° ÑÐ°ÐºÐ¶Ðµ ÑÐ°Ð·Ð¾Ð±ÑÐ°Ð½Ð¾ Ð¸Ñ Ð¿ÑÐµÐ´ÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² ÑÐ·ÑÐºÐµ Ð¿ÑÐ¾Â­Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Kotlin; âÐ¿ÑÐ¾Ð²ÐµÐ´ÐµÐ½ Ð°Ð½Ð°Ð»Ð¸Ð· ÑÑÑÐµÑÑÐ²ÑÑÑÐ¸Ñ ÑÐµÑÐ½Ð¸Ðº Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð²; âÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½ Ð´Ð¸Ð·Ð°Ð¹Ð½ ÑÐµÑÐ½Ð¸ÐºÐ¸ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð´Ð»Ñ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¸Ð·Ð¾Ð²Ð°Ð½Ð½ÑÑ ÑÐ¸Ð¿Ð¾Ð² Ð² Kotlin; âÐ½Ð° Ð¾ÑÐ½Ð¾Ð²Ðµ ÑÑÐ¾Ð¹ ÑÐµÑÐ½Ð¸ÐºÐ¸ Ð±ÑÐ» ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½ Ð¿ÑÐ¾ÑÐ¾ÑÐ¸Ð¿ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¾ÑÐ° Ñ Ð²ÑÐ±Ð¾ÑÐ¾ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÐ¾Ð¹ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð²; âÐ¿ÑÐ¾Ð²ÐµÐ´ÐµÐ½Ð¾ ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð· Ð¿Ð¾Ð»ÑÑÐµÐ½Â­Ð½ÑÑ ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐ¾Ð². ÐÑÐ¾ÑÐ¾ÑÐ¸Ð¿ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¾ÑÐ° Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÐ¾Ð¹ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð±ÑÐ» ÑÐ´ÐµÐ»Ð°Ð½ Ð½Ð° Ð¾ÑÐ½Ð¾Ð²Ðµ Ð²ÐµÑÑÐ¸Ð¸ 1.3.70 ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑÐ¾ÑÐ° Kotlin.
Ð ÑÐ¾Ð´Ðµ ÑÐµÑÑÐ¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ÑÐµÐ»ÑÐ½Ð¾ÑÑÐ¸ Ð±ÑÐ»Ð¸ ÑÑÐ°Ð²Ð½ÐµÐ½Ñ Ð´Ð²Ðµ Ð²ÐµÑÑÐ¸Ð¸ Ð¿ÑÐ¾ÑÐ¾ÑÐ¸Ð¿Ð°, ÑÐ°Ð·Ð»Ð¸ÑÐ°ÑÑÐ¸ÐµÑÑ ÑÐµÐ°Ð»Ð¸Ð·Ð°ÑÐ¸ÐµÐ¹, Ð½Ð¾ Ð½Ðµ ÑÑÐ½ÐºÑÐ¸Ð¾Ð½Ð°Ð»ÑÐ½Ð¾ÑÑÑÑ,ÑÑÐ¾Ð±Ñ Ð²ÑÑÐ²Ð¸ÑÑ Ð±Ð¾Ð»ÐµÐµ Ð¿Ð¾Ð´ÑÐ¾Ð´ÑÑÑÑ. Ð ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐµ Ð±ÑÐ» ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½ Ð¿Ð¾Ð´Â­ÑÐ¾Ð´ Ð´Ð»Ñ Ð²ÑÐ±Ð¾ÑÐ¾ÑÐ½Ð¾Ð¹ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÐ¸ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ð¼ÑÑ ÑÐ¸Ð¿Ð¾Ð²ÑÑ Ð¿Ð°ÑÐ°Ð¼ÐµÑÑÐ¾Ð² Ð² ÑÐ·ÑÐºÐµ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Kotlin, Ð° ÑÐ°ÐºÐ¶Ðµ Ð²ÑÑÐ²Ð»ÐµÐ½Ñ Ð¾Ð³ÑÐ°Ð½Ð¸ÑÐµÐ½Ð¸Ñ Ð¸Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ (Ð½Ð°Ð¿ÑÐ¸Ð¼ÐµÑ, Ð²Ð¼ÐµÑÑÐµ Ñ Ð²Ð°ÑÐ¸Ð°Ð½ÑÐ½Ð¾ÑÑÑÑ Ð¿Ð¾ Ð¼ÐµÑÑÑ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ).
description: 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.