SANER 2021

2020年12月22日 0 条评论 107 次阅读 0 人点赞

Python项目中常用语言特性的实证研究

研究背景与动机

      近年来Python语言使用非常广泛,在Github 2019年的年度报告中,它甚至超越了Java成为第二受欢迎的编程语言。它丰富的语言特性提供了极富吸引力的灵活性,从而被广泛运用于人工智能、数据科学等蓬勃发展的领域。然而我们发现,在这些语言特性发展的过程中,人们往往忽视了其安全性,导致产生了许多在其他编程语言中不易产生的问题,同时过于动态的特性造成了性能的下降。举例来说,Python允许变量在运行时动态地改变其类型而不需要做任何声明,这一动态的类型系统导致类型错误在Python程序中普遍存在。学术界目前针对这些问题提出了不同的解决方案,比如在Python中引入静态类型系统的一些特性(如 Type Hints)来辅助检查类型错误,或者构造一个新的Python编译器(如Numba)来复用已有的静态语言编译工具链来解决部分性能和安全性问题。
      在本研究中,我们希望能够全面了解各个语言特性在实际Python项目中的使用情况及其使用规律,为学术界寻找改善Python安全性和性能研究的切入点等提供帮助。

研究方法

语言特性

      首先我们对现有的Python语言特性进行了研究与分类,收集了22种语言特性并将其分成了6大类:函数、类型系统、循环及求值策略、面向对象编程、数据结构和元编程。根据它们的特性构建了相应的识别规则。比如对于关键字参数,我们需要通过AST的argument节点来进行识别。

识别工具

      有了各种语言特性的定义以及识别规则,我们构建了一个语言特性识别工具PyScan来从Python源文件中识别其使用的语言特性,该识别工具结构如图1所示:

smartdub

这个人太懒什么东西都没留下

文章评论(0)

你必须 登录 才能发表评论