コードをノートに手書きして脳内デバッガでデバッグしていた1985年のコード術
プログラムを組まなければいけないのに、対象ハードウェアには24キーの電卓のようなキーパッドしかついていなかったため、やむを得ずノートにコードを手書きしていたというジョン・グラハム=カミングさん。デバッグ機能も十分ではなかったため、彼は「脳内デバッガ」でコードを走らせるクセがついたそうです。
How I coded in 1985 | John Graham-Cumming
http://blog.jgc.org/2013/04/how-i-coded-in-1985.html
「ボトルにラベルをミリ単位の精度で正確に貼り付ける」という作業を行う電気機械制御を、当時技術系の専門学校で電子工学を学んでいたグラハム=カミングさんらが担当することになりました。この学校では当時、KIM-1でコンピュータ制御のプロトタイプを作っていたそうです。
他の学生が、コンベアの機械にラベルの束をセットする部分、ステッピングモーターをコントロールする部分、ラベルとボトルを検知する赤外線センサーの仕組みを作り、グラハム=カミングさんはソフトウェア部分を作る仕事を担当しました。
しかし不幸なことにアセンブラはなく、KIM-1には0~9の数字・A~Fのアルファベット・機能キー7つがついた全24キーのキーパッドと小さなディスプレイしかついていなかったため、コードをまず手で書くことになりました。
その問題のコードがこちらで、まずはコードを書き(中央の青文字部分)、それをマシン用に変換(左側の赤文字部分)していました。右側の緑文字部分はどう動いているのかの説明。まずは最初に束にどれぐらいのラベルがあるかを測るオートキャリブレーションが行われます。
このとき、グラハム=カミングさんの手元には相対パスなどを計算するための電卓がなかったため、ほぼ頭の中で作り上げました。このときの経験から「最初の時点で正しいコードを書くこと」「頭の中でコードを走らせること」という2つをするようになったそうです。
プログラムの全文はこちら。
labelling machine.pdf
https://docs.google.com/file/d/0BwUohGCPTAlALUpDY1JGUTFxYUU/edit
「頭の中でコードを走らせる」というのは今でもグラハム=カミングさんの重要な要素となっていて、書いたコードはまず頭の中で走らせるようにしているし、デバッグの時にはgdb(デバッガ)を使う前にまず脳内デバッガを使うそうです。
グラハム=カミングさんのもとには、1985年の時点でKIM-1はすでに最先端技術からほど遠い存在で、もっと精密なコンピュータがあったはずだという指摘があり、グラハム=カミングさんは「確かにそうです。私もBASICとZ80アセンブラ・ZASMを使ってプログラミングをしていました」とそれを認めたうえで、学校にKIM-1という埋め込みコントローラーにちょうどよい入出力を持つコンピュータがあって、それを使うしかなかったと説明しています。
使用しているプログラミング言語や機材は変わっているとはいえ、グラハム=カミングさんと同様に「脳内デバッガ」を愛用しているという人は少なくなさそう……。
・関連記事
プログラミング言語同士がどう影響を与え合っているのかを示した相関図 - GIGAZINE
Fortranから最新言語まで、約2500種類のプログラミング言語の系図 - GIGAZINE
「仮想牧師」をプログラミングして結婚式を挙げるカップル - GIGAZINE
「サセン…アア…エット…」と書けば本当に実行できる「コミュ障プログラミング言語」 - GIGAZINE
・関連コンテンツ