2012年6月6日水曜日

アルゴリズムを学ぼう

 『アルゴリズムを学ぼう』が刊行されたと聞いて、早速買ってきたのでした。この本、もともとは雑誌に連載されていたもので、『ASCII.technologies』、それまでは職場で定期購読されていたものを読んでいたのですが、『アルゴリズムを学ぼう』をはじめとする連載、それが魅力的だったものだから、自分でも購読しようかな。そう思ったら震災の影響をうけて雑誌もろともなくなってしまった。ああ、残念だ残念だ。あまりに残念だったので、雑誌全部をPDFにしたの、『ASCII.technologies the DVD Complete』、これ、買いまして、けど、これはあくまでも既刊分が収録されているだけで、期待した『アルゴリズムを学ぼう』、この続きが読めるわけではないのです。当たり前ですね。ええ、だからずっと待っていたんです。単行本として書き下ろされる、そう聞いていたので、待ったんです。

この本、どういうものかといいますと、表紙の惹句、そいつを引いてみればわかりやすいでしょう。

アルゴリズムとその考え方をストーリー仕立てで基礎の基礎からたのしく学んでみよう。

ええ、プログラムを書くにあたって重要になってくるもの、アルゴリズムについて知り、学べる、そうしたところに期待したのですね。

とはいうものの、ああ、難しいわ、めちゃくちゃ難しいわ。とりあえず読み始めの段階で、もうつまづいて先に進めない。理解しながら読むというのがもう困難。この本の登場人物、勉強は滞りがちという伯方涼子、もうほとんど初心者みたいな扱いされる人なんですが、この人が学んでいくのと同じスピードで学んでいけたらいいなあ、みたいに思ってたら、いやいや、無理だから! 最初からぶっちぎりで置いていかれてるから! (a * b) mod m は ((a mod m) * (b mod m)) mod m に等しい、って、ええーっ、そうなの? もうあかん。さらにこれは再帰的に書ける、tを0以上の整数とすると次のことが成り立つ、って、すみません、もう駄目です。わかりません。

これ、まだ第1講「まずは肩慣らしの問題」の内容です。まあ、ここで重要なのは、そうした数学的な考え方ができるかどうかというより、計算量というものがあるということを理解する。効率を高めると比較にならないほどプログラムは速く動くようになる、ということを知ることなんでしょうけど、とりあえずへこたれそうになった、その気持ちは事実です。

私はいろいろプログラムを書いてきたとはいえ、そのほとんどないしはすべては、澤戸ういよりしく力技のゴリ押しでやっつけてきたんです。けど、いやだからこそといった方がいいかな、少しはエレガントに書けるようになりたい。あるいは、今はどうしたらいいか正直よくわからないこと、それら問題を解決できる力を身につけたい、そうした気持ちが常にあるんですね。だから、冒頭でつまづいてるわけにはいかない。つまづいたとしても、それでも進んでいかないとな、そう思っています。まずはわからんなりに読む。それを目標にしたいと思います。それで、Javaで書かれているプログラム例、これを自分の慣れた言語に書き直すなどしながら、リハビリするみたいに学んでいけたらなあと思っています。まあ、思ってるだけじゃどうしようもないので、実際に読む、わかってもわからんでもいいから読む、そうするしかないんですけどね。

思えば、オブジェクト指向ってやつ、あれを理解するのに何年もかかったっけ。というか、理解できてるか自分でもよくわかってないんだけど。そんな風に、数年かけて学ぶ、それくらいの気持ちでいようと、焦らないでいいや、そういうスタンスでいようと思ってます。

引用

  • 川中真耶,杵渕朋彦,椎名俊輔『アルゴリズムを学ぼう』(東京:アスキー・メディアワークス,2012年),表紙。

0 件のコメント: