トップ «前の日記(2013-05-05) 最新 次の日記(2013-05-07)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2013-05-06

_ すごい本をもらった

アスキーのすずきさんから、角さんと高木さんが訳したプログラマの考え方がおもしろいほど身につく本をもらったので、連休最後だし、茶色(アスキーのシリーズは、茶-緑-青と難易度が上がる)だし、読んでみるかとぱらぱら読み始めて、びびった。

プログラマの考え方がおもしろいほど身につく本 問題解決能力を鍛えよう!(V.Anton Spraul/角征典/高木正弘)

この本は、実に良い点を突いている。というか、おれは突かれてびびったのだった。

副題は「問題解決能力を鍛えよう!」となっているが、この本の主題は、ある問題をプログラムで解決すべきときに、どのようにそれをプログラムとして考える(設計する)かの方法を説明したものだ。

一番最初の問題は、「狐とガチョウとトウモロコシ」、次にスライドパズル(15パズル)、数独、Quarrasiロック(回転錠)と続いて、どのように解くかを解説する。まだプログラムとはならない。

ここで一般的な解法のパターンを挙げて、

・問題の言いかえ (一般化=抽象化のためのステップだ)

・問題の分割

・簡単なことから始める

・問題を簡略化する

・類似点を探す

・実験する

・落ち着いて

と指針を示す。

これはなんか、すごくうまい方法に見える。少なくとも、「プログラミングの考え方=作成方法」としては、いきなりHello Worldを出力するより良い。

で、パズルの解き方へ進む。ここでは出力、入力、状態管理を扱い(もちろんパズルの例で)C++の(おさらいという名目の)チュートリアルとなる。

使っている言語はC++だが、STLのコレクション利用レベルなので、常識の範囲で誰でも(この本を読もうとする人なら)問題なく読めると思う。

そして3章以降が本題で、配列、ポインタ(と動的なデータ生成)、クラス、再帰(どうでも良いが、「再帰大作戦」という節題が角さんっぽいが、見たことあるのだろうか。ジャケットを出せ)、コード再利用(ちょっと毛色が変わったように見えるが、プログラムの実装設計戦略という意味ではつながっている)、で、ずるをする方法などの教えの章でおしまい。

(言語仕様の知識レベルで解ける)FizzBuzzは余裕でも、某社の採用試験は迷路の最短経路探索プログラムみたいなのになると、とたんに実装の前にアルゴリズムで手が止まってしまうおれのような人間には、良い本だと思う。(いわゆる文系プログラマとカテゴライズされる人は、とにかく読んでおくと良いと思う)

_

今、書影を見て気づいたが、表紙がかわいいので買うつもりになったのに、なんとなく忘れていたオライリーの本じゃん。

Think Like a Programmer: An Introduction to Creative Problem Solving(V. Anton Spraul)

本日のツッコミ(全3件) [ツッコミを入れる]
_ 鈴木嘉平 (2013-05-06 18:10)

書評、どうもありがとうございます。<br>オライリーではなくて、No Starch Pressの本ですね。

_ arton (2013-05-06 19:17)

No Starch Pressって、オライリーのブランドだと思ってました(というのは、FBで流しているオライリーの広告に入ってたからですけど)が、違うんですね。

_ arton (2013-05-06 19:19)

というか、この本の版権取得と翻訳までの速度(上の広告の時期から考えるに)、ありがとうございます。日本語で軽く読めるのはやはりありがたいですね。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|

ジェズイットを見習え