インターネットデパート - 取扱い商品数1000万点以上の通販サイト。送料無料商品も多数あります。

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

価格: ¥9,612
カテゴリ: 単行本
ブランド: ピアソンエデュケーション
Amazon.co.jpで確認
  情報系の勉強をしたことのある人ならば、誰しもプログラムにおけるアルゴリズムの概念に触れたことがあるだろう。同じ動作をするプログラムでもエレガントなアルゴリズムを持つものとそうでないものの間には実行時間や堅牢性、リソースの利用量などにおいて大きな隔たりがあり、時には劇的なほどパフォーマンスの差があることも珍しくはない。一方でそのようなアルゴリズムを創出することがいかに難しいかも周知のことである。そのため現在では納期や効率に重点をおいたプログラミングが優先されることが多いが、単純で美しいプログラムを書くことは何より重要なことである。

  本書は著者を含めたプログラマーたちが扱った問題をベースに、エレガントなプログラムを書く際のさまざまなアドバイスや手法について解説したものである。大学でのアルゴリズム講義に登場してくる探索やソート、データ構造といった内容に触れており、現実的な題材の下に要求の定義、リソースの活用の仕方、動作する環境などのさまざまな側面からどのようにアルゴリズムを組むべきかといった、プログラムを組む上での原理原則を学べるように構成されている。

  このように題材となっている内容は決して特殊ではなく、プログラムを組んだ経験のある人ならば必ず触れたことのあるレベルなので、高級言語でのプログラムが書ける人ならば誰でも理解できる内容になっている。随所に登場する設問や読書案内も読者が学習する上で役に立つだろう。

  数理的な解析に重点を置く大学でのアルゴリズム講義の内容は実際のプログラミングに生かしにくいが、本書では応用や実際のコード化といった面に重点が置かれて説明がされているので実務上も大いに役立つ。自分のプログラミングを原則的、一般的な見地からよりよいものにしていくために必ず役立つ本だ。(斎藤牧人)

アルゴリズムについて勉強したい人には必読の本です ★★★★★
本のタイトルに「珠玉の」と入っているので、ユニークでインパクトがあるタイトルだというのが第一印象でした。
「珠玉の」がタイトルに付いている理由は序文に書いてあるので、是非読んでください。なかなか興味深いです。

アルゴリズムはプログラミングにとって非常に重要な要素であるという事はプログラマーなら誰でも認識していますが、この本を読むと、改めてアルゴリズムの大切さを再認識させられます。
アルゴリズムが変われば、実行速度は劇的に変わります。また、正しいアルゴリズムを選択すれば、開発工数の節約にもなります。
私は今までメモリ使用量と実行速度は相反するものだと思っていたのですが、メモリ使用量の節約と実行速度を両方同時に実現できるということ、この本で初めて気付きました。
この本で紹介されているソートやサーチなどのアルゴリズムは、(私の)実際の実務で使う事はほとんどありませんが、それでも知っていて損はありません。

この本のお勧めできる点は、他の方も書いているように問題の答えだけ解説するのではなく、その答えに到達するまでの過程について解説してある点です。
また、ビンやヒープといったデータ構造があることを、初めて知りました。

カーニハン著のプログラミング作法という本で紹介されているマルコフ連鎖の話が、この本でも登場します。マルコフ連鎖の意図や意義はプログラミング作法ではいまいち分からなかったのですが、
この本を読んで、やっと理解できました。複数の本を組み合わせて読むべきであるという(私なりの)教訓は、ここでも生きていました。
プログラマーの端くれなら是非読んでおくべきである本です。
楽しく読めるプログラミングの本 ★★★★★
 プログラムの設計について、問題の定義、アルゴリズムの選択とデータの表現方法、ま
たチューニングなどについての大変面白い本。なぜ自分の書くプログラムがいつも酷く複
雑で、可読性が低く、メモリを食い、実行速度が遅いのかとなやんでいる人に向けられた
本だと感じました。適切なアルゴリズムを用いて、複雑な問題を単純なコードでエレガン
トに解くのは楽しいものです。
 全体はコラム単位で構成され、コラムは本文と、得られた教訓による「原則」、そして
