【论文速读】|利用大语言模型实现现实世界代码的翻译:一项针对翻译到Rust语言的研究

图片

本次分享论文:Towards Translating Real-World Code with LLMs: A Study of Translating to Rust

基本信息

原文作者:Hasan Ferit Eniser, Hanliang Zhang, Cristina David, Meng Wang, Maria Christakis, Brandon Paulsen, Joey Dodds, Daniel Kroening

作者单位:MPI-SWS, University of Bristol, TU Wien, Amazon Web Services, Inc.

关键词:代码翻译,Rust语言,大语言模型(LLMs),差分模糊测试,自动化反馈

原文链接:https://arxiv.org/pdf/2405.11514

开源代码:暂无

论文要点

论文简介:本论文探讨了利用大语言模型(LLMs)进行代码翻译的能力,特别是从其他编程语言翻译到Rust语言。研究主要评估了五种先进的LLMs,包括GPT-4、Claude 3等,在处理实际开源项目代码时的表现。为此,作者开发了一种名为FLOURINE的端到端代码翻译工具,通过差分模糊测试验证Rust翻译的输入/输出等效性,从而消除了对预先存在的测试用例的需求。研究显示,最成功的LLM可以翻译47%的基准代码,并提供了改进的见解。

研究目的:随着对Rust等安全编程语言的兴趣增加,将潜在的有缺陷的旧代码翻译成现代语言的需求也在增加。论文旨在回答大语言模型是否能有效地翻译真实世界的代码。为此,作者开发了一种新的工具FLOURINE,通过实际开源项目的代码进行测试和评估,研究大语言模型在生成初始翻译和修复错误翻译方面的能力。

研究贡献:

1. 开发了FLOURINE工具,能够在无需手写测试用例的情况下生成验证过的Rust翻译。

2. 构建了跨语言模糊测试器,能够在不同语言之间传递输入和输出。

3. 利用FLOURINE进行了首次大规模研究,评估了大语言模型在翻译真实世界代码方面的能力。

4. 证明了大语言模型能够翻译部分真实世界项目,并且直接向大语言模型提供反例反馈的效果不如重复原始提示。

5. 开源了所有代码、基准和结果,以便复现实验。

引言

代码翻译任务在编程语言之间变得越来越重要,尤其是在将可能有缺陷的旧代码翻译成Rust等现代安全语言的背景下。传统的“规则基础”翻译工具针对特定的源语言和目标语言,而大语言模型则有望胜任任意源语言和目标语言的翻译任务。过去的工作主要集中在竞赛编程网站、教育网站或手工设计的编码问题上,这些基准不具代表性。而本研究则着眼于真实世界的代码,利用大语言模型进行Rust翻译。

相关工作

相关工作主要分为代码翻译、跨语言差分模糊测试和大语言模型的反馈策略。多数代码翻译工作集中在竞赛编程风格的代码上,而本研究则评估了大语言模型在真实世界代码翻译中的表现。现有的跨语言差分模糊测试工作中,很少考虑不同语言实现的比较。

本研究开发的跨语言模糊测试工具是目前唯一一个尝试将不同语言编译成共享IR进行测试的工具。关于大语言模型的反馈策略,虽然有一些工作展示了使用反例反馈的成功,但我们的结果显示这种策略在大语言模型的代码翻译任务中效果并不好。

研究概述

本研究开发了一个名为FLOURINE的端到端代码翻译工具,旨在评估和改进大语言模型(LLM)在翻译真实世界代码时的表现。FLOURINE首先使用LLM生成候选翻译代码,然后应用编译驱动的修复,利用Rust编译器的错误信息进行逐步修复。一旦代码通过编译,FLOURINE使用跨语言差分模糊测试来验证翻译的输入/输出等效性,这种方法无需预先存在的测试用例。如果发现翻译不等效,工具将执行反馈策略,向LLM提供反例以修复错误翻译。数据集由七个开源项目的代码样本组成,这些项目涉及音频处理、文本处理、几何学、银行、二维三角测量、图算法和声卡仿真,确保翻译任务的多样性和复杂性。实验结果展示了LLM在生成和修复翻译代码方面的潜力,为未来的改进方向提供了宝贵的见解。

基于LLM代码翻译

