アルゴリズムに始まり,アルゴリズムに終わる
「アルゴリズムの勉強のしかた」http://nowokay.hatenablog.com/entry/20110922/1316676007
これを見て強烈な違和感を覚えたので,自分の意見も書いておくことにする.*1
アルゴリズムはとても重要だ.これは間違いない.プログラミングを志す者ならば,必ず学んでおかなければならない基礎知識の一つだ.DBやJavaを使ってるのに「ハッシュも平衡木もB木も知りません」なんて開発者がいるのは,日本IT業界の恥だと思ってる.
89. Use the Right Algorithm and Data Structure
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (350件) を見る
"Programmers should not reinvent the wheel, and should use existing libraries where possible. But to be able to avoid problems like the bank's they should also be educated about algorithms and how they scale."
"Many say reuse in programming is paramount. Above all, however, programmers should know when, what, and how to reuse. To do that, they should know knowledge of the problem domain and of algorithms and data structures."
"So, read some good books - and make sure you understand them."
そしてアルゴリズムの学習には終わりが無い.それはまるで英語を学習する際の英単語に似ている.小学校や中学校で最初に英語を学ぶ時,それこそthisやbeのレベルの英単語を学ばないものはまずいない.そしてそこそこ英語が上達した人たちも,語彙を増やすための努力は必要だ.その学習には終わりが無いらしい.
今,もしプログラマ志望の若い人に相談されたら,
- 教科書:アルゴリズムイントロダクション三部作 OR 岩波講座の「アルゴリズムとデータ構造」のどちらか*2.O'Reillyの「入門 データ構造とアルゴリズム」も要検討.
- 参考書:オライリーのアルゴリズムクイックリファレンス
辺りを勧めるかな.*3
新しくてお勧めの本が,こんなに少ないとは思わなかった.コンピュータ書籍のコーナーにも,アルゴリズム本が数えるほどしかなかったりする.昔「アルゴリズムイントロダクション」もかなり苦戦していると聞いたことがあるし,ひょっとしたら硬派のコンピュータサイエンスの専門書って,和書だと最近はほとんど売れなくなったりするのかな?日本のIT業界も末期だなあ.
入門・基礎
英語でいうといわゆる「単語帳」な感じ.まず最初にこれを覚えなきゃ始まらない.
- 作者: 鈴木陽一
- 出版社/メーカー: アイシーピー
- 発売日: 2000/03/15
- メディア: 単行本(ソフトカバー)
- 購入: 197人 クリック: 3,012回
- この商品を含むブログ (723件) を見る
- 作者: 清水かつぞー
- 出版社/メーカー: (株)南雲堂
- 発売日: 2011/04/01
- メディア: 単行本
- 購入: 2人 クリック: 3回
- この商品を含むブログ (7件) を見る
- 作者: ジーニアス英単語・英熟語編集委員会,Lisa G.Bond
- 出版社/メーカー: 大修館書店
- 発売日: 2003/02/01
- メディア: 新書
- クリック: 2回
- この商品を含むブログ (14件) を見る
普通に「アルゴリズムを勉強する」と書いた場合は,こちらの入門の方を指すと思う.プログラマならば基本的なアルゴリズムを覚えると共に,アルゴリズムの考え方,アルゴリズムを自分のアプリケーションへの適用方法や新しいアルゴリズムを創るスキルを身につける必要がある.
以下のようなアルゴリズムの入門書は最低でも一冊は目を通して,幾つかの例題について実装する練習をしておくべき.英単語帳と同じで,マトモな本ならば基本アルゴリズムについてはそれほど大差は無い.他の分野ほど陳腐化も激しくないので,10〜20年以上前の本でもまあまあ使える.*4 *5そしてまともな書籍なら2冊以上は必ずしも必要ない.(持っていても良い.)
このような本で紹介されているアルゴリズムとデータ構造はプログラミングの基本中の基本なので,
- もちろん名前は全部知っている.それがどんなアルゴリズムかも説明できる.
- うち幾つか(5〜8割くらい)については実際に実装した経験がある.
- その他についても実装する必要があれば,いつでも簡単に実装できる自信がある.
- そのアルゴリズムの特性,長所と短所,ボトルネック,実装上の注意点,効率化テクニックについて知っている.その理由についても理解している.
- 計算量やメモリ消費,ディスクアクセスのオーダーを(暗記するのではなく)見積もることができる.*6
- 必要に応じて自分でそのアルゴリズムをカスタマイズしたり,改良したりできる.またその影響や変更後の計算量を見積もることができる.*7
- そこで書かれている擬似コードやサンプルを,自分が必要とする言語に移植し,必要に応じて型安全性や例外処理等を追加できる.*8 特にこれは次に示すサンプルコード集の方で重要性が増す.
- ビッグO記法,多項式オーダー,疑似乱数,丸め誤差,貪欲(greedy)アルゴリズム,怠け者(lazy)な処理,アトミック(atomic)な処理,NP完全,巡回セールスマン問題,等々のキーワードも,一通り理解しておくこと.(そんなに多くない.むしろ名前が付いてない部分に対する理解も重要.)
くらいになっておくべきだろう.
「アルゴリズムとデータ構造」みたいなタイトルが付いているのは入門書の場合が多い.単語帳ほどではないけれど,アルゴリズム本もプログラミング関係の書籍としてはかなり多い方だ.単語集と同様に,各人それぞれに好みがあるだろうから,自分の目で確認して自己責任で入手すること.
入門書・教科書
注:その後,第三版が出版された.
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,Thomas H. Cormen,Clifford Stein,Ronald L. Rivest,Charles E. Leiserson,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2007/03/01
- メディア: 単行本
- 購入: 13人 クリック: 378回
- この商品を含むブログ (59件) を見る
アルゴリズムの設計と解析手法 (アルゴリズムイントロダクション)
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,Thomas H. Cormen,Clifford Stein,Ronald L. Rivest,Charles E. Leiserson,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2007/03/01
- メディア: 単行本
- 購入: 10人 クリック: 169回
- この商品を含むブログ (48件) を見る
- 作者: T.コルメン,R.リベスト,C.ライザーソン,Thomas H. Cormen,Ronald L. Rivest,Charles E. Leiserson,浅野哲夫,梅尾博司,和田幸一,岩野和生,山下雅史
- 出版社/メーカー: 近代科学社
- 発売日: 1995/12
- メディア: 単行本
- 購入: 1人 クリック: 37回
- この商品を含むブログ (28件) を見る
Introduction to Algorithms (MIT Press)
- 作者: Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein
- 出版社/メーカー: The MIT Press
- 発売日: 2009/07/31
- メディア: ペーパーバック
- 購入: 5人 クリック: 90回
- この商品を含むブログ (19件) を見る
アルゴリズム本で定番の書籍.といっても自分が最初にプログラミングを勉強した頃には,まだこの本が存在しておらず,この本が出た頃には基本はマスターした後だったので,この本を真面目に読んだことは無い.
追記:3版の和訳も一巻が出版された.「入門書」というよりは「教科書」なので難易度は高め.基礎からミッチリ勉強したい人なら挑戦する価値はあるが,「動けば良いじゃん」ななんちゃってプログラマーだと確実に挫折する.
アルゴリズムイントロダクション 第3版 第1巻: 基礎・ソート・データ構造・数学 (世界標準MIT教科書)
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2012/08/02
- メディア: 単行本
- 購入: 1人 クリック: 16回
- この商品を含むブログ (21件) を見る
アルゴリズムイントロダクション 第3版 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム (世界標準MIT教科書)
- 作者: T.コルメン,R.リベスト,C.シュタイン,C.ライザーソン,浅野哲夫,岩野和生,梅尾博司,山下雅史,和田幸一
- 出版社/メーカー: 近代科学社
- 発売日: 2012/12/26
- メディア: 単行本
- 購入: 1人 クリック: 4回
- この商品を含むブログ (18件) を見る
さらに追記.O'Reillyより以下の書籍も出る予定.内容は要確認だが,有力候補の一つ.
- 作者: Narasimha Karumanchi,黒川利明,木下哲也
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/08/24
- メディア: 大型本
- この商品を含むブログ (15件) を見る
Data Structures and Algorithms Made Easy
- 作者: Narasimha Karumanchi
- 出版社/メーカー: Createspace Independent Pub
- 発売日: 2011/12/19
- メディア: ペーパーバック
- この商品を含むブログ (5件) を見る
アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)
- 作者: 石畑清
- 出版社/メーカー: 岩波書店
- 発売日: 1989/03/30
- メディア: 単行本
- 購入: 10人 クリック: 83回
- この商品を含むブログ (17件) を見る
基本は悪くないので,程度の良い中古を入手するというのも十分アリ.Amazonだと千円ちょっとからあるみたいだね.
- 作者: ロバートセジウィック,Robert Sedgewick,野下浩平,佐藤創,星守,田口東
- 出版社/メーカー: 近代科学社
- 発売日: 1994/07/01
- メディア: 単行本
- 購入: 4人 クリック: 60回
- この商品を含むブログ (10件) を見る
- 作者: Robert Sedgewick
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2001/12/28
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
実物未確認だが目次とAmazon.comの書評での評判は良い.しかし原書に比べて版が古い上に,値段が値段だけに初心者にはお勧めしにくい.*12 *13
- 作者: R.セジウィック,Robert Sedgewick,野下浩平,星守,佐藤創,田口東
- 出版社/メーカー: 近代科学社
- 発売日: 2004/06
- メディア: 単行本
- 購入: 2人 クリック: 57回
- この商品を含むブログ (21件) を見る
その他.こんな感じのが多い.
- 作者: N.ヴィルト,Niklaus Wirth,浦昭二,国府方久史
- 出版社/メーカー: 近代科学社
- 発売日: 1990/09/01
- メディア: 単行本
- 購入: 1人 クリック: 41回
- この商品を含むブログ (16件) を見る
- 作者: K.メールホルン,P.サンダース,浅野哲夫
- 出版社/メーカー: シュプリンガー・ジャパン株式会社
- 発売日: 2009/06/23
- メディア: 単行本
- 購入: 1人 クリック: 16回
- この商品を含むブログ (3件) を見る
アルゴリズムとデータ構造<改訂 C言語版> (電気工学入門シリーズ)
- 作者: 平田富夫
- 出版社/メーカー: 森北出版
- 発売日: 2002/09/01
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 2回
- この商品を含むブログ (2件) を見る
- 作者: 渡邉敏正
- 出版社/メーカー: 共立出版
- 発売日: 2000/01/01
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログ (1件) を見る
- 作者: 茨木俊秀
- 出版社/メーカー: 昭晃堂
- 発売日: 1999/11
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログ (5件) を見る
- 作者: 五十嵐健夫
- 出版社/メーカー: 数理工学社
- 発売日: 2007/10/01
- メディア: 単行本
- 購入: 14人 クリック: 122回
- この商品を含むブログ (10件) を見る
- 作者: 斎藤信男,西原清一,電子情報通信学会,電子通信学会=
- 出版社/メーカー: コロナ社
- 発売日: 1998/12
- メディア: 単行本
- 購入: 1人 クリック: 1回
- この商品を含むブログ (1件) を見る
Data Structures and Algorithm Analysis in Java
- 作者: Weiss
- 出版社/メーカー: Addison Wesley
- 発売日: 2011/11/18
- メディア: ハードカバー
- この商品を含むブログ (1件) を見る
Data Structures and Algorithms Using Python
- 作者: Rance D. Necaise
- 出版社/メーカー: Wiley
- 発売日: 2010/12/21
- メディア: ペーパーバック
- クリック: 1回
- この商品を含むブログ (1件) を見る
サンプルコード集
http://www.oreilly.co.jp/books/9784873114286/
リファレンスとしてはかなり良い感じで一冊持っておいて損はなさそうだけど,初心者が「教科書」「入門書」として使うのには勧められない.初心者がいきなりこれから始めると,消化不良を起こす可能性が高いだろう.他の本をやって基本的なアルゴリズムをマスターした中級者〜上級者が,開発現場に常備しておくようなタイプの本.
なおオライリー本なので,洋書ならKindle版もあるそうだ.
http://www.amazon.com/dp/B0043D2EGI/
第二版も出版.和訳も出た.
Algorithms in a Nutshell: A Practical Guide
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/04/02
- メディア: ペーパーバック
- この商品を含むブログ (4件) を見る
Algorithms in a Nutshell: A Practical Guide (English Edition)
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/03/22
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/12/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
Numerical Recipes 3rd Edition: The Art of Scientific Computing
- 作者: William H. Press,Saul A. Teukolsky,William T. Vetterling,Brian P. Flannery
- 出版社/メーカー: Cambridge University Press
- 発売日: 2007/09/06
- メディア: ハードカバー
- クリック: 35回
- この商品を含むブログ (10件) を見る
C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)
- 作者: 奥村晴彦
- 出版社/メーカー: 技術評論社
- 発売日: 1991/03/01
- メディア: 単行本
- 購入: 20人 クリック: 396回
- この商品を含むブログ (95件) を見る
子供向け絵本
- 作者: 紀平拓男,春日伸弥
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2011/03/26
- メディア: 単行本
- 購入: 15人 クリック: 255回
- この商品を含むブログ (31件) を見る
追記:確認したら,なんかすごーく軽すぎ.目次だけなら立派なんだけどねえ.orz *17
定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS)
- 作者: 近藤嘉雪
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1998/03
- メディア: 単行本
- 購入: 11人 クリック: 169回
- この商品を含むブログ (77件) を見る
- 作者: (株)アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2003/08/05
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 77回
- この商品を含むブログ (8件) を見る
番外
- 作者: Jon Kleinberg,Eva Tardos,浅野孝夫,浅野泰仁,小野孝男,平田富夫
- 出版社/メーカー: 共立出版
- 発売日: 2008/07/10
- メディア: 単行本
- 購入: 10人 クリック: 421回
- この商品を含むブログ (51件) を見る
応用
英語で言うと,1万語レベル超の単語帳や辞書なレベル.*19
発信型英語10000語レベル スーパーボキャブラリービルディング(CD3枚付) (CD BOOK)
- 作者: 植田一三
- 出版社/メーカー: ベレ出版
- 発売日: 2008/11/19
- メディア: 単行本(ソフトカバー)
- 購入: 15人 クリック: 115回
- この商品を含むブログ (35件) を見る
- 作者: 旺文社
- 出版社/メーカー: 旺文社
- 発売日: 2008/03
- メディア: 単行本
- 購入: 3人 クリック: 6回
- この商品を含むブログ (36件) を見る
- 作者: 小林敏彦
- 出版社/メーカー: 語研
- 発売日: 1998/08/21
- メディア: 単行本
- 購入: 10人 クリック: 37回
- この商品を含むブログ (29件) を見る
- 作者: 小林敏彦
- 出版社/メーカー: 語研
- 発売日: 2000/08/11
- メディア: 単行本
- 購入: 3人 クリック: 12回
- この商品を含むブログ (10件) を見る
- 作者: Angus Stevenson
- 出版社/メーカー: Oxford University Press, USA
- 発売日: 2010/08/01
- メディア: ハードカバー
- 購入: 1人 クリック: 1回
- この商品を含むブログ (6件) を見る
応用の方は各分野ごとに様々だ.タイトルに「アルゴリズムとデータ構造」のようなものが付かない「アルゴリズムとデータ構造」専門でない本も増えてくる.
Google PageRankの数理 ―最強検索エンジンのランキング手法を求めて―
- 作者: Amy N.Langville,Carl D.Meyer,岩野和生,黒川利明,黒川洋
- 出版社/メーカー: 共立出版
- 発売日: 2009/10/10
- メディア: 単行本
- 購入: 4人 クリック: 249回
- この商品を含むブログ (29件) を見る
- 作者: 中田育男
- 出版社/メーカー: 朝倉書店
- 発売日: 2009/11/01
- メディア: 単行本
- 購入: 2人 クリック: 166回
- この商品を含むブログ (11件) を見る
- 作者: Andrew W. Appel,神林靖,滝本宗宏
- 出版社/メーカー: 翔泳社
- 発売日: 2009/10/30
- メディア: 大型本
- 購入: 6人 クリック: 165回
- この商品を含むブログ (26件) を見る
The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで
- 作者: Maurice Herlihy,Nir Shavit,株式会社クイープ
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/09/01
- メディア: 大型本
- 購入: 1人 クリック: 127回
- この商品を含むブログ (27件) を見る
http://www.amazon.com/dp/B008CYT5TS/ :原書改訂版あり.Ver1.1くらいの感じ? *20
- 作者: 松原仁
- 出版社/メーカー: 共立出版
- 発売日: 2005/12/01
- メディア: 単行本
- クリック: 10回
- この商品を含むブログ (6件) を見る
- 作者: Steven Bird,Ewan Klein,Edward Loper,萩原正人,中山敬広,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/11/11
- メディア: 大型本
- 購入: 20人 クリック: 639回
- この商品を含むブログ (44件) を見る
- 作者: ベルンハルトコルテ,イェンスフィーゲン,Bernhard Korte,Jens Vygen,浅野孝夫,浅野泰仁,小野孝男,平田富夫
- 出版社/メーカー: シュプリンガージャパン
- 発売日: 2009/03
- メディア: ハードカバー
- 購入: 2人 クリック: 66回
- この商品を含むブログ (9件) を見る
- 作者: M.ドバーグ,M.ファンクリベルド,M.オーバマーズ,O.チョン,Mark De Berg,Mark Overmars,Mark van Kreveld,Otfried Cheong,浅野哲夫
- 出版社/メーカー: 近代科学社
- 発売日: 2010/02/01
- メディア: 単行本
- 購入: 4人 クリック: 34回
- この商品を含むブログ (5件) を見る
Algorithms of the Intelligent Web
- 作者: Haralambos Marmanis,Dmitry Babenko
- 出版社/メーカー: Manning Publications
- 発売日: 2009/07/08
- メディア: ペーパーバック
- クリック: 4回
- この商品を含むブログ (1件) を見る
- 作者: 岡谷貴之
- 出版社/メーカー: 講談社
- 発売日: 2015/04/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る
- 作者: Richard Jones,Antony Hosking,Eliot Moss
- 出版社/メーカー: Chapman and Hall/CRC
- 発売日: 2011/08/16
- メディア: ハードカバー
- クリック: 6回
- この商品を含むブログ (2件) を見る
- 作者: Rick Parent
- 出版社/メーカー: Morgan Kaufmann
- 発売日: 2007/10/11
- メディア: ハードカバー
- この商品を含むブログ (1件) を見る
Design and Analysis of Distributed Algorithms (Wiley Series on Parallel and Distributed Computing)
- 作者: Nicola Santoro
- 出版社/メーカー: Wiley-Interscience
- 発売日: 2006/10/27
- メディア: ハードカバー
- この商品を含むブログ (1件) を見る
- 作者: Mourad Elloumi,Albert Y. Zomaya
- 出版社/メーカー: Wiley
- 発売日: 2011/02/02
- メディア: ハードカバー
- クリック: 10回
- この商品を含むブログ (1件) を見る
C++ Algorithms for Digital Signal Processing (Encountering Biblical Studies)
- 作者: Paul Danieli, Damon Embree
- 出版社/メーカー: Prentice Hall
- 発売日: 1998/11/13
- メディア: ペーパーバック
- この商品を含むブログ (1件) を見る
How Debuggers Work: Algorithms, Data Structures, and Architecture
- 作者: Jonathan B. Rosenberg
- 出版社/メーカー: John Wiley & Sons
- 発売日: 1996/09/27
- メディア: ペーパーバック
- 購入: 1人 クリック: 1回
- この商品を含むブログ (1件) を見る
これはあくまで一例で,もちろんこんな本を全部読んでる人などいないだろう.たとえどれほどの名著でも,自分の専門分野と異なるものについては,必ずしもマスターする必要は無い.趣味でやるのは楽しいが,とてもじゃないが日本のプログラマにそんな時間も金も無いし,加えて日本企業じゃ一生そんな知識を必要としない低スキル低付加価値低利益率な会社の方が多い.*21プログラマーとしては,それが一番辛く虚しく悲しい.
なお,必ずしも全ての分野について書籍が出ているとは限らず,さらにそれ以上を学ぼうと思ったらソースコードを自分で読んだり*22,新しいアルゴリズムを自分で構築,或いは「発明」していったりする必要がある.それは自ら学ぶ姿勢のない人間には一生到達できない境地だ.
元記事に対して
まずは基礎です。
というより「(基本)アルゴリズムとデータ構造」自体がプログラミングの基礎だからねえ...
最初に読むのは、ソートとデータ構造が載った本で、このレベルはいろいろな本があるので、自分の使う言語での本や読みやすい本を選べばいいと思います。
なんでソートとデータ構造が最初かというと、いろいろ研究されていて話題が豊富なのと、多くのアルゴリズムがソートやデータ構造を使っていて、そこでアルゴリズムの性質が決まることが多いからです。
何を言ってるか,わけが分からないレベル.
ソートは基本アルゴリズムの一つだけど,「多くのアルゴリズムがソートを使っている」とか「そこでアルゴリズムの性質が決まる」とかは思ったことがないなあ.
ということで、平行アルゴリズムを扱った本。平行プログラミングの本ではThe Art of Multiprocessor Programming 並行プログラミングの原理から実践までも評価が高いのだけどこちらは平行プログラミングのための部品の設計の本で、問題をどのように平行に解くかというのは、この「並行コンピューティング技法」の方という印象。
おや?
アルゴリズムとデータ構造とは「プログラミングのための部品」そのものではないですか.
「The Art of Multiprocessor Programming」に出てくるような「部品」を組み合わせて,或いは改良して自分のプログラムに適応していくのが,プログラマに求められる能力の一つです.そういう意味ではアルゴリズムは「部品」というよりは「材料」で,アルゴリズムを扱うスキルには「材料をいかに加工するか?」というものも含まれると言えます.
他にも全般として方向性が無茶苦茶だなあ.「急がば回れ」とはいうけど回り道しすぎ.「(基本)アルゴリズムとデータ構造」だけなら,普通にそこそこの入門書を一冊読めばマスターできる.それで理解できないような人は素質がないからプログラマーの道を断念した方がかえってその人のためになる.他にお勧めされてる本にしても,悪書とまでは行かなくとも不適切な物が多いと思う.全般として初心者を惑わすだけの質の悪い記事になり下がってる.
番外
ところで,これはどこに分類すべきなんだろう.*23
- 作者: ドナルド・E・クヌース,有澤誠,和田英一,青木孝,筧一彦,鈴木健一,長尾高弘
- 出版社/メーカー: アスキー
- 発売日: 2004/02/18
- メディア: 単行本
- 購入: 2人 クリック: 150回
- この商品を含むブログ (65件) を見る
- 作者: ドナルド・E.クヌース,Donald E. Knuth,有澤誠,青木孝,和田英一
- 出版社/メーカー: アスキー
- 発売日: 2006/01
- メディア: 単行本
- 購入: 2人 クリック: 85回
- この商品を含むブログ (26件) を見る
- 作者: Donald E.Knuth,有沢誠,和田英一,斎藤博昭,長尾高弘,松井祥悟,松井孝雄,山内斉
- 出版社/メーカー: アスキー
- 発売日: 2004/10
- メディア: 単行本
- 購入: 1人 クリック: 80回
- この商品を含むブログ (44件) を見る
- 作者: ドナルド・E.クヌース,Donald E. Knuth,有澤誠,和田英一
- 出版社/メーカー: アスキー
- 発売日: 2006/04/01
- メディア: 単行本
- 購入: 2人 クリック: 74回
- この商品を含むブログ (22件) を見る
- 作者: Donald E. Knuth,和田英一
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/10/22
- メディア: 大型本
- 購入: 1人 クリック: 40回
- この商品を含むブログ (13件) を見る
- 作者: Donald E. Knuth,和田英一
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2011/05/20
- メディア: 大型本
- 購入: 2人 クリック: 17回
- この商品を含むブログ (14件) を見る
- 作者: Donald E. Knuth,有澤誠,和田英一
- 出版社/メーカー: アスキー
- 発売日: 2006/11/13
- メディア: 大型本
- 購入: 2人 クリック: 37回
- この商品を含むブログ (19件) を見る
- 作者: Donald E. Knuth,和田英一(監訳),有澤誠(監訳)
- 出版社/メーカー: アスキー
- 発売日: 2008/03/25
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (10件) を見る
- 作者: Donald E. Knuth,有澤誠,和田英一
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/03/24
- メディア: 大型本
- 購入: 1人 クリック: 15回
- この商品を含むブログ (9件) を見る
Art of Computer Programming, Volumes 1-4A Boxed Set, The (Box Set)
- 作者: Donald E. Knuth
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2011/03/03
- メディア: ハードカバー
- クリック: 41回
- この商品を含むブログ (2件) を見る
関連
- http://d.hatena.ne.jp/JavaBlack/20070825/p1
- 「情報検索ことはじめ〜教科書編その2 (2011年決定版)」http://d.hatena.ne.jp/sleepy_yoshi/20110118/p1
- 作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博
- 出版社/メーカー: アスキー
- 発売日: 2000/11
- メディア: 単行本
- 購入: 58人 クリック: 1,152回
- この商品を含むブログ (209件) を見る
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
- 作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井浩,鈴木貢,赤池英夫,葛毅,藤波順久
- 出版社/メーカー: エスアイビーアクセス
- 発売日: 2004/09
- メディア: 単行本
- 購入: 35人 クリック: 732回
- この商品を含むブログ (129件) を見る
余談
隣に座っているウチの会社の人に以下の本を薦めてみたんですよね。
アルゴリズムC・新版―基礎・データ構造・整列・探索
「言語に左右されない知識は積んでおいたほうがいいよ」ってことで。
そしたら「まぁ大事なのかもしんないっすけどね。そんなのよりもJQueryとかDI使った各種フレームワーク系とかの使い方でも覚えてたほうがマシだと思うんですよ。そっちの方が俺ってすごい感があるじゃないですか。アルゴリズムの勉強なんてやるだけ時間の無駄じゃないっすかね。」
などと言われまして。
でもまぁ彼が言うことも全然間違ってない。
金を稼げる人になる、って意味ではまったく正しいことを言っていると思う。
でもまったく知らなくてもいいのか、っていうとそうでもないと信じたいんですけど。
どうなんでしょうかね。
http://d.hatena.ne.jp/KTF/20081022/1224625855
たしかに安易に日銭を稼ぐというのなら,日本企業ではそっちの方が費用対効果は高そうだ.なにしろ経営者が自ら「10年は泥のように働け」(≒「頭はいらない.十年したら過労死で死ね.」)とか言ってるくらいだもの.だからこそ日本は負けたんだけどね.
そして,たとえJQueryとかDIフレームワークとかの「使い方」があぶく銭になったとしても,そこには「俺ってスゴイ感」は全く感じないな.もし自分がその立場なら「せいぜいスゴイのはフレームワークの方であって,それに使われてるあんたじゃない.そこだけは誤解するな」と忠告だけはしておきたい.
PS.「プログラミング入門」タグ新規追加.
*1:あそこで紹介されてる勉強法は,すごくおかしい.異常すぎる.初心者があの方法を真似して,またも変な宗教に洗脳されないか心配になる.まるで第二の憂鬱本のようだ.
*2: アルゴリズムC・新版―基礎・データ構造・整列・探索も良さそうだけど,アルゴリズムイントロダクションと同様に難易度は高め.
*3:それと同じくらい,初心者にはプログラマが知るべき97のことは目を通しておくことをお勧めする.
*4:真面目に勉強する気のある初心者ならば「アルゴリズムイントロダクション」のような名著を旧版の中古で揃えるのもアリだろう.
*5:サンプルコード集の方は,古くても使えなくはないが,可能ならなるべく新しい物を探すべき.英語が苦手でもソースコードが分かればなんとかなるので,洋書に挑戦してみるのもお勧め.
*6:これができないと,プログラムに改良を加えた場合に,それが改良なのか改悪なのか,その影響がどのくらい大きいのか小さいのか,リスクやメリットなどが自分では判断できなくなる.
*7:改変のレベルにもよるけれど,こういうことはザラ.
*8:その書籍で使われている言語が,たまたま自分の使う言語と同じであるとは限らない.特に先端分野になればなるほど参考になる書籍の数も減り,そういう移植の必要性が高まる.
*9:「第3巻部分の発売について、近代科学社様に問い合わせをしたのですが、予定は無しだそうです」 http://d.hatena.ne.jp/mukaken/20081215/1229304150
*10:日本語訳は2版だが,洋書は3版.
*11:ちなみに自分が主に使っている以外の言語でも,アルゴリズム本のサンプルコードくらいは読めるようになっておいた方がいいよ.Pascalはさすがにどうかと思うけどね.
*12:ちなみにJava版もあるらしい.
*13:http://d.hatena.ne.jp/kabus/20060603/1149299869
*14:斜め読みした感じではかなりよさげ.ただし難易度と値段は高めなのでそのつもりで.
*15:FFTとか懐かしい. ニューメリカルレシピ・イン・シー 日本語版―C言語による数値計算のレシピ
*16:初版のページ http://www.sbcr.jp/books/img/takarabako/
目次を見る限りでは,とても素直な入門書のように見える.本当に見えるだけ.orz
なお,この目次を見ただけで,扱われてる内容がだいたい予測できるくらいにはなっておくべき.
*17:今の若い者には,このくらい軽くて中身の薄い本じゃないと売れないのかもしれない.ライトな娯楽小説ならまだ分かるけど,ライトな専門書って一体なんなんだよ.ライトな専門家を目指すためのライト解説書?それって要するに素人だよね? http://d.hatena.ne.jp/JavaBlack/20091031/p1
*18:「Amazonで「アルゴリズム」と検索して、こんなのが上位に来る日本のプログラミング界は、大丈夫なのだろうか?相当クオリティの低い本だ。まるで名著の外殻だけtraverseしたかのような駄本。」http://d.hatena.ne.jp/nao-ichiro/20110430/1304141263
最初見た時は「そこまで言うか?」と思ったけど,今見るとだいたい同意だなあ.大丈夫じゃないよ,ホントに.orz
*19:本当に上級の人向けの単語集などというのは存在せず,そのレベルの人は多読多聴によって覚えたりするんだそうな.私は上級じゃ無いから分かりません.
*20: The Art of Multiprocessor Programming, Revised Reprint
*21:「ITを専攻している学生達からは、「就職時にITスキルが問われないのだとしたら、大学でやっていることには何の意味があるのか」という質問が出ていたのだけど、明確な回答はなかったと思う。その人たちは、ちょっとショックを受けていたような気がする。」 http://d.hatena.ne.jp/itoyosuke/20071101/1193932945
*22:いずれも古い本だけど,これなんかもそれに近い世界だ. Lions’ Commentary on UNIX (Ascii books)
*23:どちらかというと,単語帳というよりは,あのOEDみたいな感じかな... The Oxford English Dictionary, Second Edition (20 Volume Set<5 Boxes>)