読者です 読者をやめる 読者になる 読者になる

はざまブログ

cybozu.com の中の人の個人ブログ

マージソートが書けなくても、プログラマになれる方法

久しぶりに社内でプログラミングのレクチャーをすることにしたのだけれども、準備をしていて自分がどうやってプログラマになったかをふと思い返してしまった。結論を書くとあっさり一言で済んでしまうのだけれども、やはり苦労話(?)もないと面白くないのでぐだぐだ書いてみる。

◆コンピューターとの出会い

小学三年生くらいの頃、読んでいた雑誌(確か子供の科学)にマイコンのことがのっていて、四則演算とか表示とかをする簡単な BASIC を見たのが最初です。ゲームウォッチみたいなものを自分で作れるような夢の機械に見えて、それからしばらくは本屋さんでマイコンの本を立ち読みしてました。

当時は英語も読めなかったので、たとえば PRINT のことをピー・アール・インテジャーと読んでいました。INTはインテジャーと読む、と別のところで覚えて、でも PRINT は読み方が分からなかったので。それでプログラミングを覚えられたかというと全くそんなことはなかったです。立ち読みの紹介記事ではさもありなん。

で、親にパソコンをねだり続けたわけですが、確か六年生のころかな、MSX2を買ってもらいました。正確には親のためのものだったんですが、親がキーボードも打てないのを良いことに事実上自分のものにしたのですけど。それでようやく本物のパソコンを触れるようになり、信長の野望初代は BASIC でかかれていたので、STOP すればソースが読めた)や Wizardry で遊びつつ、マシン語(当時はOS)も覚えようとしたのですが。。

全然だめでした。いや、Z80は読み書きできるようになったんですが、I/Oや割り込みの仕方を調べられなくて、面白くもなんともなかったというか。あの当時他の人はどうやってそういう仕様を学んでいたのか、いまだに不思議に思っていたりします。

◆コンピューターとの別れ

で、ゲーム専用機と化した MSX2 で毎日遊んでいたら、中学2年生の頃に、親にパソコン捨てられました(笑)。その後はコンピューターに触る機会なかったのですが、コンピューターを触る仕事に就くという点だけは譲りませんでした。親は医者にさせたかったようですが、頑として拒否した結果、医者でなければ東京大学に行けという妥協案を出されました。

第一希望は1年目からコンピューターを触れる(と思っていた。入らなかったので実際は不明)東工大の5類だったのですが、東大にはコンピューターを触れそうな専攻がないと思っていたので嫌でした。でも親(のお金)には逆らえず、しぶしぶ調べたところ、理学部情報科学科というところでは触れそうと分かりました。

入学後2年は専門ではなく教養、というのがまた嫌なところだったのですが。

◆再会と挫折

無事入学後も、何とかしてコンピューターに触りたかった私は、駒場の授業で「計算機入門」というコマをとることにしました。でもその授業は座学で、実際のコンピューターにはさらわず、ソートなどのアルゴリズムを紹介するものでした。まあでも、このとき初めて、プログラミングというのはマシン語を並べて I/O するだけじゃないんだ、と知ったわけですが。

その授業で知ったマージソートというアルゴリズムが簡単そうだったので、また別の授業(プログラミング入門だったかな?)で Pascal という言語を習ったときに、試しに実装しようとしてみました。・・・実装できませんでした。

今となってはなぜ当時の自分がこんな簡単なアルゴリズムを実装できなかったか分かりません。でも、事実として、作ったプログラムは動かなかったのです。再帰という概念やデータ構造といった基本的な道具立てがなければ、ごくシンプルなプログラムであっても難しい、のでしょう。

さらに、なぜ動かないのか教えてもらおうと思って計算機センターの相談員の人に見てもらいました。・・・教えてもらえませんでした。今となっては、読むに堪えない代物だったのだろうと思います。が、当時はマージソートというのはとても難しいものなのだな、と理解?したのでした。

とりあえず今日はここまで。