Preview

Труды Института системного программирования РАН

Расширенный поиск

Вывод типов для языка Python

Аннотация

Тема статьи - вывод типов для программного кода на языке Python. Сначала производится обзор описанных в научной литературе алгоритмов вывода типов для языков с параметрическим полиморфизмом. Затем даётся описание нового алгоритма, являющегося модификацией одного из предыдущих: алгоритма декартова произведения. Показывается, как модуль вывода типов, использующий новый алгоритм, анализирует различные конструкции языка Python. Представляются результаты работы над прототипом.

Об авторе

И. Е. Бронштейн
ИСП РАН
Россия


Список литературы

1. В. Савицкий, Д. Сидоров. Инкрементальный анализ исходного кода на языках C/C++. Труды ИСП РАН, том 22, сс. 119—129, 2012.

2. TIOBE Programming Community Index for April 2013. http://tinyurl.com/cgjbmjc

3. Gramps Bug Report 005023.

4. http://www.gramps-project.org/bugs/view.php?id=5023

5. O. Agesen. The Cartesian Product Algorithm. ECOOP’95 Proceedings of the 9th European Conference on Object-Oriented Programming (1995).

6. J. Palsberg, M. Schwartzbach. Object-Oriented Type Inference. In OOPSLA’91 Object-Oriented Programming Systems, Languages and Applications, pp. 146—161, Phoenix, Arizona, Oct. 1991.

7. M. Salib. Starkiller: a static type inferencer and compiler for Python. The Master of Engineering degree thesis. Massachusetts Institute of Technology, 2004.

8. B. Alpern, M. Wegman, K. Zadeck. Detecting equality of values in programs. In Conference Record of the 15th ACM Symposium on Principles of Programming Languages (Jan. 1988), ACM, New York, pp. 1—11.

9. Abstract Syntax Trees: ast module. http://docs.python.org/2/library/ast.html


Рецензия

Для цитирования:


Бронштейн И.Е. Вывод типов для языка Python. Труды Института системного программирования РАН. 2013;24.

For citation:


Bronshteyn I.E. Type inference for Python programming language. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2013;24. (In Russ.)



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)