当前位置:主页 > 文艺论文 > 环境艺术论文 >

基于搜索的程序设计研究

发布时间:2018-11-20 14:58
【摘要】:程序设计是软件工程的基础,离不开程序设计语言的支持。受萨丕尔-沃尔夫假说(自然语言影响人的思维)的影响,计算机领域众多科学家认为“程序设计语言影响开发者的思维”。在最近几十年中,大量程序设计语言被设计出来,试图用它们内在的设计哲学影响开发者。然而,不同于自然语言,程序设计语言是人设计的,受语言设计者所关注的审美艺术和直觉驱动,富有艺术感,充满偏好,他们可能无法完全了解开发者的真实想法,这使得大部分程序设计语言并没有得到广泛的使用。究其原因,“程序设计语言会影响开发者的行为”这种单向影响往往会带来认知的片面性。本文认为:开发者的行为应该受到程序设计语言(能做什么)的影响;开发者的思维(想做什么)也应该影响程序设计语言的设计。本文将构建双向关系,通过用户的反馈影响程序设计语言的设计。开发者的思维反映在其具体行为之中,即如何使用程序设计语言完成程序设计任务。当下随着众多软件资源(特别是开源软件库)对研究者开放,使得通过经验研究的方式理解程序设计语言在实际开发中的运用变得可能。本文分别通过定量和定性的方式对程序设计语言的实际使用情况进行分析,并利用从统计结果中抽取出来的“思维”反向影响程序设计语言,即以数据驱动的方法优化程序设计语言的设计。具体来说,在使用单种程序设计语言的场景下,本文从词法、语法和API(Application Programming Interface)三个层次对程序设计语言进行分析:在使用多种程序设计语言的场景下,本文探讨语言之间的协同演化。论文的主要成果包含如下几个方面:(1)研究了程序设计语言的词法可识别性,发现“代码单元在词法上是可识别的”。定义并形式化最小集问题,严格地检验了有关Wheat-Chaff的假设;证明了最小集问题是NP难问题,并提供了以贪心算法为基础的解决方案;通过分析大规模Java开源程序,证实了源代码包含很多Chaff,海量代码中的任何一个代码单元可以通过规模极小的特有子集进行唯一标示。在此基础上,进一步探讨了词法可识别性在相关领域的应用,包括代码搜索、代码概述和基于关键字的程序设计等。(2)研究了在实际开发中程序设计语言语法规则的使用情况。通过对超过5,000个当下流行的Java开源程序进行详细的经验研究,着重探讨了如下问题:Java语法规则如何在实践中得到使用;语法规则的使用如何随着时间变化:语法规则的使用如何依赖于上下文环境。实验结果显示,语法规则的使用遵循齐普夫定律;它们的使呈现出非平凡的“依赖性”;部分语法规则逐步被开发者遗弃,新引入语法规则会影响现有语法规则的使用,但并不是所有新引入语法规则均受到开发者青睐:基于经验研究的数据与结论,探讨了相关应用场景,包括语法规则的优化与限制使用、语法糖的识别和基于语法规则的代码补全等。(3)研究了在实际开发中程序设计语言API的使用情况。定义了一系列系统化的API使用度量准则,包括频繁度、流行度和覆盖率。通过对开源程序的经验研究,分析了核心API库的使用情况,发现大量API实体(包括包、类、方法和属性)并没有得到充分使用;分析了第三方API库的使用,发现它们的使用符合幂次定律。与此同时,深入讨论了弃用API的使用情况、精简运行环境的利用率和第三方API库多版本使用等三个重要问题。基于经验研究的数据,探讨了相关应用场景,包括API库的优化、API库使用约束、精简运行环境的构建、API库及版本推荐和API教育等。(4)研究了多程序设计语言环境下语言协作的使用情况。以数据库应用系统为例,着重分析了数据库schema演化对应用程序端代码的影响。通过对当下流行的10个数据库应用系统进行的大规模经验研究,重点探讨如下问题:schema的演化是否频繁剧烈;schema是如何进行演化的;schema演化是如何影响代码演化的。基于经验研究的数据,提供了一些指导性意见,帮助开发一款自动化数据库应用系统演化工具,协助schema与代码协同演化。本论文的工作,即分析程序设计语言的使用情况,挖掘语言的实践特性,能积极影响程序设计语言的设计与优化,探索代码搜索和补全技术等应用领域的新技术,启发新型程序设计模型,以达到提升程序设计能力的最终目标。
[Abstract]:......
【学位授予单位】:东南大学
【学位级别】:博士
【学位授予年份】:2015
【分类号】:TP311.1


本文编号:2345212

资料下载
论文发表

本文链接:https://www.wllwen.com/wenyilunwen/huanjingshejilunwen/2345212.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户9f4a6***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com