Bitに短期連載された竹内さんのSmalltalk-80紹介は衝撃的でした。当時よく知られていたプログラミング・パラダイムには「手続き型」と「関数型」がありました。関数型はプログラムの実行時に副作用をおこさないことなどに力点を置いた説明がが多く、それによって数理的にプログラムの正当性を論じることが出来るような話だったと思います。
そこにオブジェクト指向が現れて何もかも一変しています。「この世はみんなオブジェクト」「手続きはオブジェクトが知っている」「オブジェクトにメッセージを送る」「親のクラスから子のクラスへの継承」等々、エキセントリックな概念がずらりと並び、辛気臭い(失礼)関数プログラミングなど吹き飛ばしてしまったのでした。
オブジェクト指向が話題になったからといって、それがすぐに手に入る時代ではありません。主な処理系の殆どは手に入らないかPCに大きすぎる時代です。この記事が現れたころはMacはなく、ようやくIBM-PCがでるかでないかの時期でした。一部でTurbo Pascalが安くて速いと騒がれていた頃です。何かを学びたければ本でも読むしかありません。
幸い、時間だけはあったので繰り返しSmalltalkの記事を読みました。その中で特に感銘したのは差分プログラミングでした。

親のクラスから殆どのことは継承できる。出来ないことだけ子のクラスで書けばいい。子のクラスに書いてないことは自動的に親のクラスが面倒を見てくれる。

頭を棍棒で殴られたような気分でした。これはいけます。少し前に流行り始めたPascalやForthがコードを細かくルーチン化することによって徹底的に記述量を減らすような宣伝をされていました*1が、Smalltalkにいたってはどうやらまったく違うアプローチでコードサイズを減らしているように見えました。
しかし、実のところそれは少し違っていました。

*1:8bitマイコン時代には、コードサイズはものすごい問題だった

/* -----codeの行番号----- */