编程代码是一种有正确答案的语言。
当然不是因为 AI 编程火…
先有强代码模型,才能支撑 AI 编程爆火。
编程代码是今天所有「语言」里,唯一有「正确答案」的语言。
这里有俩问题:
- 编程代码是语言
- 编程代码是一种有答案的语言
解释完这俩问题,标题里的问题也就有答案了。
从 GPT 开始我们用的 AI 开始变成“大语言模型”。
它的原理是给模型投喂大量文本(语言)训练语料,让它在里面找规律,学会这种我们所投喂“语言”资料的表达方式。
对于语言这个东西,我们唯一能判断“对错”的只有语法这个东西。
比如,“我叫张佳”是对的,但是“张佳我叫”就是错的。
除此之外,我们对语言的判断标准就只有“文笔好不好”、“表达得不得体”这类空泛的规则了。
所以,对大语言模型的训练来说,除了常规的事实性错误外,你很难评价它好不好。
说 GPT 比文心一言好,也只是“感觉”那个洋玩意儿的回答读起来更舒服。
既然“文无第一”,那咱就比比理科。
于是 AI 公司们开始卷“推理”、“数学计算”。
但是,一卷发现,这玩儿根本没得卷:基于语言训练的模型,“推理”全靠死记硬背…
你能让它被九九乘法口诀,但不能背微积分和线代。
纯理科干不动,于是 AI 公司们找到了一个文理科的中间态:编程。
哪怕你不会编程也知道,编程有好多“语言”,从我们最早认识的 C 语言,到现在流行的 Python 语言、JavaScript 语言。
他们之所以被称为“语言”,是因为这是一种跟计算机「交流」的方式。
程序员们通过指定的语法规则写一堆花花绿绿的内容,通过计算机的“编译器”翻译给电脑,变成电脑理解的二进制语言,在它的“二极管”里运行。
人类的语言,被别人接收后最终的形态是在脑子里变成“画面”。
这个画面,人人不一样,哪怕每个人能用相同的词描述出来。
这就是人类语言不可评判的根本原因,因为人类语言本身就是不准确的(如果你突然对此产生了兴趣,可以阅读一些语言学相关的书,非常有意思)
但是计算机的语言最重被翻译的结果是非常精确的“0”和“1”(也就是计算机的二进制)
所以,编程语言是有正确与否的。
每一段代码不管它优雅不优雅,最终一定要可以被执行、实现某个功能,否则都白扯。
这对于“大语言模型”训练来说,太爽了!
之前常规的“文科式”语言训练,最终调优阶段,人类工程师们只能给出事实性判断和非常模糊的“表达不够优雅”这样的评价。
甚至有时候,人类工程师的表达能力不如大模型时,甚至给出拖后腿的评价。
但现在训练编程代码模型的时候,基本上不需要人类工程来评价了。
代码能不能运行输出预期的结果,AI 自己也能判断。
大家还记得 GPT 在 23 年上线的数据分析功能吧?
如果你观察它的分析过程,会发现它其实就是个小型的智能体:接受需求—>生成代码—>运行代码—>分析代码运行结果—>对,输出答案(报错这返回修改代码)。
今天 Cursor、Windsurf 这类代码工具,之所以能这么“智能”,一方面是因为模型靠谱了,另一个很重要的原因也是基于编程语言的可验证性。
所以,如果一家大模型公司连代码模型都搞得稀烂的话,就基本没得“聊”了。