さて、大学卒業する前にプログラミング関係の良書をまとめておくか。

ども、calcsです。多分今年度で大学卒業します。
で、人生で初めてのフルタイムのお仕事に来年度から従事することになるでしょう。

そこで後から、一部の就活生向けセミナーで言われるように、「『学生』から『社会人』になった時」に価値観って大きく変わるのか? を、検証するために(私は懐疑的です)、今良いと思っている本をリストして置こうかと。
良いと思う本はかなりその人の価値観を表していると思うので。今回はプログラミング系。それ以外はまた後日。

リストは『複数回の再読に耐え、かつ、言語を問わずに使えるノウハウを供すること』基準で選定。個人的にはどれも最低5回ぐらいは読んでるはず。


達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る
 まぁ、基本。日本語版の初版は既に10年前。あまりにも紹介されすぎてて、もはや「読んでない奴とかいるの?レベル」の本。
 色々な本が今は出ているから、技術ノウハウ的な意味ではこの本を読まずとも、新しい本から色々摂取できる。ただし、なぜそういうノウハウが考案されるのか、というスタンスを確立する意味ではこの本は今現在に置いても良書。
 別に無批判で受け入れろってことではなく、導入するノウハウのたたき台として活用できるよーって事ね。
 で、この本で有名になった言葉に何といってもDRY(Don't Repeat Yourself)がある。プログラミングの極意的に紹介される事もあるが、個人的にはこれもあくまで技術的ノウハウの一つだと思う。
 重要なのは「今目の前にある仕事に対するより良い手法を考えつづける姿勢」であって、その結果考案されたコピーの一つがDRYだから。もちろん凄く頑健な指針だから、これからも有用でありつづけるだろうけどさ。

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

 上下巻。これも有名。原書は分冊されてない。英語が読めるならお得。ひたすらコーディングの話に終始している。コメントと変数命名の話は秀逸。

改訂新版 Cプログラミング診断室

改訂新版 Cプログラミング診断室

 これ、たしか改訂版が出たのは私が中学の時だった気がする。確か小学校の時はウェブで公開されている物を、ローカルに落として読んでいた。
 名著であることは疑いようもないのだが、今更紹介するべきか? と思ったが、この本で扱っているレベルをカバーする本を未だに他に知らないので(挙げるならすべてのプログラマに効く 危険なプログラムの処法箋あたりかな)、載せておく。ダメコードの見本集として、上の本と合わせて使える。まぁ、C言語ユーザでなくても一回ぐらいは読むべき。

プログラミング作法

プログラミング作法

 これも書名のとおりだ。コードの実際の働きについて、コードを考える頭の働きについても考えさせられる。

エキスパートCプログラミング―知られざるCの深層 (Ascii books)

エキスパートCプログラミング―知られざるCの深層 (Ascii books)

 まぁ、C言語とは銘打ってあるが、コンピュータ内部のことも扱ってくれているので色々興味深い。あと、Cの言語仕様とかね。基盤の事も少しは抑えておかないといかんよ、と言うことで。C言語ユーザなら必読。そうでないなら、レパートリには入れておいた方がよろしい、ぐらいなのか?

はじめて読む486―32ビットコンピュータをやさしく語る

はじめて読む486―32ビットコンピュータをやさしく語る

 上と同じく基盤周りで。未だに立場の強いx86アーキテクチャは抑えておいて損は無い。ガチで。intelのマニュアルもかなり使える。ただ、アセンブラの扱いを軽く抑える意味でも定番の本書を推薦。

Joel on Software

Joel on Software

 まぁ、これも有名だしねぇ。プログラマーにとって、示唆の多い読み物集。息抜きにでも読める。

ピープルウエア 第2版 ? ヤル気こそプロジェクト成功の鍵

ピープルウエア 第2版 ? ヤル気こそプロジェクト成功の鍵

 プログラマーにとって生産性の高い環境とはどんなものなのか。
 自室の環境を整備するときにすら応用が効く素晴らしい本。ただし、問題もある。
 この本、「プログラマーの生産性の向上」を、ひたすら扱っているのだが、それをそのまま「プログラマーの話」として書いている。
 経営者などの管理者こそ読むべき、とか何とか言われてるが、(プログラマーに言われて)プログラマーでない経営者が読んだ場合「プログラマーは繊細なんだからもっと良い環境よこせ」と、催促しているようにとられてしまうのが痛い。
 もっとも、本音としてはそういう部分も多分にあるのかもしれないが(笑)、ここは「創造性を発揮するホワイトカラーにとっての話」とでもして、その具体例としてプログラマーの話をあげる、と言う形で書いてあると、プログラマーでない人にお勧めする時に色々違ってくると思うのだが…。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (312件) を見る
 言語はJavaだけど、もはや名前を知らない人はいないであろう「リファクタリング」と言うテクニック。まぁ別にそれ自体は凄いテクニックというわけでは全くない。デザインパターンもそうだが、「ありがちなパターンに名前をつけた」と言うこと自体が大きな功績。あとはうまくコード変更を分類し、手順化したことで、「外部動作に影響を与えない」ことを明示したことも重要か。
 いずれにせよ「名前がついている物」なら人は簡単に認識できるので、共通語彙を作ったという意味でも貴重。Javaユーザでなくても一読を。

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

 上で出たので。いわゆるGoF本。デザインパターン勉強するだけなら、今はこの本でなくても良いと思う。自分の使う言語の解説書を読めば大体事足りる。
 ただし、先にも述べたが、「名前をつけて共通認識を得られる」ようにしたこと自体がこの本の大きな功績。ここはTemplate methodでヨロ、とかで通じるし。このクラスにMemento作っておいて、とか。凄く楽。たとえテクニックとしてはこの本出版以前から使っていたものであったとしても、である。

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法

 この本は割と新しい。頭の使い方の説明書と言った感じ。もっと簡単に言えばいわゆる『勉強法本』。自己啓発本に分類すべきか悩んだが、出版がオライリーなので…。
 とくに技能発達のモデルである、ドレイファスモデルは秀逸。

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

 定番。…今でも定番なのか? まぁ、ともかく手元にあると何かと重宝。vectorソースコードも公開されているので、ちょっとアルゴリズムの実装に困ったときに参照するのに便利。それなりに有名で古いアルゴリズムならかなり載っている。アルゴリズムプログラマの教養と言うことで。

スーパーエンジニアへの道―技術リーダーシップの人間学

スーパーエンジニアへの道―技術リーダーシップの人間学

 ワインバーグの本は良書が多いのでいっぱい挙げたいが、あえてここはこの一冊で。チームを管理すること、学習を啓発することについて、(私は)全然実践できないけど興味深い。

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣

 これはデスクの横に置いておきたい一冊。アジャイルと銘打っているが、別にアジャイル関係ないプラクティスも多数含む。ソフトウェア開発のベタープラクティスの、クイックリファレンスぐらいで捉えるのがちょうどいい。
 アジャイルのいろんな本を手元に置いておくのはかさ張るけれども、薄くまとめてくれている本書は入門にも暇つぶしにも最適。

計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

 SICP。この本を挙げた理由は、「いろんなプログラミングのパラダイムを知ると頭が柔らかくなるよ」と言うことを象徴的に示すため。
 実際schemeの入門としても悪くないどころか、良いと思う。例題に解答が無いことを除けば…。まぁ、でもK&Rとかも解答ついてなかったし、何とかなるでしょう。と言うか、私は例題とかほとんど解かない…。


 とりあえず今回はこんな所で。言語問わずで絞ったので、かなりしぼられています。でもまとめるの疲れる...orz
 今回は「誰にでも有用なわけでは無い」という本も全面カット。例えばA.V.AhoのCompilersとかさ…。