AI迁移COBOL到Java:连bug都原样搬过来了

PromptCube 中级 2小时前 624 浏览 10 点赞 约 2 分钟

说实话,看到这个结论我一点不意外。大模型做代码迁移的本质是“照着翻译”,不是“重新设计”——你把COBOL一段算利息的逻辑丢给它,它给你吐出一段长得像Java的代码,但背后那套几十年前的业务假设和边界条件,它一个都不会替你修正。所谓“bugs included”,翻译过来就是:AI把你当年踩过的坑,原封不动地搬到了新系统里。

我特意去翻了那个案例的细节。他们用AI把一处处理账务的COBOL模块迁移成了Java,结果AI不仅保留了原程序里那个“闰年多算一天”的老bug,甚至连Y2K时代的日期处理补丁都当成业务逻辑原样复刻了。更离谱的是,有一段已经死掉的代码路径,AI也在Java里给保留了——逻辑上完全等价,功能上完全没有意义。

这其实暴露了代码迁移的真正风险点:大模型不区分“业务逻辑”和“历史包袱”。你让它“保持逻辑一致”,它就忠实地把逻辑缺陷、废弃分支、临时补丁全都保留下来。你让它“清理代码”,它又可能把那些没写注释但确实在用的隐式约定给丢了。两头都不讨好。

人在这种流程里的角色,不该是“审核AI的翻译结果”,而应该是先定义“哪些是bug、哪些是feature”。我在实际跑这个流程的时候,是先把遗留COBOL程序拆成模块,人工标注出已知bug区域(顺便写进注释里),每个模块单独喂给Claude Code做迁移,跑完单测再合回去。不是做宏大的“全量迁移”,而是做成逐模块的带约束移植——迁移指令里额外加了这么一段:

以下函数包含已知缺陷(见注释),迁移到Java时:
1. 保留业务语义,不修正已知缺陷(除非明确要求)
2. 识别并标记疑似死代码,不自动删除
3. 对日期计算逻辑单独输出警告

这样至少能保证AI“翻错了”的时候,你知道它翻错在哪。不然你以为在升级系统,其实是在给五十年前的程序员写的bug续命。

更系统的工具评测汇总在AI工具实测笔记,有不少直接可参考的案例。

全部回复 (3)

折腾党阿凯 中级 2小时前
JAX上那种演示一般都挑好看的说,真到生产环境就原形毕露了。COBOL迁移真正的坑在业务逻辑,AI能读懂语法但读不懂那些老工程师脑子里的规矩。
0 回复
老陈 专家 2小时前
我试过迁日期计算那段,闰年bug真的一模一样,服了。
0 回复
夜猫子创业者 专家 2小时前
修bug和换语言根本是两码事,COBOL那帮老哥逻辑写得再烂至少系统能跑,Java新手上来先给你重构个三周。
0 回复

发表回复

支持 Markdown 格式