本研究的代码翻译算法采用了迭代方法,首先通过大语言模型(LLM)生成候选翻译,然后通过编译驱动的修复阶段确保代码可以编译。编译驱动修复利用Rust编译器的错误信息进行逐步修复,以获得可编译的翻译代码。接着,使用跨语言差分模糊测试验证翻译代码与原始代码的输入/输出等效性。如果发现反例,则将这些反例反馈给LLM,以生成新的候选翻译。整个过程重复进行,直到找到通过所有测试的翻译代码或达到设定的迭代次数。

反馈策略

本研究评估了四种反馈策略,以提高代码翻译的成功率。简单重启策略在每次失败后重新生成翻译,不提供任何额外信息。提示重启策略在原始提示中加入模糊测试的正反例,帮助LLM识别正确行为和避免错误。基于反例的修复策略则将发现的反例反馈给LLM,要求其修正特定错误路径上的问题。对话式修复策略保留所有历史对话,每次在原提示基础上添加新的反例反馈,形成连续对话。结果显示,简单重启和提示重启效果最佳,而直接提供反例的策略效果不如预期。

研究评估

在研究评估中,我们对五种先进的LLM(包括GPT-4、Claude 3等)进行了8160次代码翻译实验,评估了它们在处理408个真实世界代码样本时的表现。结果显示,这些LLM的成功翻译率在21%至47%之间,且代码复杂度越高,翻译成功率越低。实验还揭示了反馈策略的有效性,尽管基于反例的修复策略效果不如预期,但简单重启和提示重启策略显著提高了成功率。研究还发现,LLM生成的Rust代码通常更简洁、语法更规范,但在某些情况下仍会产生非惯用或性能欠佳的代码。

图片

论文结论

本研究展示了大语言模型在翻译真实世界代码方面的能力,并提出了FLOURINE工具作为验证Rust翻译的有效方法。尽管反例反馈在本研究中的效果不佳,但LLM在代码翻译任务中展示了显著的潜力。未来的研究可以进一步优化反馈策略和模糊测试器,以提高翻译的成功率和代码质量。

原作者:论文解读智能体

校对:小椰风

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven之介绍

目录 一、简介 (2)为什么学习Maven? 二、小结 一、简介 (1)Maven 是一个 Java 项目管理和构建工具。它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具…

《FFmpeg开发实战:从零基础到短视频上线》资源下载和内容勘误

资源下载 下面是《FFmpeg开发实战:从零基础到短视频上线》一书用到的工具和代码资源: 1、本书使用的FFmpeg版本为FFmpeg 5.1.2,也可在FFmpeg的github主页上下载最新的FFmpeg源码。 2、本书第12章使用的Android Studio版本为Android Studio D…

原装GUVCL-T10GD韩国GENICOM光电二极管紫外线传感器原厂代理商

深圳市宏南科技有限公司是韩国GenUV公司的原厂代理商,所售紫外线传感器均来自于原始生产厂商直接供货,非第三方转售。 GUVCL-T10GD 韩国GENICOM光电二极管光传感器 / 低亮度 / 紫外线 UV-C传感器 GUVCL-T10GD 采用基于氮化铟的材料 肖特基型 光电二极管…

Linux线程:基于环形队列RingQueue的生产消费者模型

目录 一、环形队列的概念及定义 二、POSIX信号量 三、RingQueue的实现方式 3.1RingQueue.hpp的构建 3.2Thread.hpp 3.3Main.cc主函数的编写 3.4Task.hpp function包装器的使用 一、环形队列的概念及定义 此处的环形队列并不是一个真正意义上的环,而是通过对容…

微信小程序之横向列表展示

效果图 参考微信小程序可看 代码&#xff1a; <view class"lbtClass"><view class"swiper-container"><scroll-view class"swiper" scroll-x"true" :scroll-left"scrollLeft"><block v-for"(six…

centos7.5 安装mongo客户端

参考&#xff1a; https://doc.hcs.huawei.com/zh-cn/usermanual/dds/dds_faq_0018.html https://www.cnblogs.com/zhaoyingjie/p/17784968.html mongo 和 mongosh 的区别database - Difference in mongo --version and mongosh --version - Stack Overflow mongoDB 5.0 之后…

node-sass install 失败

安装失败多数是因为下载失败&#xff0c;或者node版本不对&#xff0c;node版本不对可以通过nvm去管理node,下载不同版本的node,通过nvm去切换不同版本的node去兼容不同的项目。 这篇文档主要说明下载失败的问题如何解决&#xff1a; 可以通过npm config list 查看npm镜像源的…

4.1 四个子空间的正交性

