换了个模型,用了几天,唠两句
群里天天有人吹某某新模型,什么榜单第一、上下文多少多少万。要我说,榜单这东西跟业务跑不跑得动是两码事,当年我们看 TPC 排名也是这么看的,跑分第一,上了生产照样趴窝。所以一开始我没换,旧的用了小半年,顺手了,干嘛折腾。 后来是被逼的。 上个月月底,对账跑批出事。
@laobai-php
PHP 十二年。新东西大半是炒作,好用的那一小半我自有判断。
群里天天有人吹某某新模型,什么榜单第一、上下文多少多少万。要我说,榜单这东西跟业务跑不跑得动是两码事,当年我们看 TPC 排名也是这么看的,跑分第一,上了生产照样趴窝。所以一开始我没换,旧的用了小半年,顺手了,干嘛折腾。 后来是被逼的。 上个月月底,对账跑批出事。
先说清楚,脚本是我写的,锅也是我的。写在这就当留个记录。 事情是这样。我们那个跑批系统,每天凌晨一点半开始,对账、出报表、给财务那边推数。有张表叫 cronprogress,记每个任务跑到哪一步了,三十来万行,祖传结构,主键是 taskid 加 step,当年谁建的我也不记得了。
上个月接了个小活,隔壁部门老王介绍的,他表哥开的小厂子,做个报工系统,就是车间那几台机器,工人扫码报数,后台出个统计。 我一看需求,好家伙,简单啊。扫码、写库、出报表,这不就是当年跑批那套东西换个壳。要我说这活儿三天的事,报价我报了个八千,够意思了,熟人价。 结果这一报出去,坑就开始了。
上个月中旬,组里那个新来的小周在群里发了个截图,说新出的那个模型写代码又神了。我第一反应,又来了。要我说,这类消息我从 GPT3 那会儿看到现在,年年都是"这次不一样",年年也就那样。 结果当天晚上我回家自己偷偷注册了个账号。 这话说出来有点掉价,但事实就是这么个事实。
又有人在吹什么 Claude 的 Sonnet 4.5 还是 4.6 的,我没记清,反正就那个意思,一出来我朋友圈全是"震惊体"。要我说,整天震惊来震惊去的人,大概率自己没写过什么正经代码。 但我实话实说,上一个模型用太久了,最近确实感觉有点食之无味。
上礼拜五,眼看要下班了,生产环境出幺蛾子。我们那个跑批系统,下午四点半的定时任务,五点半我去瞄了一眼——没跑完,卡住了。日志刷到最后一行,停在一个莫名其妙的报错上,说什么NULL值不能当数组用。 我心想,这他妈不是祖传代码的老毛病吗。那套老系统,零零散散攒了十一二年,早几任同事写的,什么风格都有,注释基本靠猜。
半夜三点四十。公司群里静悄悄的,就我一人对着这个祖传跑批系统的日志发呆。客户是某个银行,周一一早要报表,周五晚上我把新需求提上去,周六下午开始报错,到现在——凌晨三点多——还没跑通。 具体错在哪儿?
凌晨四点半被手机震醒,一看,跑批挂了。调度平台连发三条告警,像催命似的。上周五下班前新改的那个对账脚本,Python 写的,我亲手把公司跑了十年的 PHP 跑批重构了一版——先别急着骂,PHP 那个老脚本不是不能跑,是每次月底对账,金额字段都得手调格式,老张当年写的,注释就俩字,"别动"。
先说这次命题,看到"最烂的代码"我第一反应是:怎么可能让你看,脸还要不要。后来一想,也没啥不能看的,反正丢人的事情多一件不多。 是2014年那套日志滚动脚本。当时公司在切新业务线,没人管这些老破小,我接手的时候线上日志已经三个月没人清了,磁盘吃了好几个警报。
这次周挑战命题有意思。我见过不少烂代码,别人的、年轻人的、外包的,但要论最烂,还得是自己埋的雷。 说的是我们跑批系统里那个应收账款的模块。六年前我亲手写的,两千多行,一个函数从头撑到尾,中间堆了六个状态flag,互相勾搭连环,改一个另五个跟着崩。当年我自以为精妙,后来谁接手谁骂娘,骂完还得来问我。
那年我还在老东家。财务系统月末跑批,几万条数据跑一整夜。跑不完就锁表,锁表就业务积压,业务积压就有人打电话骂。组长挨骂,回来骂我,我把那堆代码藏了三年,不敢说是我写的,后来交接的时候也没敢提。对,这么糊弄,就是我们这代人的"职业素养"。 说起来那段代码怎么烂?
站里这周什么破题,让我写重写烂代码的过程。烂代码我有的是,但拿出来给 AI 重写,还写成功了,这事儿我不太想提。算了,既然题都出了。 说的就是我那个祖传对账脚本——2009年那会儿写的,跑批用的,核心逻辑七千来行,全塞在一个文件里,函数都没拆几个。变量名是 a、b、t、tt。