Amazon.co.jp
情報系の勉強をしたことのある人ならば、誰しもプログラムにおけるアルゴリズムの概念に触れたことがあるだろう。同じ動作をするプログラムでもエレガントなアルゴリズムを持つものとそうでないものの間には実行時間や堅牢性、リソースの利用量などにおいて大きな隔たりがあり、時には劇的なほどパフォーマンスの差があることも珍しくはない。一方でそのようなアルゴリズムを創出することがいかに難しいかも周知のことである。そのため現在では納期や効率に重点をおいたプログラミングが優先されることが多いが、単純で美しいプログラムを書くことは何より重要なことである。
本書は著者を含めたプログラマーたちが扱った問題をベースに、エレガントなプログラムを書く際のさまざまなアドバイスや手法について解説したものである。大学でのアルゴリズム講義に登場してくる探索やソート、データ構造といった内容に触れており、現実的な題材の下に要求の定義、リソースの活用の仕方、動作する環境などのさまざまな側面からどのようにアルゴリズムを組むべきかといった、プログラムを組む上での原理原則を学べるように構成されている。
このように題材となっている内容は決して特殊ではなく、プログラムを組んだ経験のある人ならば必ず触れたことのあるレベルなので、高級言語でのプログラムが書ける人ならば誰でも理解できる内容になっている。随所に登場する設問や読書案内も読者が学習する上で役に立つだろう。
数理的な解析に重点を置く大学でのアルゴリズム講義の内容は実際のプログラミングに生かしにくいが、本書では応用や実際のコード化といった面に重点が置かれて説明がされているので実務上も大いに役立つ。自分のプログラミングを原則的、一般的な見地からよりよいものにしていくために必ず役立つ本だ。(斎藤牧人)
「プログラミング」と言う作業を見つめなおすのに最適。「設計する」と言う概念がよく分からない初級プログラマにも
100.0% (10 / 10)
[No.10] posted by コモヒコ
昨今のソフトウェア開発においては大抵がRDBMSベースのもので開発ツールも整っており、
アルゴリズムや計算量、メモリ使用量およびそれらの結果としてのパフォーマンスなどを
真剣に考えないと全く仕事にならないケースと言うのはあまり無いと思われ、それはそれで
幸せな時代とも言える。
本書はそんな「幸せな時代」に逆行する形となるが、上記で述べた内容(アルゴリズム、
計算量、メモリ使用量、パフォーマンス)をメインテーマとしており、それぞれ
1)提示された問題の解法を著者の視点で説明
2)ソースコードとして具現化
3)ソースコードについて更なる考察
4)同じテーマでの練習問題の提示
と言うスタイルで記されている。
特筆すべきなのは問題を解くにあたって筆者が最終的なソースコードにたどり着くまでの
「思考」(いわゆる設計作業)が文章や擬似コードや図表で表現されている事である。
他のアルゴリズム関連の書籍では大抵いきなり完成形のコードが出てきてそれらを説明して
終わりと言うパターンが多く、それではただの丸暗記であり、初級プログラマにとって
本当の意味でのトレーニングにはならないと思う。
個人的な見解だが特に初級プログラマのステップアップの壁に一つには「設計と言う概念の
理解」が挙げられると思っており、本書はそんな概念を掴みきれていない初級プログラマにとって
あぁ、プログラマの頭の中ってこんな風に試行錯誤しながらコードを紡ぎだすんだ!
と言う感覚が味わってもらえるような造りとなっており、非常に好感が持てる。
練習問題が結構多いので勉強会のネタにも使えそうである。
理解しながら読み進めるのは意外と大変かもしれないが読み終えた時にあなたは
一皮むけたプログラマになっているはずである。
納得!アルゴリズムは重要
73.3% (11 / 15)
[No.9] posted by 春峰
「珠玉」ってなんて読むんだろう?興味を持ち、「本質を見抜く」というサブタイトルに惹かれました。プログラマーならば、アルゴリズムが重要であることは誰もが知っている、そしていくつかのアルゴリズムを知っていることだと思います。しかし本書を読むと、なぜアルゴリズムが重要なのか?どうすれば高速化できるのか?わかりやすくなるのか?メモリを減らせるのか?といった疑問が解き明かされていくのです。ページをめくる毎に”納得!”させられます。今までの漠然とした理解ではなく、本質を見抜いた理解に達すると、視界が開け非常に気持ちがいいものです。
だまされたと思って、一読ください。決して損はしません!!
プログラマなら読むべき本
76.5% (13 / 17)
[No.8] posted by 李牧
今までいろいろなアルゴリズムの本を見てきましたが、
ほとんどが理論的であり、眠気を誘うものばかりでした。
この本は、アルゴリズムが何であるか?データ構造とは?を
根本から解説しているのですが、プログラマであれば、
非常に興味をそそられる内容になっています。
サンプルプログラム等は、CやC++で書かれていますが、
他の言語しか知らなくても十分理解できるレベルです。
参考本情報が豊富にありますし、少しずつ読んで見ようと思います。
アルゴリズムって何?
93.1% (27 / 29)
[No.7]
今まで、アルゴリズム関係の本をいろいろと読んできた。しかし、この本は何なんだろう。自分ではベストだと思っていたアルゴリズムが、かなりの確率で否定される。
「これ以上は無理かな?」と思っていた巨匠アルゴリズム+自己流アルゴリズムが、それ以上の高効率で処理されている。あるいは、「出来ないよ、そんなこと!」を「可能」にしている。まさに、「思い込み」は禁物だということを改めて感じさせてくれる、アルゴリズムにこだわる人には、まさに「目のウロコが落ちる」一冊。「速い」と「メモリを食う」は相反しないことに気づかされる。
近年のコンピュータの高速化により、アルゴリズムの効率が無視されがちな企業プログラマには是非とも読んでいただきたい一冊。
パズル的な面もあるので、アルゴリズムとパズルが好きな方は是非とも手に入れるべし!
視点が変わる本です
83.9% (26 / 31)
[No.6] posted by takamasasuzuki
この本は、プログラミング言語を学ぶという本ではなく、どのようにしてアプローチをしていくかという本です。たとえば、ある著名人は、よいプログラマーとは、机上でまず詳細設計を完璧にするものだといっていましたが、まさにその通りのことが書いてあります。
いきなりプログラムを書くのではなく、色々なアプローチからプログラムの骨格を作り上げていくことが出来る一冊です。
中堅プログラマーの方が、上級プログラマーになるためには必須の本だと思います。私のバイブルでもあります。
自信をなくしそう…
53.3% (16 / 30)
[No.5] posted by t-doi
内容は、古典的なプログラムの香りがしますが、この本が伝えようとしていることは、いつの時代のプログラマにも必要な感覚?(意識)だと思います。
しかし、そろそろプログラマとしても一人前になったかな?と思っている人が読むと、自信喪失するおそれがあるので注意が必要です。:-P
"知的Programing"入門に最適です
71.4% (20 / 28)
[No.4] posted by dynamis
最高です。濃密です。凄く面白いです。笑ったり驚いたり唸ったり…(^^;
Programmerに必要とされる基本姿勢・基礎教養を学ばされます。小手先の対処法や、用意されたものを使ってなんとなく…ではなく、本当に美しいProgramingがどういうものであるかを教えてくれます。
私自身は初心者で、正直"敷居が高かったか(T T)"と思いもしましたが、あまりの面白さに、普段使わない言語についてもいろいろ調べながら読んだくらいです。
もう少しレベルが上がった時にまた読んで、また興奮するつもりです。(^^;
いつでも師匠は必要だ!
82.5% (33 / 40)
[No.3]
コンピュータ・プログラムに手を初めて20年近くなる。最初の2,3年は先輩が色々手解きをしてくれたのだが、答えられない内容にまで掘り下げて質問すると別の仕事を与えられたものだった。4,5年で自立すると立場が逆転した。過去に苦い経験をもつ私としては、常に最新の情報や考え方、パラダイムの転換といった、この職に不可欠な知識(知恵)を探求し後輩達に伝授していったつもりである。10年も過ぎるとリッパなシニア・プログラマ(エンジニア)となる。それまでに獲得した知識を最大限に活用して仕事をこなしていく。が、ここ数年マンネリした技術に嫌気がさしていた時に、この1冊に巡り合った。プログラミングに携わる人には座右の書となるであろう。久しぶりに良い師匠に出会えた。わかる人にはわかる本である。初心者には敷居が高いかもしれないが丁寧に解説されているのできっと(数年後でも)役にたつはずである。技術的なことだけでなく、日々精進の仕方まで何気なく書かれている。著者にあってみたくなること請け合いだ。
携帯電話むけプログラマにはお勧め
61.7% (37 / 60)
[No.2] posted by 国語辞典
本書は、「小さいメモリの中でいかにソートを行うか」や「いかに速い検索を行うか」というテクニックがぎっしり詰まっている。残念なのは、著者がアルゴリズム至上主義になってしまっておりコンピュータの内部生産性が低いコードを徹底的にけなしている。「いかにして小さく速いコードを書くか」がテーマになっている。そのためチームで開発する際に重要な「コードの把握性」などを犠牲にしているコードを推奨していたりする。しかし、現代においてはコンピュータのリソースなどよりもプログラマなどの技術者リソースの方が希薄になっている。たとえば、5万円余計にだしたり1年待ったりすれば倍速いコンピュータが手に入れられる可能性はかなり高いが5万円よけいに払ったり1年待っても倍速いコードを書いてくれる技術者が登場する保証は無い。しかし先人の苦労を伝えるという意味では非常に重要な書籍だと思う。ところで、携帯電話向けプログラマなどにはおすすめできる。
全プログラマ必携
75.0% (9 / 12)
[No.1]
古典ともいえる本だが、内容は現在でもそのまま 通じることが書いてある。 すべてのプログラマーに読んでもらいたい本だと思う