わくわくした話

コンパイラマクロと型推論のあわせ技で出来る可能性でわくわくしたことから、そういえばこれまでどういったものでわくわくしたかなと思いました。プログラミングに限らず、大きく進歩させる最大の特効薬はわくわくすることじゃないかなと思います。コンピュータに限らずわくわくすることはあるわけですが(例えば、初めてデートしたときとか)、今回はコンピュータに限ります。

  • PB-100でCSR文に変数が使えることが分かったとき

初めて使ったコンピュータがカシオのPB-100(Macのノートじゃないです)でした。PB-100には方言のきついBASICが載っていて、その中にPRINT CSR #というコマンドがありました。これは#に示す位置に文字を書くというコマンドです。それまではリテラルしか使えないと思ったのですが、変数が使えるということは表示する文字が動かせるということで、これでゲームが出来るじゃんと思ったのでした。結局大したゲームは作れませんでしたが・・・。
今思うとPB-100のBASICのデザインはすばらしいと思います。

  • Forthを知ったとき

高校生のときFM-NEW 7を持っていてF-BASICでディスアセンブラを作ったりしていました。BASICでこの手のものを作るとオーバフローチェックをしてくれたりしてめちゃめちゃ面倒でした。あるとき、Forthなる言語を知ってこれだとディスアセンブラなんかが作れる、それ以前に速いから機械語が必要ないと気づきました。でも、結局Forthで大したプログラムは作れませんでした・・・。

  • Lispでreplaca/replacdを知ったとき

大学生のときXLispなる処理系を手に入れてLispの勉強をしてみました。はじめはきれいだけどこんなリスト処理で実用的なプログラムを作れるのかいと思っていました。そんな時、replaca/replacdを使ってキューを実現する例を読みました(多分SICPの第1版だったと思う、set-car!, set-cdr!から読み替えています)。これを読んでLispのconsセルはさまざまなデータ構造を生み出せるとてもエレガントなものだと知ってすっかりLispの虜になってしまいました。
でも、Lispで書いたものといえばLispコンパイラくらいしか覚えていないのですが・・・

いやー、結局わくわくしても結果に結びつかないです。きっと成果があがったものもあるだろうと、思い出したらまた書きたいと思います。