为甩掉C语言,美国政府企业再想新招:研发AI工具,一键将旧的C代码转为Rust
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">| CSDN(ID:CSDNnews)</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">当呼吁起不到<span style="color: black;">实质</span>的效果时,美国政府<span style="color: black;">公司</span>又想出一个<span style="color: black;">加强</span>内存安全编程语言<span style="color: black;">运用</span>率的新<span style="color: black;">办法</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">近期</span>,有不少人<span style="color: black;">发掘</span>,美国国防高级<span style="color: black;">科研</span>计划局(DARPA)正在<span style="color: black;">起步</span>一项<span style="color: black;">帮助</span>计划,即推动一款程序代码转换工具 TRACTOR(全<span style="color: black;">叫作</span>为 Translating All C to Rust)的<span style="color: black;">研发</span>,旨在借助 AI 大模型技术独立地将传统的 C 和 C++ 代码直接转换为可用的 Rust 代码。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">同期</span>,</span><span style="color: black;">DARPA</span><span style="color: black;"><span style="color: black;"><span style="color: black;">最后</span><span style="color: black;">期盼</span>这款 AI 工具达到的水平能够与经验丰富的</span><span style="color: black;">Rust</span><span style="color: black;">程序员带来的结果相当,实现“一劳永逸地消除内存安全漏洞”。</span></span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="https://q9.itc.cn/q_70/images03/20240809/f3287f2501274bfb802ed92a934737bb.png" style="width: 50%; margin-bottom: 20px;"></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">呼吁<span style="color: black;">研发</span>者放弃 C、C++ 的<span style="color: black;">公司</span>们!</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">毋庸置疑,将 C、C++ 和 Rust 这几种语言摆在<span style="color: black;">一块</span>,DARPA 必然要<span style="color: black;">说到</span>内存安全问题。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">在公告中,<span style="color: black;">DARPA</span>指出,内存安全漏洞是已披露的软件漏洞中最<span style="color: black;">平常</span>的类型,<span style="color: black;">重点</span><span style="color: black;">经过</span>两种方式影响计算机内存:</span></p><span style="color: black;">首要</span>,C 语言等编程语言<span style="color: black;">准许</span>程序员直接操作内存,<span style="color: black;">因此呢</span>很容易在程序中意外引入错误,使看似常规的操作破坏内存状态。
其次,当<span style="color: black;">咱们</span>在编写代码时,有时候会遇到一种叫做“未定义<span style="color: black;">行径</span>”的<span style="color: black;">状况</span>。<span style="color: black;">便是</span>说,编程语言的规则(<span style="color: black;">或</span>标准)<span style="color: black;">无</span><span style="color: black;">知道</span>说明在某些特定<span style="color: black;">状况</span>下程序该怎么运行。<span style="color: black;">因此</span>,<span style="color: black;">倘若</span><span style="color: black;">咱们</span>写的代码触发了这些不<span style="color: black;">知道</span>的<span style="color: black;">状况</span>,程序可能会以一种<span style="color: black;">咱们</span>意想不到的方式运行,<span style="color: black;">乃至</span>可能<span style="color: black;">引起</span>内存安全问题(<span style="color: black;">例如</span>程序崩溃或产生错误结果)。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">正<span style="color: black;">因此呢</span>,过去几年间,美国各大组织的呼吁动作<span style="color: black;">持续</span>,如<span style="color: black;">咱们</span>此前<span style="color: black;">报告</span>的:</span></p>2022 年 11 月,美国国家安全局(NSA)发布了关于<span style="color: black;">守护</span>软件<span style="color: black;">研发</span>者和运营商免受内存安全问题影响的指南,列举了微软在2006 年到 2018 年<span style="color: black;">时期</span>,<span style="color: black;">发掘</span>的 70%的漏洞都是因内存安全问题<span style="color: black;">导致</span>的;GoogleChrome 中存在了类似比例的内存安全漏洞...鼓励多个组织将编程语言从 C/C++转为<span style="color: black;">运用</span>内存安全的语言,如 C#、Rust、Go、Java、Ruby 和 Swift,<span style="color: black;">叫作</span><span style="color: black;">这般</span><span style="color: black;">能够</span><span style="color: black;">帮忙</span>软件<span style="color: black;">研发</span>者和<span style="color: black;">运用</span>者预防并缓解软件内存安全问题;
彼时,微软 Azure CTO MarkRussinovich <span style="color: black;">亦</span>呼吁,「是时候停止<span style="color: black;">运用</span> C/C++ <span style="color: black;">起步</span>任何新项目」。
2023 年 12 月,美国网络安全和<span style="color: black;">基本</span><span style="color: black;">设备</span>局 (CISA)<span style="color: black;">亦</span><span style="color: black;">起始</span>联合 NSA、美国联邦调查局 (FBI) 以及澳大利亚、加拿大、英国和新西兰的网络安全<span style="color: black;">公司</span>发布了一份 23 页的《内存安全路线图指南》,直接点名C 和 C++ 是内存不安全的语言<span style="color: black;">表率</span>,软件<span style="color: black;">研发</span>商应该放弃<span style="color: black;">运用</span>,从而<span style="color: black;">快速</span>采用 Rust、C#、Go、Java、Python 和 Swift 等其他内存安全编程语言 (MSL)。
2024 年 2 月,美国白宫国家网络<span style="color: black;">专家</span>办公室(ONCD)在一份主题为《回到<span style="color: black;">基本</span>构件:通往安全软件之路》的 19 页 PDF 报告中再次<span style="color: black;">剧烈</span>呼吁道,“C、C++ 不安全,新应用<span style="color: black;">研发</span>时就别用了,旧应用应该采取迁移行动”。
2024 年 7 月,美国网络安<span style="color: black;">所有</span>门(CISA)联合美国联邦调查局(FBI)、澳大利亚信号局(ASD)、澳大利亚网络安全中心(ACSC)和加拿大网络安全中心(CCCS)共五大<span style="color: black;">公司</span>发布了一份 22 页的调查报告——《探索关键开源项目中的内存安全》,<span style="color: black;">发掘</span> 172 个项目中有 52% 是<span style="color: black;">运用</span> C、C++ 和其他<span style="color: black;">所说</span>“内存不安全”的语言编写的,<span style="color: black;">期盼</span><span style="color: black;">诱发</span>众人的<span style="color: black;">注重</span>。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">在连番呼吁之下,内存安全问题确实<span style="color: black;">导致</span>了<span style="color: black;">必定</span>的<span style="color: black;">注重</span>。为此,<span style="color: black;">有些</span>组织<span style="color: black;">亦</span><span style="color: black;">起始</span>了行动,如:</span></p>互联网安全<span style="color: black;">科研</span>小组的 Prossimo 项目与 weedegolf 合作,用 Rust 重写 Network Time Protocol (NTP) ,以<span style="color: black;">供给</span>内存安全的 NTP。
早些时候,苹果<span style="color: black;">机构</span>修改了用于构建 iBoot 引导载入程序的 C 编译器工具链,以减少内存和类型安全问题。
有<span style="color: black;">信息</span><span style="color: black;">叫作</span>,微软<span style="color: black;">已然</span>用 3.6 万行 Rust 代码改写了Windows 内核;
2022 年 12 月,Linux 内核 6.1 发布,<span style="color: black;">包括</span>了初始 Rust 支持...<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">然而,摆在现实中的问题是,</span><span style="color: black;">即使当代<span style="color: black;">研发</span>者深谙要在编写程序的时候尽可能地<span style="color: black;">运用</span>内存安全的语言,<span style="color: black;">亦</span>做了如上所述的<span style="color: black;">有些</span>尝试,但要<span style="color: black;">晓得</span> C 语言诞生于 20 世纪 70 年代,发展<span style="color: black;">迄今</span><span style="color: black;">已然</span>五十<span style="color: black;">数年</span>的历史,早已变得无处不在,无论是现代智能手机,还是太空飞行器等<span style="color: black;">各样</span>应用程序,都有它的身影。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">就连 DARPA <span style="color: black;">亦</span>坦言,美国国防部的长寿命系统对 C 语言等编程语言的依赖程度更高。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">手动地一行一行改写代码,<span style="color: black;">也</span><span style="color: black;">或</span>正确遵守 ISO 标准并认真应用测试工具就<span style="color: black;">能够</span>避免安全漏洞,显然有些不太现实。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">DARPA <span style="color: black;">亦</span>得出了一个结论:<strong style="color: blue;">经过二十多年对 C 和 C++ 内存安全问题的<span style="color: black;">奋斗</span>,软件工程社区已达成共识,仅仅依靠错误<span style="color: black;">查询</span>工具是<span style="color: black;">不足</span>的。</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">迁移是巨大的问题</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">然而此前,美国政府<span style="color: black;">公司</span>在发出呼吁的<span style="color: black;">同期</span><span style="color: black;">亦</span>指出,向 MSL(内存安全语言)过渡将<span style="color: black;">触及</span>重大投资和高管关注,<span style="color: black;">另外</span>任何此类过渡都<span style="color: black;">必须</span><span style="color: black;">数年</span>的精心规划。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;"><span style="color: black;">因此呢</span>,虽然内存安全编程语言<span style="color: black;">能够</span>消除内存安全漏洞已经不是什么<span style="color: black;">奥密</span>,但面临的挑战<span style="color: black;">始终</span>是<span style="color: black;">怎样</span>大规模重写传统代码,以应对庞大的问题。</span><span style="color: black;"><span style="color: black;">想要</span>弃用,不谈迁移代码带来的技术难度问题,仅是外在的人力、财力、精力成本都大</span>到<span style="color: black;">难以想象。</span></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">时下,<span style="color: black;">始于大型语言模型 (LLM) 等<span style="color: black;">设备</span>学习技术的最新突破,</span>DARPA <span style="color: black;">暗示</span>这<span style="color: black;">创造了一种新<span style="color: black;">处理</span><span style="color: black;">方法</span>的环境</span>,即“<span style="color: black;">经过</span>大规模自动化,将世界上高度脆弱的遗留 C 代码自动转换成本质上更安全的 Rust 编程语言。”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">“你<span style="color: black;">能够</span><span style="color: black;">拜访</span>任何 LLM 网站,<span style="color: black;">起始</span>与其中一个 AI 聊天<span style="color: black;">设备</span>人聊天,你只<span style="color: black;">必须</span>说‘这是<span style="color: black;">有些</span> C 代码,请将其转换成安全的 Rust 代码’,<span style="color: black;">而后</span>剪切、粘贴,就会<span style="color: black;">显现</span><span style="color: black;">有些</span>结果,<span style="color: black;">况且</span><span style="color: black;">一般</span>效果很好。”DARPA TRACTOR 项目经理 Dan Wallach 博士说。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">不外</span>,这是理想状态下的<span style="color: black;">状况</span>,<span style="color: black;">Dan Wallach <span style="color: black;">暗示</span>,</span>“但现实并非总是如此,<span style="color: black;">科研</span>挑战在于大幅改进从 C 到 Rust 的自动转换,<span style="color: black;">尤其</span>是<span style="color: black;">针对</span>最<span style="color: black;">关联</span>的程序结构。”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">TRACTOR 的<span style="color: black;">目的</span>不仅是实现代码转换的自动化,<span style="color: black;">况且</span>要实现<span style="color: black;">熟悉</span><span style="color: black;">研发</span>人员手动编写 Rust 代码的高质量和风格。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">经过</span><span style="color: black;">这般</span>做,该计划旨在消除 C 程序中固有的内存安全漏洞。除了利用软件分析<span style="color: black;">办法</span>(<span style="color: black;">包含</span>静态和动态分析)外,TRACTOR 还将采用 LLM 支持的<span style="color: black;">处理</span><span style="color: black;">方法</span>并举办公开竞赛来展示和测试这些创新。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Wallach <span style="color: black;">暗示</span>,</span>“Rust 迫使程序员把事情做好,处理它强制执行的所有规则可能会让人感到<span style="color: black;">捆绑</span>,但当你适应它们时,这些规则会给你自由。它们就像护栏;一旦你<span style="color: black;">认识</span>到它们是用来<span style="color: black;">守护</span>你的,你就会自由地专注于更重要的事情。”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">当前,DARPA <span style="color: black;">已然</span>公<span style="color: black;">研发</span>布了这一计划,<span style="color: black;">亦</span><span style="color: black;">期盼</span>有<span style="color: black;">更加多</span>的参赛者参与进来提交关于 LLM 支持的<span style="color: black;">处理</span><span style="color: black;">方法</span>。DARPA 将于 2024 年 8 月 26 日举办一场活动,针对计划为 TRACTOR 项目提交提案的人。这个活动<span style="color: black;">能够</span>亲自参加,<span style="color: black;">亦</span><span style="color: black;">能够</span>远程参加。<span style="color: black;">不外</span>,想要参加这个活动的人<span style="color: black;">必要</span>在 8 月 19 日之前进行注册(https://sam.gov/opp/1e45d648886b4e9ca91890285af77eb7/view)。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="//q8.itc.cn/q_70/images03/20240809/2a3a396e8b524141813a0b2549c3f3f7.jpeg" style="width: 50%; margin-bottom: 20px;"></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">AI 能一键实现 C、C++ 代码转换成 Rust 代码吗?</strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">从内存安全出发,借助 AI 大模型的<span style="color: black;">潜能</span>,实现<span style="color: black;">区别</span>的语言代码一键转换,确实是一个不错的想法。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">据外媒 The Register <span style="color: black;">报告</span>,Prossimo 项目执行董事 Josh Aas 对此认为,“当今互联网<span style="color: black;">基本</span><span style="color: black;">设备</span>中运行的<span style="color: black;">海量</span> C 代码使得<span style="color: black;">运用</span>翻译工具变得<span style="color: black;">特别有</span>吸引力。<span style="color: black;">咱们</span><span style="color: black;">已然</span>对此进行了尝试,例如<span style="color: black;">咱们</span><span style="color: black;">近期</span>将基于 C 语言的 AV1 实现转换为 Rust。虽然<span style="color: black;">日前</span>的工具还<span style="color: black;">必须</span>不少手动<span style="color: black;">调节</span><span style="color: black;">才可</span>让结果正确并符合惯用法,但<span style="color: black;">咱们</span>相信,<span style="color: black;">经过</span>进一步投资,这些工具将会变得更加<span style="color: black;">有效</span>。”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">理想<span style="color: black;">状况</span>下,只要用自然语言告诉 AI 将 C、C++ 遗留代码转为 Rust 代码,它确实会<span style="color: black;">帮忙</span>转换,<span style="color: black;">然则</span><span style="color: black;">这般</span>生成的结果<span style="color: black;">是不是</span><span style="color: black;">能够</span>直接<span style="color: black;">运用</span>?<span style="color: black;">咱们</span>距离 TRACTOR 项目<span style="color: black;">作为</span>现实又还有多远?</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">正在负责 TRACTOR 项目的工作 Wallach 坦言,该项目的<span style="color: black;">目的</span>是实现高度自动化,但这<span style="color: black;">必须</span>克服<span style="color: black;">有些</span>棘手的技术挑战。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">“其中一个挑战是,当你让大型语言模型(LLMs)转换代码时,它们有时能给出出乎意料的好答案,但<span style="color: black;">亦</span>可能会产生错误的答案。另一个挑战是 C 语言<span style="color: black;">准许</span>代码对指针进行操作,<span style="color: black;">包含</span>算术运算,而 Rust 禁止这些操作。要弥合这一差距,<span style="color: black;">不仅</span>是把 C 语言直接转换成 Rust 这么简单。”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">针对</span>这一计划,<span style="color: black;">研发</span>者的看法不一。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">网友 mike_heran 认为:</span></p>这听起来......很难。尤其是编写 Rust 与 C 语言的习惯完全<span style="color: black;">区别</span>,<span style="color: black;">况且</span>大<span style="color: black;">都数</span>有趣的代码都是用 C++ 编写的。 这不就等同于<span style="color: black;">咱们</span><span style="color: black;">必须</span>在静态分析中确定所有C程序中内存分配的生命周期,<span style="color: black;">包含</span><span style="color: black;">运用</span>自定义分配器实现的分配,<span style="color: black;">或</span>与专有库交互的分配?<span style="color: black;">数年</span>来,尽管人们对这个问题进行了<span style="color: black;">海量</span><span style="color: black;">科研</span>,但并<span style="color: black;">无</span>取得<span style="color: black;">明显</span>成果。C/C++程序<span style="color: black;">能够</span>做<span style="color: black;">有些</span>事情,<span style="color: black;">例如</span>将内存分配的生命周期与用户点击的按钮<span style="color: black;">相关</span>,而不是<span style="color: black;">运用</span>引用计数或其他机制来<span style="color: black;">保证</span>安全。虽然这不是一个好的做法,但它们确实<span style="color: black;">能够</span>这么做。 编写这种静态分析工具的另一个<span style="color: black;">明显</span>问题是,你所分析的程序本身可能是有漏洞的,生命周期分析可能<span style="color: black;">无</span><span style="color: black;">道理</span>(<span style="color: black;">倘若</span>生命周期<span style="color: black;">知道</span>,就不会有内存安全漏洞,<span style="color: black;">亦</span>就不<span style="color: black;">必须</span>替换)。我见过的关于静态检测生命周期问题的唯一<span style="color: black;">科研</span>,假定被分析的代码从一<span style="color: black;">起始</span><span style="color: black;">便是</span>正确的。<span style="color: black;">不外</span>,你<span style="color: black;">能够</span>尝试<span style="color: black;">研发</span>一种程序,它能够检测出<span style="color: black;">没法</span>计算生命周期的<span style="color: black;">地区</span>,并向<span style="color: black;">研发</span>人员寻求<span style="color: black;">帮忙</span>。<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">另一位<span style="color: black;">研发</span>者 blonk <span style="color: black;">暗示</span>:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">「</span><span style="color: black;">我个人并不认</span><span style="color: black;">为这个项目有什么问题。</span><span style="color: black;">问题</span><span style="color: black;"><span style="color: black;">更加多</span>在于“代码库有多大”以及“这真的是资源的最佳利用方式吗?”</span><span style="color: black;">我敢打赌,</span><strong style="color: blue;"><span style="color: black;"><span style="color: black;">她们</span>之<span style="color: black;">因此</span>想<span style="color: black;">运用</span> LLM,是<span style="color: black;">由于</span><span style="color: black;">她们</span>要移植的代码量很大,<span style="color: black;">因此</span><span style="color: black;">她们</span>想把这个过程自动化。</span><span style="color: black;"><span style="color: black;">倘若</span>是代码库庞大,<span style="color: black;">那样</span>我不确定<span style="color: black;">运用</span> LLM 来加快进程<span style="color: black;">是不是</span>是个好主意。</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">但这只是我的猜测。<span style="color: black;">亦</span>有可能是这些项目历史上存在<span style="color: black;">海量</span>内存安全问题,而 Rust <span style="color: black;">能够</span><span style="color: black;">捉捕</span>到这些问题,在这种<span style="color: black;">状况</span>下,<span style="color: black;">运用</span> LLM(有可能)是值得的。不管<span style="color: black;">怎么样</span>,我相信几年后<span style="color: black;">咱们</span>会<span style="color: black;">晓得</span><span style="color: black;">更加多</span>关于这个项目是成功还是<span style="color: black;">劫难</span>的信息。」</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">还有用户 Rich 2 提出质疑:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">“<span style="color: black;">倘若</span>你能<span style="color: black;">研发</span>出将 C 代码转换为 Rust 的工具,<span style="color: black;">那样</span>倘若 C 代码确实<span style="color: black;">包括</span>内存错误,将会<span style="color: black;">出现</span>两种<span style="color: black;">状况</span>之一:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(a)工具会将这些错误一并转换到 Rust 中,但<span style="color: black;">由于</span> Rust 的语言特性,理论上<span style="color: black;">不该</span>该<span style="color: black;">出现</span>这种<span style="color: black;">状况</span>,<span style="color: black;">由于</span> Rust 不支持<span style="color: black;">引起</span>这些错误的结构。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(b) 工具会在转换过程中<span style="color: black;">发掘</span>并报告这些错误。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">倘若</span>是(a),即工具只会复制错误,那转换并<span style="color: black;">无</span>任何<span style="color: black;">道理</span>;<span style="color: black;">倘若</span>是(b),即工具会<span style="color: black;">发掘</span>并报告错误,<span style="color: black;">那样</span><span style="color: black;">为何</span>不直接修复 C 代码中的错误,而要冒险重写它呢?”</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">对此,你怎么看?</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">参考:</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">https://www.darpa.mil/news-events/2024-07-31a</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">https://news.ycombin</span><span style="color: black;">ator.com/item?id=41110269</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">https://www.theregister.com/2024/08/03/darpa_c_to_rust/</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;">声明:本文版权归原作者及原出处所有,内容为作者观点,并不<span style="color: black;">表率</span>本公众号赞同其观点及对其真实性负责。如<span style="color: black;">触及</span>版权等问题,请<span style="color: black;">即时</span>与<span style="color: black;">咱们</span>联系,<span style="color: black;">咱们</span>立即更正或删除<span style="color: black;">关联</span>内容。本公众号<span style="color: black;">持有</span>对此声明的<span style="color: black;">最后</span>解释权。</strong></span><a style="color: black;"><span style="color: black;">返回<span style="color: black;">外链论坛:www.fok120.com</span>,查看<span style="color: black;">更加多</span></span></a></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">责任编辑:网友投稿</span></p>
哈哈、笑死我了、太搞笑了吧等。
页:
[1]