本文是LLM系列文章,针对《Exploring and Unleashing the Power of Large Language Models in Automated Code Translation》的翻译。
摘要
代码翻译工具,即转译器,是为自动源到源翻译而开发的。最新的基于学习的转译器在翻译准确性和可读性方面都比基于规则的转译者有了显著的提高,这是由于它们在广泛的单语语料库上进行了针对特定任务的预训练。然而,他们目前的表现对于实际部署来说仍然不能令人满意,相关的训练资源也过于昂贵。大型语言模型(LLM)在大量人类编写的代码/文本上进行了预训练,由于其强大的通用性,即使没有针对特定任务的重新训练/微调,也在许多代码智能任务中表现出了卓越的性能。因此,LLM可以潜在地规避上述限制,但它们还没有被彻底探索。本文研究了用于自动代码翻译任务的各种LLM和基于学习的转译器,发现:尽管某些LLM的性能优于当前的转译机,但它们仍然存在一些准确性问题,其中大多数故障是由于对源程序缺乏理解(38.51%)、翻译中缺少关于I/O类型的明确指令(14.94%)以及忽略源程序和目标程序之间的差异(41.38%)造成的。受上述发现的启发,我们进一步提出了适用于各种LLM的统一代码翻译框架UniTrans,以释放其在这一领域的力量。具体来说,UniTrans首先在源程序的帮助下为目标程序制作了一系列测试用例。接下来,它利用上述自动生成的测试用例来增强代码翻译,然后通过执行来评估其正确性。之后,UniTrans进一步(迭代地)修复测试用例执行结果提示的错误翻译的程序。在Python、Java和C++之间的六种翻译数据集设置上进行了广泛的实