練習問題と読書案内からなります。読書案内は、特定のトピックに対してより深く内容を
理解したいプログラマに向けた書籍の紹介です。
 この本を通読することで、読者はアルゴリズムの計算量に対する経済感覚を身につける
、あるいは少なくとも意識できるようになるでしょう。現実の問題に対して、自分がどの
ようなデータ構造とアルゴリズムを用いれば十分な速度で実行できるだろいうか、という
事が判断できるようになります。
 著者は本でしばしばライブラリ関数やC++のSTLを使用するよう主張します。それらは
多くの問題に十分に高速で、にもかかわらずそれを用いないのはプログラムを不必要に複
雑にしている、と考えています。つまり、何が何でも特定の問題に対してカリカリにチュ
ーンされたアルゴリズムを用いよなどという主張をした本ではありません。
「プログラミング」と言う作業を見つめなおすのに最適。「設計する」と言う概念がよく分からない初級プログラマにも ★★★★★
昨今のソフトウェア開発においては大抵がRDBMSベースのもので開発ツールも整っており、
アルゴリズムや計算量、メモリ使用量およびそれらの結果としてのパフォーマンスなどを
真剣に考えないと全く仕事にならないケースと言うのはあまり無いと思われ、それはそれで
幸せな時代とも言える。

本書はそんな「幸せな時代」に逆行する形となるが、上記で述べた内容(アルゴリズム、
計算量、メモリ使用量、パフォーマンス)をメインテーマとしており、それぞれ

1)提示された問題の解法を著者の視点で説明
2)ソースコードとして具現化
3)ソースコードについて更なる考察
4)同じテーマでの練習問題の提示

と言うスタイルで記されている。
特筆すべきなのは問題を解くにあたって筆者が最終的なソースコードにたどり着くまでの
「思考」(いわゆる設計作業)が文章や擬似コードや図表で表現されている事である。
他のアルゴリズム関連の書籍では大抵いきなり完成形のコードが出てきてそれらを説明して
終わりと言うパターンが多く、それではただの丸暗記であり、初級プログラマにとって
本当の意味でのトレーニングにはならないと思う。

個人的な見解だが特に初級プログラマのステップアップの壁に一つには「設計と言う概念の
理解」が挙げられると思っており、本書はそんな概念を掴みきれていない初級プログラマにとって

あぁ、プログラマの頭の中ってこんな風に試行錯誤しながらコードを紡ぎだすんだ!

と言う感覚が味わってもらえるような造りとなっており、非常に好感が持てる。
練習問題が結構多いので勉強会のネタにも使えそうである。
理解しながら読み進めるのは意外と大変かもしれないが読み終えた時にあなたは
一皮むけたプログラマになっているはずである。
納得!アルゴリズムは重要 ★★★★★
「珠玉」ってなんて読むんだろう?興味を持ち、「本質を見抜く」というサブタイトルに惹かれました。プログラマーならば、アルゴリズムが重要であることは誰もが知っている、そしていくつかのアルゴリズムを知っていることだと思います。しかし本書を読むと、なぜアルゴリズムが重要なのか?どうすれば高速化できるのか?わかりやすくなるのか?メモリを減らせるのか?といった疑問が解き明かされていくのです。ページをめくる毎に”納得!”させられます。今までの漠然とした理解ではなく、本質を見抜いた理解に達すると、視界が開け非常に気持ちがいいものです。
だまされたと思って、一読ください。決して損はしません!!
プログラマなら読むべき本 ★★★★★
今までいろいろなアルゴリズムの本を見てきましたが、
ほとんどが理論的であり、眠気を誘うものばかりでした。

この本は、アルゴリズムが何であるか?データ構造とは?を
根本から解説しているのですが、プログラマであれば、
非常に興味をそそられる内容になっています。
サンプルプログラム等は、CやC++で書かれていますが、

他の言語しか知らなくても十分理解できるレベルです。

参考本情報が豊富にありますし、少しずつ読んで見ようと思います。