Short Coding 職人達の技法

ネット上で評判良かったようなので、買ってみた。


内容は「省リソースで目的の出力を果たす」というコード作成の目的にしたがって、業務には役に立ちそうにない実装コードの短縮/メモリ省力化のためのコード作成のテクニックを色々展開する代物。実務で書いたら一発で、はっ倒される、論理演算、()省略記法、未初期化変数、などなどのテクニック。


いや、懐かしい感じだ。おっさんは25年前くらいのベーマガ上のプログラムを思い出したよ。


例えば、「テンキーで自機移動。画面外に出ないように制御」って内容のコードを、現在風に書くと、

 10 J=STICK(1)
 20 IF J=6 THEN X=X+1
 30 IF J=4 THEN X=X-1
 40 IF J=2 THEN Y=Y+1
 50 IF J=8 THEN Y=Y-1
 60 IF X<0 THEN X=0
 70 IF X>40 THEN X=40
 80 IF Y<0 THEN Y=0
 90 IF Y>20 THEN Y=20

と、こんな感じ。


で、当時の常識。

 1 J=STICK(1):X=X+(X<40)*(J=6)-(X>0)*(J=4):Y=Y+(Y<20)*(J=2)-(Y>0)*(J=8)

当時のマシンのメモリ上の都合か、紙面上の都合か、どちらが優先されたかは分からないが、IF文なんて必要無い限り使わず、論理演算で省略出来るものはこんな感じに。

改行しないのはメモリの都合。リターンコードの1バイト分、他に使えるメモリが減る。

行番号もメモリの都合。桁数増えたらその分、減る。通常のBASICの解説本の「10ずつインクリメントして、途中に必要になった処理が間に書き込めるように」とかあったけど、そんなの完全無視な感じで。


当時のマシンはメモリ全部で、8K/16K/32Kくらいだったから、必要だったテクニックだったんだろうなぁ。その当時は弊社は、メモリを使い潰すようなコードを作ることも出来ませんでしたが、参考文献がBASICではベーマガくらいしかなかったから、これら記述方法が普通に書くものと思ってたよ。