一、四个子空间的正交性 如果两个向量的点积为零&#xff0c;则两个向量正交&#xff1a; v ⋅ w v T w 0 \boldsymbol v\cdot\boldsymbol w\boldsymbol v^T\boldsymbol w0 v⋅wvTw0。本章着眼于正交子空间、正交基和正交矩阵。两个子空间的中的向量&#xff0c;一组基中的向…

专业与学校的权衡。

一场考试落下帷幕&#xff0c;新的思考与选择悄然来临。对于每一位高考考生&#xff0c;学校和专业选择是开启大学新生活的两个前置必选项。分数受限的条件下&#xff0c;“鱼与熊掌不可兼得”&#xff0c;到底是选择一个心仪的专业还是选择一个知名度更高的学校&#xff1f;这…

Python多语言欧拉法和预测校正器实现

&#x1f4dc;流体力学电磁学运动学动力学化学和电路中欧拉法 &#x1f4dc;流体力学电磁学运动学动力学化学和电路中欧拉法示例&#xff1a;Python重力弹弓流体晃动微分方程模型和交直流电阻电容电路 ✒️多语言实现欧拉法和修正欧拉法 在数学和计算科学中&#xff0c;欧拉…

C# VTK 移动旋转

对vtk 场景中一个或多个选中物体进行移动旋转。 交互移动旋转坐标系 首先我们创建旋转的交互坐标系&#xff0c;三个移动Actor&#xff0c;三个旋转Actor&#xff0c;还需要4个定位坐标的小球Actor。 public class CoordinateActor 中添加Actor// 当前选中的Actorpublic vtkAc…

【华为OD机试】获取最大软件版本号(C++ Java JavaScript Python )

题目 题目描述 Maven 版本号定义,<主版本>.<次版本>.<增量版本>-<里程碑版本>,举例3.1.4-beta 其中,主版本和次版本都是必须的,主版本,次版本,增量版本由多位数字组成,可能包含前导零,里程碑版本由字符串组成。 <主版本>.<次版本>…

C语言---数据结构(1)--时间复杂和空间复杂度计算

1.什么是时间复杂度和空间复杂度 1.1算法效率 算法效率分为时间效率和空间效率 时间效率被称为时间复杂度&#xff0c;而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度&#xff0c;而空间复杂度主要衡量一个算法所需要的额外空间&#xff0c;在计算…

fontspider 字体筛选工具

在项目中为了使包体大小优化 有时候字体太大 需要筛选出部分文字的字体字体 筛选优化包体 fontspider 字体筛选工具 筛选工具下载传送门https://download.csdn.net/download/qq_38147639/89477482

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义&#xff1a; 阻抗在机器人领域中&#xff0c;通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时&#xff0c;环境对机器人施加一个作用力&#xff0c;而机器人也会对环境施加一个反作用力。这个反…

常用3D格式说明和对比(OBJ、glTF、GLB、STEP、FBX)

本文整理了常见3D模型格式的详细说明和简单示例&#xff0c;以备需要的读者了解和自己需要时查阅。其中 OBJ 格式&#xff0c;是学习图形和OpenGL时&#xff0c;各代码示例中最常用、最简单的格式&#xff0c;但不支持动画&#xff1b;glTF、GLB适合网络传输&#xff0c;在网页…

PMP与软考的区别? 我该学习哪个?

PMP&#xff08;项目管理专业人士&#xff09;和软考&#xff08;软件工程师考试&#xff09;是两种不同领域的认证考试&#xff0c;分别专注于项目管理和软件工程师领域。下面将对它们做详细介绍。 一、PMP PMP作为项目管理领域的国际认证考试&#xff0c;由美国项目管理协会…

WordPress CDN是什么?CDN有什么作用?

您想让您的网站加载速度更快吗&#xff1f; 网站所有者希望网站加载速度快&#xff0c;内容丰富&#xff0c;功能强大&#xff0c;吸引用户。然而&#xff0c;添加这些功能可能会降低网站速度&#xff0c;难以快速向全球用户提供内容。 这就是为什么许多WordPress网站使用 CDN…

小型数据中心是什么?如何建设?

在数字化时代&#xff0c;小型数据中心正成为许多企业和组织加强数据管理和服务扩展的理想选择。与传统大型数据中心相比&#xff0c;小型数据中心以其灵活性、高效性和相对较低的运营成本吸引着越来越多的关注。然而&#xff0c;要成功建设一个小型数据中心&#xff0c;并确保…