title: Static type inference for Python in IDE
metadata.name: dc.contributor.advisor
metadata.value: Лукьянова Ольга Евгеньевна
metadata.lang: ru_RU
metadata.name: dc.contributor.advisor
metadata.value: Lukanova Olga Evgenevna
metadata.lang: en_GB
metadata.name: dc.contributor.author
metadata.value: Мирошников Владислав Игоревич
metadata.lang: ru_RU
metadata.name: dc.contributor.author
metadata.value: Mirosnikov Vladislav Igorevic
metadata.lang: en_GB
metadata.name: dc.contributor.editor
metadata.value: Булычев Дмитрий Юрьевич
metadata.lang: ru_RU
metadata.name: dc.contributor.editor
metadata.value: Bulycev Dmitrij Urevic
metadata.lang: en_GB
metadata.name: dc.date.accessioned
metadata.value: 2023-07-26T12:45:13Z
metadata.lang: -
metadata.name: dc.date.available
metadata.value: 2023-07-26T12:45:13Z
metadata.lang: -
metadata.name: dc.date.issued
metadata.value: 2023
metadata.name: dc.identifier.other
metadata.value: 080531
metadata.lang: en_GB
metadata.name: dc.identifier.uri
metadata.value: http://hdl.handle.net/11701/42927
metadata.lang: -
metadata.name: dc.description.abstract
metadata.value: В наши дни сложно представить разработку программного обеспечения без использования интегрированных сред разработки (IDE), предоставляющих большой спектр различной функциональности, например, технологии автодополнения, анализа кода и многое другое. При этом неотъемлемой частью в любой среде разработки является компонента кодовой модели, которая отвечает в том числе и за синтаксический анализ исходного кода языка, построение синтаксического и расширенного семантического дерева, а также различных индексов. Одной из ключевых и важных задач в данной подсистеме является задача вывода типов для выражений соответствующего языка, поскольку на его основе осуществляется разработка другой функциональности IDE, например, разрешения квалифицированных имен в коде или технологии автодополнения. При этом для IDE особенно важно выводить типы статически, так как анализ кода для пользователя должен происходить до запуска самой программы. В рамках данной работы предлагается реализация подсистемы статического вывода типов для языка Python, имеющего динамическую типизацию, а также ее внедрение в разрабатываемую Python IDE. Помимо этого, в данной работе предлагается алгоритм вывода типов с использованием теории унификации и его расширения в виде системы с роу-полиморфизмом, а также приводятся экспериментальные сравнения с существующими решениями, показывающие эффективность данного подхода.
metadata.lang: ru_RU
metadata.name: dc.description.abstract
metadata.value: Nowadays, it is hard to imagine software development process without using integrated development environments (IDEs) providing a wide range of different functionality, such as code completion technologies, code analysis, and much more. Moreover, an integral part of any development environment is a code model component, which is responsible for parsing the source code of a language, building a syntax and extended semantic tree, as well as various indices with semantic information. One of the key and important tasks in this subsystem is the type inference for expressions of the corresponding language. This is the basis for developing other IDE functionality, such as qualified name resolution in code or qualified code completion. It is especially significant for the IDE to infer types statically, since source code must be analyzed before launching the program. This paper proposes an implementation of a Static Type Inference Subsystem for the Python language, which has dynamic typing, and its integration in the Python IDE. In addition, this paper suggests an algorithm for type inference using unification theory and its extension in the form of a system with row-polymorphism, and provides experimental comparisons with existing solutions to show the effectiveness of this approach.
metadata.lang: en_GB
metadata.name: dc.language.iso
metadata.value: ru
metadata.name: dc.subject
metadata.value: Python
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: статический вывод типов
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: динамическая типизация
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: утиная типизация
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: роу-полиморфизм
metadata.lang: ru_RU
metadata.name: dc.subject
metadata.value: Python
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Static Type Inference
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Dynamic Typing
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Duck Typing
metadata.lang: en_GB
metadata.name: dc.subject
metadata.value: Row Polymorphism
metadata.lang: en_GB
metadata.name: dc.title
metadata.value: Static type inference for Python in IDE
metadata.lang: en_GB
metadata.name: dc.title.alternative
metadata.value: Статический вывод типов для языка Python в интегрированной среде разработки
metadata.lang: ru_RU
resources.filename: Staticeskij_vyvod_tipov_dla_azyka_Python_v_integrirovannoj_srede_razrabotki.pdf
resources.url: https://dspace.spbu.ru/bitstream/11701/42927/2/Staticeskij_vyvod_tipov_dla_azyka_Python_v_integrirovannoj_srede_razrabotki.pdf
resources.format: Adobe PDF
resources.description: Article
resources.size: 925,1 kB
resources.filename: reviewSV_miroshnikov.pdf
resources.url: https://dspace.spbu.ru/bitstream/11701/42927/3/reviewSV_miroshnikov.pdf
resources.format: Adobe PDF
resources.description: ReviewSV
resources.size: 77,26 kB
resources.filename: reviewSV_st080531_Mirosnikov_Vladislav_Igorevic_(supervisor)(Ru).txt
resources.url: https://dspace.spbu.ru/bitstream/11701/42927/4/reviewSV_st080531_Mirosnikov_Vladislav_Igorevic_%28supervisor%29%28Ru%29.txt
resources.format: Text
resources.description: ReviewSV
resources.size: 5,43 kB