プログラミングの思い出

http://www.kmonos.net/wlog/84.html#_1054080427 とか
http://d.hatena.ne.jp/haru-s/20080217 を見てなんとなく思いだしたことを書きとめておく。

コンピュータとの出会い

人生で最初にふれたプログラマブルなコンピュータは、カシオのポケットコンピューター。たぶんこれ。
http://www.pocketmuseum.com/images/seiko/mc-2200.jpg
http://www.pocketmuseum.com/images/seiko/mp-220.jpg
ってカシオじゃないやSEIKOだ。そうだSEIKOだ。MC-2200。感熱プリンタとマイクロテープドライブが一体化した拡張デバイスがついてて、プリンタやテープを使うには電卓みたいな本体を土台みたいになってるそのデバイスにがちゃっと埋めこんで使う。
本体には見てのとおりたった一行分の、しかもアルファベットしか表示できない画面しかないわけだが、もぐらたたきとか、迷路探索ゲームとか、スタートレックゲームとかが付属していていろいろ遊べた。スタートレックはなんといちいち画面*1をプリンタに打ちだして遊ぶようになってた。
付属っていってるのはおまけのマイクロテープにはいってるので、いちいちピーピーガーガーいわせながらプログラムをロードしないといけない。たしかでかいゲーム(スタートレックとか)はロードだけで五分くらいかかったと思う。
あ、いや違ったかも。入門用のテキストにゲームプログラムが載っていて、それを打ちこんでテープに保存してたのかも。がんばって巨大なプログラム打ちこんだのにテープへの保存に失敗していて全部パァになったという経験もあります。でも電源切っただけではメモリはクリアされなかったんじゃないかな*2。自分でプログラム作ってる時はいちいち途中で保存しなくてもよかったので便利だったような。
テープに保存する時にも便利なインターフェイスなんてものはない。普通のラジカセについてるような再生や録音や巻き戻しや早送りボタンがついてる。このへんの操作は手動。つまり、保存するときは録音ボタン押しこんでから本体にCSAVE命令を発行しないといけないし、読みこむ時は本体のCLOAD命令を発行してから再生ボタンを押しこまないといけない。あ、よくみるとテープドライブの近くに「REMOTE」って書いたオンオフスイッチがあるな。LOADする時は同期して再生してくれる機能はあったかもしんない。
複数をプログラムを一本のテープに保存することもできるんだけど、それぞれのプログラムをどこからに録音したのかは自分で覚えとく必要がある。どうやって覚えとくかというと、テープを巻き戻した状態でテープカウンタを0にしておいて録音開始したカウンタの値をメモっておくわけだ。当然上書きしてしまうとアウトなので、必然的に終了場所もメモっておかないといけない。
いやー書いてて、今の技術とのあまりの落差に驚きますね。

最初のプログラミングの思い出

このポケコンの持ち主は親戚の叔父さんで、当時(小学生低学年くらいか)はよく遊びにいっていたので、その時にいじっていた。とはいえ、最初はプログラミングの意味をさっぱりわかってなかった。断片的にこんな話を覚えている。
僕はよくこのポケコンの「もぐらたたきゲーム」で遊んでいた。このもぐらたたきゲームは、もぐらがあちこちに顔を出すようなゲームじゃなくて、単にアルファベット一文字が画面に表示されるだけ。1〜2秒くらいの制限時間内にそのアルファベットのキーを押せれば叩いたことになるわけだ。それを15回繰り返すと叩いた数だけが点数になって終了。15点満点。最後に得点に応じたメッセージがでる。2点くらいしかとれないと「ZENZEN DAME」とか、15点満点とれると「ANATAHA TENSAI DESU!!」とか。日本語は表示されないから全部ローマ字。今思えばなんの工夫もないつまらないゲームだけど、当時の僕は何点だとどのメッセージがでるのか全部暗記するくらい遊んだ。
夏休みのある日、叔父さんのところに遊びにきていた従兄弟達とみんなでこのゲームをやってた。得点ごとのメッセージを覚えている僕は、メッセージが表示される前に何が表示されるかを言い当てることができた。従兄弟連中に「すごいすごい」言われて、調子にのった僕は、このゲームに一番詳しいのは自分だ、すごいだろ、というノリで叔父さんにまで「何点でどのメッセージがでるかわかるよ!!3点までだとこれで〜」とか説明しだした。叔父さんは笑いながら「ああ、そりゃ俺もわかるよ。だって全部俺が打ちこんだんだもん」と答えた。

最初は意味がわからなくて軽くショックだった。「ゲームの動作は全てプログラムとして記述されていて、それを書いた人はゲーム中に何をどうするとどこがどうなるのかを完全に知っている」ということが全くわかってなかったから。このゲームのことは自分が一番よく知っているとばかり思っていた。ところが、今まで自分ががんばって遊んでいたゲームの全てを叔父さんはもう既に知っている。順序としては逆で、叔父さんがBASICで打ちこんだものだけがポケコン上で動作している。それがつまりプログラミングだ。プログラミングすげえ。

今にして思えば、あの時の叔父さんの言葉が、プログラミングとゲームの関係の理解の第一歩だったし、僕の中の大きなターニングポイントだったんだろう。この言葉でなんとなく仕組みを理解した僕はプログラミングをはじめた。
最初にやったのは、もぐらたたきゲームで最後に表示されるメッセージを書きかえたり、制限時間を変更することだったかな。その後もいろいろ作ってみたりした。かけ算の筆算を解いてくれるプログラムとかも作った。電卓だとかけ算の計算結果しかわからないけど、計算途中も含んだ筆算全体の形をプリントアウトしてくれるやつ。計算ドリルが大嫌いだったんです。結局数式入力してプリントアウトさせるより自分で解いたほうがはやかったので、ほとんど使わなかったけど。後期(1、2年後だったかもしれない)には結構な時間かけて入門テキストにのってた迷路探索ゲームの概要をなんとなーく理解した。2次元配列という概念はここらへんで学んだはず。

そんな感じで僕の中でのポケコンの時代は終了。次にプログラマブルなコンピュータと再会するのは、中学の友達の家にあったMSXだったわけだけど、これはまた別の機会に書くかも書かないかも。

*1:9x9くらいのフィールドを表現するマトリックス

*2:ちょっと後になってパソコンの入門漫画を読んだ時に、電源切ると全部消えちゃうので注意とか書いてあって驚いた記憶がある