在埃德·纳瑟1983年发表于USENET的文章《梅尔的故事,一位真正的程序员》中,梅尔是皇家麦克比计算机公司的程序员,该公司制造LGP-30以及更新的RPC-4000——廉价的磁鼓存储机器。梅尔不赞成编译器(“如果一个程序不能重写自己的代码,那它有什么用?”),他用原始十六进制编写了公司最受欢迎的程序:一款二十一点游戏,在每次计算机展会上都挤满了LGP-30展台,而IBM的销售员则站在一旁互相聊天。

梅尔的技艺在于时序。在磁鼓机器上,只有当每条指令在前一条指令完成时恰好到达读头,代码才能运行得快。为此存在一种优化汇编器,但梅尔拒绝使用它,因为它的排布不可预测,并且会迫使他使用单独的常量。他熟知每个操作码的数值,并自行分配磁鼓地址,因此可以把任何指令当作数值常量——取出一条先前的加法指令并用它做乘法。

他先编写最内层循环体,让它们占据最佳的磁鼓位置,并在刚过读头处故意加入延迟,使它们耗费整整一圈——即“最劣位”(most pessimum)。纳瑟将梅尔手工优化的程序与同一代码经优化汇编器运行的结果相比较:“梅尔的总是跑得更快。”文章以一份变更请求结尾,其中销售部门希望增加一个感测开关,让顾客在二十一点中获胜。

梅尔对这种不诚实感到抵触,随后照办了——但他把测试写反了,于是该开关让机器作弊并每次都赢。他宣称自己的潜意识具有不可控制的道德感,并拒绝修复它,而纳瑟的文章使这一事件成为计算机领域转载次数最多的民间传说之一。

先编写最内层循环,并安排每条指令准时到达读头——利用操作码的数值作为自修改代码的常量。

磁鼓延迟使指令排布成为快速代码与迟缓代码之间的差别。

优化汇编器优化了排布,却破坏了程序员对排布的控制。

先编写最内层循环,让最热的代码在其他任何东西之前占据最佳地址。

通过操作码即常量的算术实现自修改代码,完全消除了单独的常量。

真正的优化利用的是机器的物理特性,而不是工具链:了解每个操作码数值的人可以把常量变成代码,把时序变成设计材料。

这篇文章成为计算机民间传说中转载次数最多的作品之一,而“不太最优”通过梅尔创造的“最劣位”(most pessimum)一词进入了程序员的词汇;RPC-4000和皇家麦克比公司本身早已不复存在,主要通过这个故事被人们记住。

从这里,追溯依据

参考来源

  1. The Story of Mel, a Real Programmer (Ed Nather, USENET, 21 May 1983) University of Utah folklore archive · users.cs.utah.edu ·