chatgpt代码生成老是有错 GPT能写代码?在“文=码”系统面前还是逊了!

AI资讯1年前 (2023)发布 fengdao
43 0

自动编码是一项机器根据用户给定的软件需求自动生成相应程序源代码的任务。它是一种提高软件开发自动化水平和产品质量的重要方法,一直受到学术界和工业界的广泛关注。智能算法研究中心一直致力于智能化软件工程的研究,近期研发了一款基于人机交互的代码生成系统——“文=码”系统(下文简称“文码”)。该系统首先对用户的软件需求进行语义解析,并通过对话的形式引导用户修正文本以削弱文本的二义性与

完整性,然后自动提取文本的程序逻辑,最终通过结合编程语言的语法规则来生成相应的程序源代码。而当前爆火的对话式大型语言模型也因擅长编程而“出圈”。面对同样的任务,我们的系统与谁能更胜一筹呢?

一、与用户需求的匹配度

提问:帮我生成排序的代码

从结果来看,面对有歧义且不完整的输入,直接推荐了一段基于语言编写的快速排序算法代码,这与用户实际需要的基于C++语言编写的冒泡排序算法代码不一致。而文码通过人机交互技术对用户输入的文本进行语义解析,并引导用户对存在二义性与

完整性的部分进行补充,最终生成了一段完全符合用户实际需求的源代码。

二、可维护性

可维护性主要指一个软件系统可被修改的难易程度,是衡量软件质量的标准之一。当前公用库与函数快速增长,迭代更新速度快,增强系统更新编码知识的能力能够提高系统的可维护性,对提高软件质量、降低软件成本具有十分重要的现实意义。针对可维护性问题,我们假设在未来 的新版本 中打开文件的内置函数更改为 ,并将相应知识分别提供给与文码,测试两者动态更新编码知识的能力。首先,我们测试了两者是否能接收新知识,结果如下所示:

代码生成期间遇到了错误_代码出错率_chatgpt代码生成老是有错

由 与文码的反馈可知,两者均接收了内置函数open更改为的新知识。接下来,我们在新对话中验证两个系统是否已经更新了编码知识以及能否将新知识用于后续的自动编码任务。

提问:生成符合版本 的代码,代码完成打开文件 file 的功能

由以上结果可知, 虽然成功接收了新知识,但无法用于后续的自动编码任务。我们分析这可能是由于作为大规模模型,本质是从大规模训练语料中学习样本的统计规律,因此在不重新进行训练的前提下,难以实现知识的动态更新。而文码通过引入知识库的方式,能够在无需重新训练的前提下实现知识的动态更新,成功将新知识应用于后续的自动编码任务。

三、多语言可扩展性

从多语言的角度对比,文码支持C++、Java和三门编程语言的编码,支持大部分主流编程语言的编码。首先,我们对比了二者针对相同问题所自动生成的C++、Java和程序源代码。

提问:请生成C++/Java/代码:对整型数组arr进行冒泡排序

代码出错率_代码生成期间遇到了错误_chatgpt代码生成老是有错

由以上结果可知,文码与均能正确生成可编译的程序源代码,二者所生成的内容并没有显著差异。

此外,当前编程语言已有数百种,且在不断更新,所以移植到新编程语言的可扩展性也是衡量系统性能的重要指标。我们以两个系统训练语料均未覆盖的中文编程语言(易语言)来测试两者能否在不重新训练的前提下生成相应代码。

提问:请生成下面文本对应的易语言代码:请创建一个整型变量var并赋值为0

由两者生成的结果可知,暂时无法支持训练语料未覆盖的编程语言。如果要支持训练语料之外的新型编程语言代码生成,需要收集对应的训练数据并对进行重新训练,这个过程的成本十分高昂。而文码将自动编码任务中的程序逻辑与编程语法进行解耦,只需添加程序逻辑与目标编程语言的语法转换器就能实现该编程语言的源代码生成。

综上所述,虽然在自动编码任务上表现出色,但在与用户需求的匹配度、可维护性以及多语言可扩展性方面依然存在较大提升空间,智能算法研究中心研发的“文=码”系统在人机交互引导、可维护性等方面具备独特的优势。我们的小程序将于2023年4月6日正式上线,敬请期待!

智能算法研究中心研发的“文=码”系统小程序

总编:黄翰

© 版权声明

相关文章

暂无评论

暂无评论...