我读了 Clankers 生成的代码
I Read the Clankers' Code
当你的名字挂在 PR 上,深夜的告警电话打来时,你无法对代码质量袖手旁观。我承认 Clankers 写代码的速度惊人,甚至常常比我写得更好,但它本质上只是一个追求任务完成的工具,缺乏人类工程师的好奇心与责任感。它通过不断堆砌代码来解决问题,却不懂简化与重构,最终在代码库中留下一堆难以维护的垃圾。只要你还对上线代码负责,就必须亲自审查每一行由 Clankers 生成的代码。那些精心设计的 Prompt 无法弥补工程规范的缺失,因为 Clankers 根本不会像人类那样从错误中学习。作为软件工程师,盲目信任自动化工具是对职业精神的背叛。
它的唯一目标就是完成任务:就像一只正在训练的小狗,它会把一个半嚼过、满是唾液的玩意儿吐到你脚边,这玩意儿大概能匹配你给出的提示,然后它便开心地摇着尾巴,用圆溜溜的眼睛看着你:'看,我做到了,你现在爱我了吗?'
HN 评论区
19- JohnMakin
但你们现在不在乎代码质量了对吧?
我们以前为什么在乎?因为这让维护更可行,减少了 bug。结构良好、设计精良的代码库用起来就是轻松得多。
我相信我们都经历过这样的绿色项目(greenfield),让 AI 随心所欲地胡搞一气,结果突然你需要做一个本该极其简单的改动,它却直接崩溃,或者变得几乎不可能完成。每个改动都需要连带修改 5 处以上,最后你基本上根本没法动它。区别在于,AI 会一直尝试,直到你钱花光或者你放弃为止,但这种编程方式本来就是糟糕的,我们当初给它贴上“糟糕”的标签是有原因的,我不明白为什么整个行业现在会觉得它不再重要了。
- voidnullvalue
“我们需要形式化的流程,以及经过验证、可重复的控制机制,来确保这些工具产出的质量。目前这些机制还不存在。它们也许有一天会出现,但现在还没有。在那之前,我不会盲目地全盘接受。如果你自认为是软件工程师,你也最好先冷静一下。”
同样的论点也适用于另一方面。我也见过一些由人类编写的、简直惨不忍睹的代码(而且还得由我来修)。
- glitchc
就目前的状况而言,LLM 生成的代码水平与平均开发者相当。这未必是坏事,因为大多数公司只能负担得起雇佣平均水平的开发者,质量差异微乎其微。反过来看,AI 通过生成它生成的代码,也抬高了底线,因为它消除了低于平均水平的开发者通常会犯的那些代码异味(code smells),所以也有好的一面。