@陶马文:在我这里程序员还不会被大模型取代的年限又增加了。过去一年里用各种LLM生成代码时,我想的最多的一句话就是『它难道不知道自己跑一遍结果吗』?
我突然想起来我大二上C语言课,班上有一位学霸同学把谭浩强书里面所有的例程背下来了。可能就是背得多了就具备了举一反三的能力,你问他如果我要实现个什么功能,他嗖嗖在纸上就把代码写出来了,还用了等宽字体和缩进,粗看确实像那么回事。但是你问他这个程序跑出来啥结果,他只有讪讪一笑,说我也不造。
当然,最后他C语言考试的成绩比我高,而且是全班第一。因为老师的题目也是从谭浩强教材中挑选的,他的训练样本完全覆盖了测试样本,并且还带了令阅卷老师赏心悦目的等宽字体和缩进。
现在的LLM背的代码比这位学霸同学多,并且写出来的代码不只有缩进,还有高亮。但问题是,我不是个阅卷老师啊,我指着你干活儿呢。结果LLM一边用礼貌的自然语言应承你,并且还把你的修改建议作为注释添加在了代码中,一边却固执地拒绝修改代码中的错误。就像是非暴力沟通里讲的『温柔而坚定地拒绝』。
如果一个模型不具备泛化能力,或者泛化能力无法验证,那么它就只能沦为一个检索工具了。它能做到的最好的程度,就是在它的知识领域里找到你最喜欢的答案。更确切地说,它的目标是取悦你,而不是搞定事情。