珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造 |
|
売れ筋ランキング > 珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
昨今のソフトウェア開発においては大抵がRDBMSベースのもので開発ツールも整っており、 アルゴリズムや計算量、メモリ使用量およびそれらの結果としてのパフォーマンスなどを 真剣に考えないと全く仕事にならないケースと言うのはあまり無いと思われ、それはそれで 幸せな時代とも言える。 本書はそんな「幸せな時代」に逆行する形となるが、上記で述べた内容(アルゴリズム、 計算量、メモリ使用量、パフォーマンス)をメインテーマとしており、それぞれ 1)提示された問題の解法を著者の視点で説明 2)ソースコードとして具現化 3)ソースコードについて更なる考察 4)同じテーマでの練習問題の提示 と言うスタイルで記されている。 特筆すべきなのは問題を解くにあたって筆者が最終的なソースコードにたどり着くまでの 「思考」(いわゆる設計作業)が文章や擬似コードや図表で表現されている事である。 他のアルゴリズム関連の書籍では大抵いきなり完成形のコードが出てきてそれらを説明して 終わりと言うパターンが多く、それではただの丸暗記であり、初級プログラマにとって 本当の意味でのトレーニングにはならないと思う。 個人的な見解だが特に初級プログラマのステップアップの壁に一つには「設計と言う概念の 理解」が挙げられると思っており、本書はそんな概念を掴みきれていない初級プログラマにとって あぁ、プログラマの頭の中ってこんな風に試行錯誤しながらコードを紡ぎだすんだ! と言う感覚が味わってもらえるような造りとなっており、非常に好感が持てる。 練習問題が結構多いので勉強会のネタにも使えそうである。 理解しながら読み進めるのは意外と大変かもしれないが読み終えた時にあなたは 一皮むけたプログラマになっているはずである。 「珠玉」ってなんて読むんだろう?興味を持ち、「本質を見抜く」というサブタイトルに惹かれました。プログラマーならば、アルゴリズムが重要であることは誰もが知っている、そしていくつかのアルゴリズムを知っていることだと思います。しかし本書を読むと、なぜアルゴリズムが重要なのか?どうすれば高速化できるのか?わかりやすくなるのか?メモリを減らせるのか?といった疑問が解き明かされていくのです。ページをめくる毎に”納得!”させられます。今までの漠然とした理解ではなく、本質を見抜いた理解に達すると、視界が開け非常に気持ちがいいものです。 だまされたと思って、一読ください。決して損はしません!! 今までいろいろなアルゴリズムの本を見てきましたが、 ほとんどが理論的であり、眠気を誘うものばかりでした。 この本は、アルゴリズムが何であるか?データ構造とは?を 他の言語しか知らなくても十分理解できるレベルです。 参考本情報が豊富にありますし、少しずつ読んで見ようと思います。 今まで、アルゴリズム関係の本をいろいろと読んできた。しかし、この本は何なんだろう。自分ではベストだと思っていたアルゴリズムが、かなりの確率で否定される。 「これ以上は無理かな?」と思っていた巨匠アルゴリズム+自己流アルゴリズムが、それ以上の高効率で処理されている。あるいは、「出来ないよ、そんなこと!」を「可能」にしている。まさに、「思い込み」は禁物だということを改めて感じさせてくれる、アルゴリズムにこだわる人には、まさに「目のウロコが落ちる」一冊。「速い」と「メモリを食う」は相反しないことに気づかされる。 この本は、プログラミング言語を学ぶという本ではなく、どのようにしてアプローチをしていくかという本です。たとえば、ある著名人は、よいプログラマーとは、机上でまず詳細設計を完璧にするものだといっていましたが、まさにその通りのことが書いてあります。 いきなりプログラムを書くのではなく、色々なアプローチからプログラムの骨格を作り上げていくことが出来る一冊です。 情報系の勉強をしたことのある人ならば、誰しもプログラムにおけるアルゴリズムの概念に触れたことがあるだろう。同じ動作をするプログラムでもエレガントなアルゴリズムを持つものとそうでないものの間には実行時間や堅牢性、リソースの利用量などにおいて大きな隔たりがあり、時には劇的なほどパフォーマンスの差があることも珍しくはない。一方でそのようなアルゴリズムを創出することがいかに難しいかも周知のことである。そのため現在では納期や効率に重点をおいたプログラミングが優先されることが多いが、単純で美しいプログラムを書くことは何より重要なことである。 本書は著者を含めたプログラマーたちが扱った問題をベースに、エレガントなプログラムを書く際のさまざまなアドバイスや手法について解説したものである。大学でのアルゴリズム講義に登場してくる探索やソート、データ構造といった内容に触れており、現実的な題材の下に要求の定義、リソースの活用の仕方、動作する環境などのさまざまな側面からどのようにアルゴリズムを組むべきかといった、プログラムを組む上での原理原則を学べるように構成されている。 このように題材となっている内容は決して特殊ではなく、プログラムを組んだ経験のある人ならば必ず触れたことのあるレベルなので、高級言語でのプログラムが書ける人ならば誰でも理解できる内容になっている。随所に登場する設問や読書案内も読者が学習する上で役に立つだろう。 数理的な解析に重点を置く大学でのアルゴリズム講義の内容は実際のプログラミングに生かしにくいが、本書では応用や実際のコード化といった面に重点が置かれて説明がされているので実務上も大いに役立つ。自分のプログラミングを原則的、一般的な見地からよりよいものにしていくために必ず役立つ本だ。(斎藤牧人) 珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造を楽天で検索 |