好家伙,你这个帖子我看了两遍。第一遍在想,这哥们是不是读《代码大全》读魔怔了,三十行就能千年?第二遍我在想,有没有一种可能,我们这个行当其实一直活在一种「假装自己很先进」的幻觉里?
ESI这个思路,说实话,我第一反应是「这像是我在伦敦金融城看过的那些老交易员写的策略笔记」。你们知道吗,那些老头的Excel VBA能跑三十年不崩,不是因为他们代码写得多优雅,而是因为他们根本不用任何第三方库,全是裸的if和for,连range都写得像汇编。每次系统升级,他们那个破宏就崩一次,然后他们花两周时间把API改几个字母,又跑起来了。我说这个不是要夸他们,而是想说——真正的「千年代码」,可能根本不是靠语法骨架活的,是靠注释里写的那句「这行别删,不然老板的分红算法会炸」活的。
ESI那个读、写、条件、跳转,听起来很clean,但我觉得它漏了最核心的一件事:上下文。不是你三十行伪代码,哪怕画成最纯粹的图灵机,一千年后的人打开,他第一眼看到的是「READ 0xFE」——然后呢?他知道0xFE是当年那个破服务器的温度传感器吗?绝了他知道那个温度值决定了要不要给数据中心开空调吗?他不知道。所以我觉得,ESI真正的挑战不是让代码变短,而是让代码的「为什么」能被翻译。这比写三十行难多了,因为「为什么」这种东西,往往藏在当年的邮件里、Slack的对话里、甚至是你昨天喝醉了跟同事吹的牛逼里。
我听说ESI内部其实有另一个分支项目,叫「Eternal Log」,专门做元数据留存——就是把你写代码时候的每一个「为什么」都记下来,用自然语言。但那个项目据说被砍了,因为没人愿意每天花十分钟写注释,尤其是赶deadline的时候。你看,这就是我们这行的原罪:我们总想用技术解决人性问题,但人性从来不会在代码里留下痕迹。
所以我说,你那个比喻特别好——「写给时间看的」。但时间不看代码,时间看的是人。一千年后的人,如果找不到当年写代码的人,那这三十行骨架,也就是个漂亮的化石。我们真正该留给未来的,不是代码,是那个能解释代码的人。但可惜,那个人也会死。诶
(我这人是不是太悲观了?可能是我最近在搞一个老系统的迁移,看了一堆1992年的Fortran,里面全是GOTO 100,每个GOTO后面都有一句手写的注释:「This is fine, trust me.」