AI技术辅助开发者自动编写程序代码的研究进展情况
发表时间:2023-11-25 11:05:06
文章来源:炫佑科技
浏览次数:179
菏泽炫佑科技
AI技术辅助开发者自动编写程序代码的研究进展情况
AI技术综述注:随着AI技术的发展和应用,人们对“人工智能”的认识不断被刷新和拓展。 在公众眼中,人工智能正变得越来越强大。 它不仅可以在国际象棋游戏中击败人类,还可以进行语音识别、自动翻译、人脸识别,甚至自动驾驶汽车。 近日,北京大学与硅心科技团队联合推出一项AI新成果——利用AI技术辅助开发者自动编写程序,引发人们对“AI+软件”和“软件开发”巨大发展潜力的担忧。 对“自动化”发展前景的探讨与思考
让计算机自动编写代码不仅是软件开发领域关注的问题,也是人工智能领域长期关注的问题。 早在 1964 年,机器学习领域的一位先驱就提出“编写计算机程序对于人类来说是一项困难且耗时的活动,而通过自动代码生成或程序归纳来自动化这一过程是人工的一个长期研究课题”在情报领域。” 近年来,并在他们的论文中提出了类似的论点。
那么,完全依靠AI技术进行程序代码生成而无需人类程序员的干预,目前的研究进展如何呢? 以下是近年来几项典型的研究工作:
这些成果对自动程序生成的研究起到了重要的推动作用,但同时也可以看出,完全不依赖程序员编写工业级程序还需要进一步的研究。
与上述研究思路不同,北京大学的一个研究团队正在致力于“辅助人类程序员自动编写程序代码”。 “虽然完全不依赖人类程序员的场景下的自动程序生成还需要进一步研究,但我们可以利用人工智能技术来辅助人类编写程序。” 北京大学高可信软件技术教育部重点实验室副教授李革说。 ”,“我们在“利用AI辅助程序员编程,提高程序编写效率和质量”方面取得了重要研究进展。
李革的研究团队是国际上*早从事基于深度神经网络的计算机程序分析与生成研究的团队之一。 其在代码功能语义分析、代码自动生成与补全等方面的研究成果受到国内外同行的高度评价。 专注于。 近年来,团队取得了一系列重要研究成果,形成了多项重要行业专利和学术论文。 在取得的科研成果的基础上,李哥实验室正在转向工业应用,致力于将“智能软件开发技术”转化为能够支持工业生产的商业产品。
智能编程机器人
它是一款全新的智能编程机器人产品,采用与程序员“结对编程”的方式,为程序员提供服务,从而提高程序员的编程效率。 借助它,程序将彻底摆脱传统的编程模型,不再需要“逐字逐句”地编写程序。
它可以自动预测程序员的编程意图,持续向程序员推荐“下一段要写的代码”。 程序员可以通过“一键补全”直接确认下一步的代码输入,从而大大提高代码的书写水平。 效率。 同时,它还可以在编程过程中持续智能地搜索和推荐与当前程序功能相似的标准化程序代码,为程序员提供强大的编程参考。 目前编程机器人已推出 、 、 、 等多个版本,为不同领域的程序员提供帮助。
研发团队核心技术人员郝一阳介绍:采用先进的专用深度神经网络模型专门用于程序分析和生成,并使用现场严格筛选的海量源代码数据进行训练自动化软件开发,使其能够充分学习和学习。掌握海量代码中隐含的编码模式和规则,这些信息用于后续的代码生成和完成。
不仅如此,经过训练后,它可以快速了解程序员的个人编程习惯,自动记录程序员常用的程序模式、常用的API调用序列等,从而有效、自动地辅助程序员进行编程过程,并且*大化在一定程度上辅助程序员自动完成非创造性的编程任务。
目前,采用“云服务”运营模式,其深度学习模型就像部署在云端的“编程大脑”,其客户端以插件的形式集成到IDE中,实现与主流集成开发的融合、 和 VS-Code 等平台。 无缝对接,程序员可以通过插件实现与“云AI服务”的对接,随时随地发挥自己的“编程大脑”。
同时还可以为软件企业提供专业领域的定制化、专属服务,以内部云的形式为软件企业提供专属服务。 一家使用过该服务的软件外包公司反馈:不仅可以有效节省程序员的开发时间,还可以有效减少程序员对API文档或相关信息的依赖。 “原本需要在网上搜索类似代码和API使用模式的时间,被节省了,可以更加专注于编写特定系统所需的代码。” 从程序员的角度来看,在 的帮助下,开发人员可以花更多的时间编写“新”代码,提高个人价值。
研究过程
谈及研究这款智能编程机器人的初衷,李革副教授表示,当前的软件开发过程存在“开发阶段缺陷延迟解决”的问题,即程序员未能解决的程序缺陷和错误在编程过程中。 诸如此类的问题往往需要后续的代码扫描、代码审查、程序测试等才能发现,然后发回程序员的开发现场解决。 然而,当上述问题返回到开发现场时,程序员往往开发场景已经改变,只能通过重建之前的开发场景来修改返回的代码。 这种不合理的流程极大地拖延了编程问题的解决,降低了开发效率。
以百度为例。 百度高级副总裁王海峰今年出席软博会时提到,百度每天新增需求卡6700张,系统每天搭建7万多次,系统上线每天700多次。 在这样的研发需求压力下,软件开发必须实现快速迭代,缩短研发周期,大量的研发需求必须在编程阶段完成,而不是“把应该在编程中解决的问题拖下来”。阶段到后续阶段。” 因此,如何利用智能手段提高软件编码的效率和质量成为当前软件开发的重要问题。
如何将AI技术应用到软件开发中,帮助开发者解决更多开发阶段的问题AI技术辅助开发者自动编写程序代码的研究进展情况,提高软件开发的效率和质量? 这正是李革副教授研究团队一直在深入思考的问题。 为了让AI辅助程序员编写程序,AI模型首先必须能够理解程序员编写的程序,理解程序员的编程意图。 带着这样的想法,他们开始研究利用深度学习技术进行程序代码分析和生成。
2013年底,李戈在斯坦福大学人工智能实验室担任访问学者。 当时,与他同一个实验室的研究人员正在从事基于深度学习的自然语言处理的相关研究。 这些相关领域的研究方法给了他启发,他相信可以使用特定的深度学习模型来分析程序代码语义。 然而,编程语言和自然语言之间存在很多差异:
首先,编程语言通常基于三种类型的语法结构进行语义描述:序列、分支和循环,这些语法结构更具结构化性。 而且,程序的结构信息可以用多种方式表达,例如数据流图、控制流图以及调用图、程序段图等;
这些问题的存在让李哥认识到,为了理解程序所表达的语义,必须设计一种适合编程语言的新模型。
李革研究团队基于多年的研究和对程序特性的深入思考,设计构建了一系列专门用于程序分析和生成的深度神经网络模型。 同时,他们利用从等处获得的开源代码资源,经过一系列的清洗、分析、标注,积累了大量标准化的程序代码数据来支持深度神经网络的训练,*终取得了优异的培养成果,形成了多项行业领先的科研成果形成的基础。
以 的版本为例,他们使用了超过 30 万个经过处理的源代码作为训练数据,让神经网络模型学习各种规范模式、潜在规则、常用 API 序列、惯用编码模式以及编写代码所需的其他知识。 和经验。 在程序员编写代码的过程中,它可以自动猜测程序员的编程语义,并根据这些知识和经验及时向程序员推荐可能用到的编程语句,从而辅助程序员自动完成程序,大大提高程序员的编程效率。该程序。 发展速度。
目前,它正在以“结对编程”的形式协助程序员。 它就像一个时刻陪伴着程序员的“伙伴”,和程序员一起写代码,帮助程序员补漏补缺。
“传统的结对编程是人结对编程,我们希望能够实现人与机器的结对工作。”李戈说。 “我们希望能够承担更多的‘劳动’,让程序员有更多的时间和精力投入到创造性的工作中,让程序员的创造性价值得到更充分的体现。”
“留给人,留给真实。” 这是研发团队的信条和口号。
官网地址:
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等