エド・ネイザーの1983年のUSENETエッセイ「リアル・プログラマー、メルの物語」において、メルはロイヤル・マクビー・コンピュータ社のプログラマーである。同社はLGP-30と、より新しいRPC-4000という安価なドラムメモリ式計算機の製造元だった。コンパイラを嫌っていたメル(「プログラムが自分のコードを書き換えられないなら、何の役に立つのか?」)は、同社で最も人気のあるプログラムを生の16進数で書いていた。それはブラックジャックのゲームで、あらゆるコンピュータ見本市でLGP-30のブースを満員にし、その間IBMの営業マンたちは互いに話し込んで立っているだけだった。

メルの職人芸はタイミングだった。ドラム式計算機では、各命令が前の命令の終了と同時に読み取りヘッドに届くときだけ、コードは高速に動作する。このための最適化アセンブラが存在したが、メルはそれを拒んだ。その配置は予測できず、別個の定数を強いられるからだった。あらゆる演算コードの数値を知り、自分でドラムアドレスを割り当てていた彼は、どの命令も数値定数として扱うことができた。以前の加算命令を取り出して、それで乗算するといった具合である。

彼は最内ループの本体を最初に書くことで、それらに最適なドラム位置を確保させ、読み取りヘッドの直後に意図的な遅延を置くことで、それが丸一回転を要するようにした。いわゆる「最悪(モスト・ペシミウム)」である。ネイザーはメルが手作業で最適化したプログラムと、同じコードを最適化アセンブラに通したものとを比較した。「メルの方が常に速く動いた」。エッセイは、営業が顧客がブラックジャックで勝てるようにする感応スイッチを求めた変更要求で締めくくられる。

メルはその不誠実さに難色を示したが、従った。ただしテストを逆に書いたため、スイッチは機械を不正に動作させ、毎回勝つようにした。彼は自分の潜在意識が制御不能なほど倫理的だと宣言して修正を拒み、ネイザーのエッセイはこの出来事を、コンピューティング界で最も多く再掲された民間伝承の一つに変えた。

最内ループを最初に書き、各命令を読み取りヘッドに正確に間に合うよう配置する。オペコードの数値を自己書き換えコードの定数として使う。

ドラムのレイテンシのため、命令の配置が高速なコードと極端に遅いコードの分かれ目になった。

最適化アセンブラは配置を最適化したが、プログラマーの配置に対する制御を破壊した。

最内ループを最初に書くことで、最も頻繁に実行されるコードが他の何よりも先に最良のアドレスを確保できた。

オペコードを定数とする算術による自己書き換えコードは、別個の定数を完全に不要にした。

真の最適化はツールチェーンではなく、機械の物理的特性を活用する。すべてのオペコードの数値を知る人物は、定数をコードに、タイミングを設計の素材に変えることができる。

このエッセイはコンピューティング界で最も多く再掲された民間伝承の一つとなり、「最適とはほど遠い」という言葉がメルの「最悪(モスト・ペシミウム)」という造語を通じてプログラマーの語彙に入った。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 ·