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

No Bugs, No Life

読んだ本や、プログラミング、システム開発等のねたを中心に。文章を書く練習なので少し硬派に書くつもりだけど、どうなることやら。

BOOK:プログラミングの宝箱 アルゴリズムとデータ構造

BOOK

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)

プログラミングの宝箱 アルゴリズムとデータ構造 (C magazine)


読了。結論から言うと、良本だと思う。

自分自身はプログラミングをほぼ独学でやってきていたので、こういった基礎的な内容がきちんと理解できていないことに幾許かの劣等感を持っていたんだけど、何らかのスタートラインには立てたのかな?
...とか書いてみたが、実際には動的計画法とかはたぶん全然理解できていない(笑)。
やはり、少なくとも自分の場合は、実際にコードを書かなくては身につかないな。

とはいえ、練習のためのコード書きはそれほどしたい訳ではないので、解きたいと感じる具体的な課題を見つけることがまずは必要。
加えて、rubyみたいに痒いところに手が届いてしまう言語*1ではなく、もう少しプリミティブな言語を常用するようにならなくては...。
やはりCあたりに食指を伸ばさなくては駄目か?うーん、、、。

自分自身のことばかり書いてしまったが、本の感想も少々。
データ構造とアルゴリズムの本と銘打っていることにウソ偽りなく、そういった基礎的な内容を理解したい(自分のような)初心者向けにはとても判りやすい本だと思う。
解説も丁寧に書かれているし、解説だけ読んでもなんとなく理解できるところが多いとは思うけど、書かれていることを本当に理解しようと思うと、最低でもCのコード*2を読み解くことは必要。

あと、基本的なこと(例えば、ツリー構造の基本的なつくりとか)に焦点をあててくれているんだけど、AVL木とかB-treeとか一寸高度なこと*3にも触れてくれているので、初学者から一寸だけ背伸びさせてくれる、バランスの良い本だと思う。

今時の高級言語を使った開発ではあまり意識しないことかもしれないけど、コードを書くことを仕事にしてるなら押さえておいたほうが良いんじゃないかな?って自省込みで思う。

*1:例えば、Arrayとかのクラスでリスト構造とか意識しなくても、普通にリストとして扱えるとか、pop/push/shift/unshiftとかが標準で使えるので、データ構造とかをあまり意識しなくても良いんだよね。それが良いところだと思っているけど。

*2:Java版も章末に書かれているけど、この本の趣旨を考えると当然ながらJavaっぽくない書き方になっている。

*3:もしかしたら基本的なことなのか?でも、自分には高度なのです。