記憶の集まりとしてのコード

9月27日に公開された開発者の回顧録は、筆者とコンピューターとの関わりを形作った10本の短いコードを集めている。技術的に重要なソフトウェアの順位付けとして選んだものではない。むしろ、小さなプログラムを発見の節目として扱っている。マシンが初めて表示したあいさつ、個人用の便利な近道、デバッグの手法、あるいは実行して初めて結果が分かる冗談といったものだ。

振り返りは、複数の時代と抽象度にまたがる。初期の「Hello world」の例は、コンピューターが初めて指示に従った瞬間を捉える。6502プロセッサー向けの機械語ルーチンは、実行中のコードが、後続の命令で使うアドレスを含め、自らのバイト列を書き換えられることを示す。筆者にとって、この能力は低水準プログラミングを強力であると同時に危険なものに感じさせた。プログラムとメモリーの間には、より高水準の安全策がなかったからだ。

別の例は、Unixの`touch`コマンドの簡易版として使った、ごく短いWindowsのバッチスクリプトだ。ファイルマネージャーのミニシェルから空のファイルを作成でき、Windows NTからWindows 7まで筆者の作業手順の一部であり続けた。他の例はウェブ開発へと進み、他の環境でおなじみの出力表示による診断になぞらえた、CSSのデバッグ技法なども紹介される。

遊び心と慎重さ

選ばれた例のいくつかは、実験を通じてソフトウェアの下にある構造を学べることを示している。実行中のゲームのメモリー内で特定のバイトを書き換えると、残機や資源を増やせた。固定されているように見えるゲームのルールも、結局はデータであり、その所在が分かれば変更できることを示す例だ。学生時代のPascalスクリプトは、予測しやすい3文字のユーザー名を調べ、初期設定のパスワードが残ったアカウントを探していた。筆者はそれを粗雑でバグの多いものとし、繰り返すべき手法としてではなく、若い頃の一幕として述べている。

回顧録はまた、かつてのIRCのチャットルームで、Linuxの問題を直す方法と称して出回った破壊的なコマンドにも触れる。時代を映すユーモアをまとった警告として取り上げられている。特権を持つコマンドはシステムを消去しうるし、理解していない助言をそのままコピーすると、取り返しのつかない結果になりうる。その対極にあるのが、CSSだけで作られた短いアニメーション詩だ。制約が創造的な凝縮を促す様子を示している。このアニメーションはソーシャルプラットフォームの文字数制限に合わせて設計され、スタイルブロック以外は何もない文書でも動作できた。

これらの例を合わせると、コードは大規模でも、斬新でも、商業的に重要でもなくても、意味を持ちうるという主張が浮かび上がる。たった1行が、マシンは文字どおりに指示に従うことを教えるかもしれない。短いルーチンがメモリーの書き換え可能性を明らかにし、小さなツールが日々の手間を取り除くかもしれない。共通するのは構文ではなく、それぞれのコード片が、筆者の考える「何が可能か」を変えた瞬間だ。