人生を書き換える者すらいた。人生を書き換える者すらいた。Part2前回の続きを書こうと思いつつまた時間が空いてしまいました。相変わらず仕事は忙しく、明日から上海出張だし、ドタバタしてます。日本での発売は大学1年の秋だった。これにあわせてPCとあわせて新調するため、家庭教師やらゲームセンター店員やらのアルバイトで金をためて買った。衝撃だったのは、「複数のソフトウェアが同時に走る」「変なメモリにアクセスしても、そのプロセスだけが死んでOSは死なない」というところだった。当時、自分の知識はほぼ8086アセンブラとBASICだけで、プロセッサのプロテクトモードの存在を知らなかったのである。素朴に、「複数のソフトウェアが同じアドレスを使ったらどうすんの?」と思っていたのである。勝手な思い込みで、Windowsはある種のエミュレータなんだな、だからプロセッサが100MHzもあるくせにこんなにモッサリしてるんだな、と結論づけていた。それだけ凄いことをしてるならしょっちゅうWindowsがハングアップするのも当然だな、と思っていた(これも勝手な思い込み)そういえばこのころも、PCのリセットボタンを一日に何回も押すのは常識でしたねえ。今では考えられないが。Basicで適当なゲームを作ったりしていたが、転機は大学2年の秋。それまで目標だった物理学者の道をあきらめ、ソフトウェアの世界に進むことにした。この決断の背景はいろいろあって書くと長くなるが、小さくない役割を果たしたのが「闘うプログラマー」。この本を読んで、自分にはベンチャースピリッツもけっこうあるらしい、と思ったのである。そこで、大学は1年間休んで(実際には、必修1科目だけを意図的に落としての自主留年)、ソフトウェアの勉強と実務を猛烈にやった。アルバイトで入ったソフトウェア会社が当時流行していた「プリクラ」のソフトウェアを担当しており、僕はいろんなバージョンのビルドと動作チェックをやってました。このバイトが週3~4日で、この稼ぎで大量に本を買って勉強の日々でした。(この過程でプロテクトモードの存在や、現代的なOSのアーキテクチャを知り、Windows95の謎が解ける)【大学に戻る】その後、自主留年後に東大情報科学科に入り直し、さすがに時間がなくなってきたのでアルバイトは辞めることになる。情報科学科では、つまらない授業も多かったが、いくつか面白い経験もした。最大の収穫は、関数型言語を知ったことだ。Scheme、ML、Prologの演習ではプログラミングにはいろんな発想法があるんだな、と感動した。あと、5~6人でチームを組み、独自に設計したプロセッサの上でSchemeで書かれたレイトレーシングのコードを走らせる、という課題を半年かけて達成するというのも面白かった。僕はこのうちコンパイラ担当で、コンパイラの専門書(ドラゴンブック)を読んで実際に実装する、というのをやった。当時身に着けた知識は地道に今の仕事にも役立っているのが面白い。結果的には、大学4年間でやった内容の7割はムダだったと思う。残りの3割は本当に価値のある知識と経験になったし、それは大学に行く以外の手段ではおそらく得られないものなので、トータルすれば有意義だったと思う。