プログラマーの財産
2008年01月25日(金)
プログラマーの財産
実は僕、記憶力にあまり自信がありません。
小学生の頃の漢字テストは、いつも目も当てられないような点数だったし、中学、高校の頃は英語の単語が覚えられず、毎回毎回テストで苦労していました。
つまるところ、テスト前に一夜漬けで一時的に暗記し、学生時代を乗り切ってきました。
そしてテストが終わると、せっかく覚えた漢字や単語を忘れて、普段の僕に戻るんです。
そんな僕でもプログラムは大得意です。
何故なら、プログラムはカンニングOKだからです!
僕は英語の単語を覚えるのは大の苦手ですが、僕が組むプログラムのソースでは殆どスペルミスがありません。何故なら英単語をカンニングしながら組んでいるからです(笑)
正しい言い方をすると、変数や関数の名前を決めるときには、いつもインターネット等で、英単語を調べながら決めているんです。
パソコンのハードディスクの容量に限界があるように、人の記憶力にも限界があります。
更に言うと、人の記憶というのは非常にいい加減なものです。
紙やパソコンのテキストファイルにメモった内容は、書き換えなければ変わりません。
でも、人の頭の中にメモった内容は、勝手に書き換わったり、消えてしまったりします。
それが複雑だったり記憶内容が多かったりするなら尚更です。
この世の中に無数にある漢字や英単語を、全て完璧に暗記できるのは、一部の天才とコンピュータのみです。
それと同じで、プログラミングも関数やライブラリが無数にあります。
例えばC/C++だと「MSDNライブラリ」を見たり「DirectX」等のヘルプを読んだりすれば、どれだけ多くの機能があるのか身に染みてわかると思われます。
でも、別にそれらの機能を全て覚える必要はありません。
必要な機能を使いたい時に、それらのヘルプを開いて使い方を確認して組めばOKです。
……まぁ、言語のヘルプを読むのも結構、知識が必要ではあるのですけどね(苦笑)
プログラミング初心者に言うべきアドバイスがあります。
それは「プログラムを組むときは参考資料を見ながら組むべし!」です〜
学校のテストじゃないんだから、カンニングしても減点対象にはなりません。
それどころか、キチンと資料を調べながら組むことにより、初心者でもそれなりのクオリティのプログラムを組み上げることが出来るでしょう。
さて、前置きはここまでにしておいて、本題に入ります。
記憶力に自信のない僕ですが、僕は「一度でも組んだことのあるプログラム」なら、すぐに思い出してもう一度くみ上げたり、高速化してくみ上げたりすることが可能です。
何故だと思います? ヒントはこれまでの前置きに含まれていますよ!
ちょっと考えてみてくださいね。
……………………
……………………
…………
…………
……
……
では、答えを言いますね。
僕は今まで組んできたプログラムのソースファイルを、全部とっておいてあるからです。
そして、それらのソースファイルが僕にとってカンニングペーパーとなり、一度でも組んだことがあれば、余裕で再度、そのプログラムを組めるというわけです。
ただし、それには「キチンとコメントを付けて組んでいる」条件があります。
人の記憶はいい加減ではありますが不思議なもので、どうしても思い出せなかったことが、ふとしたキッカケで鮮明に思い出せたりするんです。
プログラミングに関しても、一度でも頭をひねって考え、コンパイルして実際に動かしてみたアルゴリズムなら、頭の片隅に保存されるんです。
しかも、キチンとコメントも書いて、しっかりと意味を把握していたのなら、尚更です。
その頭の中の記憶は、そのソースファイルさえとっておけば、別に忘れても構いません。
時間がたって、再度そのプログラムを組まなければならない事があったとき、そのソースファイルを見れば、それが引き金でしっかりと思い出せます。
もし思い出せなくても、そのソースファイルが答えなので、要所要所を書き換えて丸写しでもなんら問題はありません。
自分が組み上げたプログラムのソースファイルなら、どこにどんなアルゴリズムを書いたのか、なんとなく覚えているはずです。
自分が組んだプログラムのソースファイルから掘り起こすのは、他人が組んだソースファイルから掘り起こすより、何倍も楽で簡単です。
プログラマーは一つのアルゴリズムを組むときにのみ、色んな参考資料とにらめっこしてメモ用紙に構築イメージを書いたり頭の中で複雑な計算をすればいいんです。
そうして自分のパソコンのハードディスクなりCD-Rなりに、自分でくみ上げたプログラムのソースファイルを蓄積していき、次回で必要になったら掘り起こせばいいんです。
自分自身で色々なプログラムを組んで、それを蓄積していったプログラマーは、掘り起こせる引き出しが沢山あるため、やたらと仕事が速いです。
それこそプログラマーの財産といえるでしょう。
