摘要
程序理解通过对程序进行分析、抽象、推理从而获取程序中相关信息,在软件开发、维护、迁移等过程中起重要作用,因而得到学术界和工业界的广泛关注.传统程序理解很大程度上依赖开发人员的经验,但随着软件规模及其复杂度不断增大,完全依赖开发人员的先验知识提取程序特征既耗时耗力,又很难充分挖掘出程序中隐含特征.深度学习是一种数据驱动的端到端的方法,它根据已有数据构建深度神经网络对数据中隐含的特征进行挖掘,已经在众多领域中获得成功应用.将深度学习技术运用于程序理解中,根据具体任务以及大量数据自动地学习程序数据中蕴含的特征,可以充分地挖掘出程序中隐含的知识,提高程序理解的效率.对基于深度学习的程序理解研究工作进行综述,首先对程序所包含的性质进行分析,然后介绍主流的程序理解模型,包括基于序列、结构以及执行过程的程序理解模型.随后展示基于深度学习的程序理解在程序分析中的应用,主要针对代码补全、代码注释生成、代码检索等任务.最后,分析并总结程序理解研究所面临的挑战.
- 单位