Java
JavaScript
Haskell
Android
技術書

偉大なコーダーが推奨する技術書まとめ

More than 3 years have passed since last update.


偉大なコーダーが推奨する技術書まとめ

 

 

 言語や有名なツールを生み出した著名なコーダーが「読むべき」(MUST)として挙げた書籍を一覧にまとめました。(『Coders at Work』より)

 

名前
業績
書籍

ジェイミー・ザウィンスキー
XEmacs
Netscape
計算機プログラムの構造と解釈

ブラッド・フィッツパトリック
memcached
OpenID
Perlbal
LiveJournal
The Art of Computer Programming

ダグラス・クロックフォード
JSON
JSLint
JSMin
The Art of Computer Programming

ブレンダン・アイク
JavaScript
The Art of Computer Programming
ブライアン・カーニハンの本
Smalltalk関係の本

ジョシュア・ブロック
Java Collections Framework
Effective Java』著者
The Art of Computer Programming
オブジェクト指向における再利用のためのデザインパターン
英語文章ルールブック
ハッカーのたのしみ
プログラム書法
人月の神話
Java並行処理プログラミング
メリアムウェブスターズ カレッジエイト英英辞典第11版

サイモン・ペイトン・ジョーンズ
Haskell
GHC
The Art of Computer Programming
計算機プログラムの構造と解釈
珠玉のプログラミング
ビューティフルコード
"Purely Functional Data Structures"
"Compiling with Continuations"
プログラミング原論
パー・ブリンチ・ハンセンの本

ピーター・ノーヴィグ
『エージェントアプローチ 人工知能』共著者

クヌース
コルメン,ライザーソン,リベスト
サリー・ゴールドマン
エイブルソン,サスマン
Code Complete

ダン・インガルス
Smalltalk
オブジェクト指向
ポップアップメニュー
Bit Block Transfer

バル・ショアのMETA II論文
LISP 1.5の本
APLの本

ケン・トンプソン
UNIX
UTF-8
B言語
正規表現
QED
ed
Go
内容が濃くてシンタックスとセマンティクスだけを提示するような本

 

 

 Javascriptの生みの親であるブレンダン・アイク,memcachedの作者ブラッド・フィッツパトリック,Haskellの設計者であるサイモン・ペイトン・ジョーンズ,Googleの研究本部長であるピーター・ノーヴィグなど多くのコーダーがドナルド・クヌースの『The Art of Computer Programming』(TAOCP)を読むべき本として紹介しました。

 

 ケン・トンプソンのおすすめ本はシンタックスとセマンティクスだけを提示する本ということですが,「言語仕様」のことでしょうか・・・。

 


The Art of Computer Programming

 

 クヌースは自身のTAOCPについてこう述べています。


私の本のどの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. おすすめの書籍は何でしょうか?