这可能并不是一个玩笑,比如当红炸子鸡ChatGPT,就很有潜力。最近,一项来自美因茨大学和伦敦大学学院的研究发现,ChatGPT不仅可以出色地修复bug,而且开发者还能通过对话来显著提高成功率。研究人员表示,ChatGPT的debug性能与常见的深度学习方法CoCoNut和Codex相差无几,并且明显优于标准的自动程序修复方法(APR)。论文地址:用ChatGPT来解决代码问题并不新鲜,但与人类对话的独特能力,使它比其他方法和模型更具优势。为了评估ChatGPT的debug性能,研究人员使用QuixBugs基准的40个纯Python问题对其进行了测试,然后手动检查建议的解决方案是否正确。由于ChatGPT给出的答案存在一定的随机性,因此研究人员针对每个问题都会单独测试4次。与其他自动程序修复的基准不同,QuixBugs包含了相对较小的问题(代码行数少),而这非常适合在对话系统中使用。在测试过程中,研究人员删除了所有的注释,并询问ChatGPT这段代码是否有bug以及如何修复它。比如,图1中就是一个关于BITCOUNT问题的例子。其中,第1-2行是向ChatGPT提出的需求;从第4行开始是错误的代码片段。对于这个例子,我们希望ChatGPT的回答能解决第7行的错误,即nˆ= n - 1应该被替换为n &= n - 1。做为回应,ChatGPT要么给出一段修复完的代码,要么给出一个描述告诉我们应该如何修改。结果显示,ChatGPT解决了40个bug中的19个,与CoCoNut(19)和Codex(21)相当,但标准的APR方法只解决了其中的7个问题。当然,因为ChatGPT和Codex都是来自于同一个语言模型系列,所以解决问题的数量差不多也就不足为奇了。此外,如果我们仔细观察结果还可以发现,ChatGPT并不是每次都能解决基准测试中的bug。仅在BUCKETSORT和FLATTEN这两个问题上,四次都发现了bug,而其他的通常只能成功1-2次。也就是说,用户在实际使用时,可能需要尝试数次才能获得正确的结果。不过,ChatGPT有一个强大的优势:我们可以在对话中与系统互动,更详细地对问题进行说明,从而获得正确的答案。实际测试结果,也确实如此。经过与模型更进一步的对话,研究人员成功地将ChatGPT的正确率刷新到了77.5%,也就是修复了40个错误中的31个,远超SOTA。至少,目前看来,这件事是完全有可能的:开发人员将不再需要编写样板代码。相反,他们可以专注于复杂的应用程序架构或网络安全等领域。也就是说,虽然ChatGPT可能会完成某些编程工作,例如编写通用函数或样板代码,但它不会完全取代程序员。因为程序员的工作需要的不仅仅是写代码。成为一名程序员需要技巧——能够构建程序、遵循逻辑并生成比各部分总和更宏大的东西。