#偉大なコーダーが推奨する技術書まとめ
言語や有名なツールを生み出した著名なコーダーが「読むべき」(MUST)として挙げた書籍を一覧にまとめました。(『Coders at Work』より)
私の本のどの5ページを取っても誰かの一生涯分の研究になっている
要は「簡単には読めないぜ」と。
実際に上記の偉大なコーダーたちでさえもTAOCPについては興味のある部分のみを読んだり,「参考書」としてのみ使用していると発言しており,その難しさが伺えます。
###感想
僕が学生時代に使用した教科書はコロナ社の『アルゴリズムとデータ構造』ですが,他の教科書と同じで,細かい内容は覚えていません。TAOCPは読むことすらできないでしょう。
しかし実業務ではB木を知らなくてもRDBのインデックスが使用できますし,クイックソートを知らなくても一行の関数呼び出しコードでデータは高速にソートされます。技術的な問題が発生しても,広大なネットを検索すれば最新の解決法を取り入れることが可能でしょう。
Common Lispの設計者であり,JavaやECMAScript標準化メンバーのガイ・スティールは次のように述べています。
ーー プログラミングについての考え方で,当時と今とで一番変わったことは何ですか?バブルソートが最も優れたソート法ではないと学んだことを別にすると?
(スティール)最大の変化は,最近ではコンピュータの中で起きていることをすべて理解することはできなくなったということでしょう。(中略)70年代には,コンピュータのメモリは4,000語しかありませんでした。コアダンプして1語1語見て期待通りになっているか調べることができました。オペレーティングシステムのソースリストを読んでどうなっているか見るというのは十分理にかなったことでしたし,実際私はやりました。ディスクルーチンやカードリーダのルーチンを調べて,自分でその変種を作りました。IBM1130全体の動きを理解していると感じていました。少なくとも関心のある部分は理解していました。今ではそんなことはできなくなっています。
コーダーはどこまで関心のある部分を広げて深める(ハックする)かが試されています。
(この流れで微妙ですが)関心を広く深くするためにも,ぜひTAOCPを読んでみてはいかがでしょうか。
僕は読みません。
#人生で最悪のバグは?
コーダーの共通点を見つけるという観点で,次のワードが頻出しました。
- 嫌いな言語はC++
- 人生で最悪のバグはマルチスレッドやプロセスが起こすバグ
- IDEは素晴らしいがEmacsを使う
- デバッガよりもprint文デバッグを使う
C++が想像以上に嫌われていました。ブレンダン・アイクは《いまだに70年代のデバッガやリンカではまりまくって,バカみたいです。どうしてみんな我慢しているのかがわからない》とまで言っています。
デバッガについても積極的な使用者は少なく,ジェイミー・ザウィンスキーはGDBでデバッグ中にGDBのバグを発見した経験から信頼していないなど,print文デバッグを好む傾向がありました。
#アンケート
最後までご覧いただきありがとうございます。以下のアンケートをコーダーで共有できたら面白いと思いますので,ぜひコメントしてみてください。(アンケートのWebサービスをMEAN Stackで作ってみた,とかも最高です)
1. 嫌いな言語は何でしょうか?
2. 人生最悪のバグは何でしょうか?
3. おすすめの書籍は何でしょうか?