すべてのプログラマーが読むべき最も影響力のある本は何ですか?[閉まっている]


1439

もしあなたが過去にさかのぼって、開発者としてのキャリアの初めに特定の本を読むように自分に言うことができるなら、それはどの本でしょうか?

このリストは多様で、幅広いものをカバーしていると思います。

検索するには:右上にある検索ボックスを使用します。現在の質問の回答を検索するには、を使用しますinquestion:this。例えば:

inquestion:this "Code Complete"

8
このスレッドを閲覧すると、プログラミング関連のほとんどの本がいかに醜いかがわかります。非常に良いスレッドですが!
カールバーグキスト

23
興味深いのは、タイトルが「すべてのプログラマーが読むべき最も影響力のある1冊の本は何ですか」と書かれている一方で、言語固有のトピックを扱った書籍がかなりたくさんあるということです。定義により、またそれが置かれたままの問題として、ここで提案されている本は言語にとらわれないトピックを扱っているはずであり、これはほとんどのプログラマがまだ読む方法を学んでいないことを証明しています。
ルーク

19
昔に戻って何かを読むように言うことができれば、私が携帯した新聞やスポーツのファクトブックである方がいいでしょう。それ以外のものは良いタイムトラベルの無駄です。:-)
jmucchiello 2009年

32
あなたが知っている、もし私が落札することについて心配していなかったなら、私はひどくトワイライトに行って提案するだろう。「それはまた、青白い、太陽を避けている人々についてです!」
Jacob Bellamy、

3
誰かが本の繰り返しのエントリを削除することで答えを整理できますか?それらのほとんどはすでに反対票を投じている。
rao

回答:


1746
  • Steve McConnellによるコードコンプリート(第2版)
  • 実用的なプログラマー
  • コンピュータプログラムの構造と解釈
  • カーニハンとリッチーによるCプログラミング言語
  • Cormen、Leiserson、Rivest&Steinによるアルゴリズムの紹介
  • 4人のギャングによるデザインパターン
  • リファクタリング:既存のコードの設計の改善
  • 神話の男月
  • ドナルドクヌースによるコンピュータプログラミングの芸術
  • コンパイラー: Alfred V. Aho、Ravi Sethi、およびJeffrey D. Ullmanによる原則、技法、およびツール
  • ゲーデル、エッシャー、バッハ byダグラス・ホフスタッター
  • クリーンコード: Robert C. Martinによるアジャイルソフトウェア職人技のハンドブック
  • 効果的なC ++
  • より効果的なC ++
  • Charles Petzoldによるコード
  • Jon Bentleyによる真珠のプログラミング
  • Michael C. Feathersによるレガシーコードの効果的な使用
  • DemarcoとListerによるPeopleware
  • Peter SeibelによるCoders at Work
  • ファインマンさん、きっと冗談ですよ!
  • 効果的なJava 2ndエディション
  • Martin Fowlerによるエンタープライズアプリケーションアーキテクチャのパターン
  • リトルスキーマー
  • 熟練の策士
  • なぜ(有力)Rubyガイド
  • 受刑者が亡命を実行している:ハイテク製品が私たちを狂わせる理由と正気を回復する方法
  • Unixプログラミングの芸術
  • テスト駆動開発: Kent Beckのによる
  • アジャイル開発者の実践
  • 考えさせないで
  • アジャイルソフトウェア開発、原則、パターン、および実践(Robert C. Martin著)
  • Eric Evansによるドメイン駆動設計
  • ドナルド・ノーマンによる日常のデザイン
  • Andrei Alexandrescuによる最新のC ++デザイン
  • 最高のソフトウェアライティングI by Joel Spolsky
  • カーニハンとパイクによるプログラミングの実践
  • 実用的な思考と学習: Andy Huntによるウェットウェアのリファクタリング
  • ソフトウェアの見積もり:スティーブマッコネル著、黒い芸術の謎を解く
  • Chad Fowlerによる情熱的なプログラマー(私の仕事はインドに行きました)
  • ハッカー:コンピューター革命の英雄
  • アルゴリズム+データ構造=プログラム
  • しっかりしたコードを書く
  • JavaScript-良い部分
  • 37の信号で現実になる
  • Karl Seguinによるプログラミングの基礎
  • コンピュータグラフィックス:Cの原則と実践(第2版)
  • ブルース・エッケル著ジャワで考える
  • コンピューティングシステムの要素
  • Joshua Kerievskyによるパターンへのリファクタリング
  • Andrew S. Tanenbaumによる最新のオペレーティングシステム
  • 注釈付きチューリング
  • ドナルドノーマンによって私たちをスマートにするもの
  • クリストファー・アレクサンダーによる構築の時代を超越した方法
  • 締め切り: Tom DeMarcoによるプロジェクト管理に関する小説
  • StroustrupによるC ++プログラミング言語(第3版)
  • エンタープライズアプリケーションアーキテクチャのパターン
  • コンピュータシステム-プログラマの視点
  • Robert C. MartinによるC#でのアジャイル原則、パターン、およびプラクティス
  • テストにガイドされて成長するオブジェクト指向ソフトウェア
  • Brad Abramsによるフレームワーク設計ガイドライン
  • デービッド・ウェスト博士によるオブジェクト思考
  • W. Richard StevensによるUNIX環境での高度なプログラミング
  • ハッカーと画家:コンピュータ時代の大きなアイデア
  • トレイシー・キダーによる新しい機械の魂
  • ジェフリー・リヒターによるC#を介したCLR
  • クリストファー・アレクサンダーによる構築の時代を超越した方法
  • Steve MetskerによるC#のデザインパターン
  • ルイス・キャロルによる不思議の国のアリス
  • 禅と二輪車のメンテナンスの芸術 by Robert M. Pirsig
  • 顔について-インタラクションデザインの要点
  • 誰もがここに来る:クレイシャーキーによる組織なしで組織化の力
  • プログラミングのタオ
  • 自然の計算美
  • Steve Maguireによる堅牢なコードの記述
  • フィリップとアレックスのWeb公開ガイド
  • Grady Boochによるアプリケーションを使用したオブジェクト指向の分析と設計
  • Joshua Blochによる効果的なJava
  • NJカットランドによる計算可能性
  • プログラミングの首謀者
  • タオテチン
  • 生産的なプログラマ
  • ケビン・ミトニックによる欺瞞の芸術
  • キャリアプログラマー:クリストファーダンカンによる不完全な世界のためのゲリラ戦術
  • 人工知能プログラミングのパラダイム:Common Lispのケーススタディ
  • 運命のマスター
  • Andy HuntによるC#とNUnitを使用した実用的なユニットテスト、およびDave ThomasとMatt Hargett
  • ジョージ・ポリアによる解決方法
  • 錬金術師パウロコエーリョ
  • Smalltalk-80:言語とその実装
  • 安全なコードを書くMichael Howardによる(第2版)
  • 関数型プログラミングの概要Philip WadlerとRichard Birdによる
  • バグなし!デビッド・ティーレン
  • やり直しJason FreidとDHHによる
  • JUnitの動作

16
あなたがおそらく大学にいるなら、コードコンプリートは素晴らしい本です。プログラミングの経験が1年以上あれば、それはまったくの退屈です。
Bogdan Gavril MSFT

19
Code Completeには多くの有用な情報が含まれていますが、双曲線、ワッフル、繰り返しに埋もれており、読みにくくなっています。
ジェフイェーツ

76
私は自分のキャリアの3年前にコードコンプリートを読みました。私はソフトウェアエンジニアリングコースもプログラミング言語構文のコースも受けていませんが、CSの入門コースをいくつか受けていました。これは、私が今まで読んだ中でより優れたプログラマーになるために読んだ最高の1冊の本です。それはあなたを専門家にすることはありませんが、それはあなたをいじくり回す以上のものになります。
Shea

119
この本の問題は、初心者にとっては、概念が少し進んでいるため実際には意味をなさないことです。あなたがそれを読むことができるようになる準備ができているときまでに、あなたはすでに本の概念の99%を知っていて、練習しているはずです。
esac 2009

57
これは、この本にあるような常識的な提案との取り決めです。時々、あなたは彼らが列に戻ることを思い出させる必要があります。
JohnFx 2009年

9

K&R

@フアン:私はフアンを知っています、私は知っています-しかし、実際に目前の仕事に取り掛かることによってのみ学ぶことができるいくつかのことがあります。一日中抽象的な理想について話すことは、単にあなたをアカデミックなものにするだけです。それらの存在の理由を真に理解したのは、アブストラクトの適用です。:P

@キース:アランクーパーによる「受刑者たちは亡命を実行している」についての素晴らしい言及-その本を読んでから私と一緒に働いた開発者の目を開く人は、それが支持するアイデアについて言及しているのを聞いた。+1


9

コンピュータサイエンティスト向けの離散数学http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

JKトラスによるコンピュータ科学者のための離散数学

これはプログラミングについては教えていませんが、すべてのプログラマが知っておくべき基本的な数学を教えています。大学でこのようなことを覚えているかもしれませんが、実際には、述語ロジックを実行するとプログラミングスキルが向上します。コレクションを使用してプログラミングする場合は、セット理論を学ぶ必要があります。

ここには、さまざまな方法で問題について考えることができる興味深い情報がたくさんあります。何か新しいことを学ぶためにたまに拾うだけで便利です。


9

Systemantics:システムの動作方法、特にシステムの失敗方法。安く使ってください。しかし、いくつかの失敗したプロジェクトに取り組むまでは、ユーモアを得られないかもしれません。

本の美しさは著作権の年です。

おそらく、本で提示された最も奥深いテイクアウトの「法則」:

基本的な故障モード定理(FFT):複雑なシステムは通常、故障モードで動作します。

特定のソフトウェアに、他の部分の障害または他の部分の検証によってマスクされている障害部分があるという考えです。Therac-25放射マシンでの実際の例を参照してください。そのソフトウェアの欠陥はハードウェアのフェイルセーフによって隠されていました。ハードウェアフェイルセーフが取り外されたとき、それらの年の間ずっと検出されなくなっていたソフトウェアの競合状態は、マシンが3人を殺すことをもたらしました。


1
同じ著者(John Gall)によるThe Systems Bibleもチェックしてください。これはSystemanticsの第3版で、タイトルを変更しました。これはあなたが学校から盗む本です。成長した大人が懐中電灯で毛布の下で読んだ本です。
Chris Wenham、2011年

9

私の個人的なお気に入りの1つはHacker's Delightです。これは、教育的であると同時に読むのも楽しかったからです。

第二弾がまもなくリリースされますように!


Henry S. Warren Jrによる "Hacker's Delight"の+1-これは、一般的な意味でのハッキングではなく、低レベルのビットのいじりや他の「ハッキング」のような本当の意味でのハッキングに関するものです。万人向けではありませんが、コードの最適化やコンパイラなどに携わっている場合や、低レベルのものに興味がある一般のオタクである場合、これは素晴らしい本です。
ポールR

9

本の表紙には、スペインのカタルーニャ州バルセロナで建設中のローマカトリック大聖堂「サグラダファミリア」が描かれています。2026年に完成予定(残りわずか17年)。ほとんどのプログラムと同様に、最高の本を手にしても、彼らは決して終わらなかった...
PeterMmm 2009

9

エクストリームプログラミングの説明:ケントベックによる変化を受け入れる。私はハードウェアXPまたはそれ以上の方法でソフトウェア開発を行うことを主張していませんが、私のキャリアのかなり早い段階で、この本の原則を紹介していただければ幸いです。単体テスト、リファクタリング、シンプルさ、継続的インテグレーション、コスト/時間/品質/スコープ-これらは私が開発の見方を変えました。アジャイルが登場する前は、デバッガと変更要求に対する恐れがすべてでした。アジャイルの後、それらの悪魔はそれほど大きくはありませんでした。





9

プログラミングの練習。ブライアンW.カーニハン、ロブパイク

ここに示されているスタイルは優れています。コードはそれ自体が意味をなし、本全体がKISSの原則に従っています。個人的には選択した言語ではありませんが、それでも私に影響を与えています。





9

間違いなくソフトウェアの職人技

代替テキストhttp://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

この本はソフトウェア工学、システム開発について多くのことを説明します。また、さまざまな種類の製品開発の違いを理解することも非常に役立ちます。WebVSシュリンクラップVS IBMフレームワークです。ウォーターフォールモデルを考案したとき、人々は何を考えていましたか?これを読んで、すべてが明らかになります(うまくいけば)


この本は一から書き直す必要があります。主題は非常に興味深いですが、本は非常に正気ではありません。
クリスマウントフォード2011

クリス、私はあなたのコメントを理解するのに苦労しました...もっと説明できますか?なぜ「非常識」なのですか?
dario minonne

まず、誤植がたくさんあります。Addison Wesleyの通常一流の編集者の手は、この巻には奇妙に欠けています。
Chris Mountford、

...続き、ここには十分なスペースがありませんが、2。作者が事実と意見、逸話、および基本原則などを切り替えるテキストでは決して明確ではありません。ソフトウェア開発の困難な側面。代替案に比べて特定の利点があり、おそらく欠点があります。私はそれが健全なアプローチだと思います。ソフトウェアは本質的に工芸品であると言っても意味がありません。非常に煩わしい読み物ですが、公平を期すために、それは少し前のことで、多くの詳細は忘れていました。しかし、私の嫌悪感は残っています。
Chris Mountford、

8

@ピーター・コールトン-あなたはクヌースを読まない、あなたはそれを勉強する。

私と私の仕事について... 純粋に関数型のデータ構造は、関数型言語を念頭に置いて考え、開発するのに最適です。


8

トーマス・フリードマンによる「世界はフラット」。

プログラミングの卓越性には、精神的エネルギーの投資と、医学や法律の専門職に匹敵する継続的な学習への献身が必要です。それはそれらの職業が支払うもののほんの一部を支払い、金融セクターに向かう数学的に精通した人に支払われる賃金よりはるかに少ないです。そしてのための賃金コード構築する、それが比較的職業であるので侵食されています、ほとんどの経済でインテリジェントで自己規律簡単に参入できるています。

プログラミングはすでに、例えば配管工事よりも支払う額が少なくなるまでに侵食されています。配管を「オフショア」にすることはできません。学ぶのに1年かかるまったく新しい配管技術のセットを受け取る特権のために、隔年でProfessional Plumber's Conferenceに参加するために$ 2395を支払う必要はありません。

あなたが北アメリカまたはヨーロッパに住んでいて、若くて賢いなら、プログラミングは合理的なキャリアの選択ではありません。プログラミングに関わるビジネスは絶対に。ビジネスを研究し、BS検出器を改良するためのプログラミングについて十分に理解してください。しかし、精神的エネルギーの大部分を、ライブラリ、データ構造、アルゴリズムの習得に捧げますか?それは、プログラミングが経済的な選択よりもあなたにとって何かである場合にのみ意味があります。

あなたがプログラミングを愛し、そのためにそれをあなたのキャリアにするつもりであるならば、それはあなたが生計を立てるためにそれをますます困難な職業にするために、現在そしてこれからも続く力について冷ややかな理解を発達させることを必要とします。「The World is Flat」は変数の名前を教えてくれませんが、すでに到着している経済の現実に6時間または8時間浸ります。あなたが怖がって取得し、それを読んで、できない場合は、その後、出て行くと買う「コードコンプリート。」


これは良い答えです。
Avi

8

代替テキスト

昨年、私はいくつかのクラスを受講しました。私は読む

イノベーターのジレンマ(破壊的技術)
神話の人間月間(管理ソフトウェア)
亀裂を乗り越える(スタートアップ)
データベース管理システム、COWブック
プログラミングC#、OSTRICHブック
iPhoneの開発を始める、GRAPEFRUITブック

それぞれの本は素晴らしかったが、クレイトン・クリステンセンのイノベーターのジレンマ(1997 !!!)は本当に素晴らしい本であり、現代のソフトウェアの世界について本当に考えさせられました。対処される課題は、破壊的なテクノロジーであり、ディスクドライブ企業と非技術企業が常に、ゲームを変える新しいテクノロジーによってどのように破壊されるかです。おそらく最大の「ウェブ」企業であるグーグルについて考えるとき、それは1つに新しい展望を与えます。なぜ彼らはすべてに手を持っているのですか?それは彼らが自分の立場を何か新しいもので混乱たくないからです。グーグルのプレビューはアイデアを得るのに十分です。それを読んで!


この本はかなり繰り返しが多いと思います。最初の1/4を読むことをお勧めします。
Ben Haley

8

Steven Levyによるハッカー。

個性と生き方を第一に考えなければなりません。他のすべてを学ぶことができます。



8

Python言語は私に非常に影響力がありました、私がこれらの本を何年も前に読んでいたらいいのにと思います。Python言語の美しさとシンプルさは、他の言語でコードを書く方法に本当に影響を与えました。

代替テキスト 代替テキスト


2
Pythonで新しいプログラマーを始めることで、世界中の醜いコードの量を減らすことができると思います。私はランダムに行をインデントする誰かと一緒に働きます-彼らがPythonで数ヶ月働いていたなら、その人はそれをしません。
xnine

6
Pythonを使って新しいプログラマーを始めると、他の言語の量が減ると思います。
Marco Mariani、

2
それらは偶然のカバーですか?
ケリーS.フランス語




7

「Unixプログラミングの芸術」は、ソフトウェアデザインのいくつかの原則(主に単純さ)を理解させようとするエリックS.レイモンドのような優れたハッカー/優秀な心による優れた本だと思います。この本は、Unixプラットフォームでプロジェクトを開始しようとしているすべてのプログラミングに欠かせません。


6
これは複製です。
Christopher Mahan、

7

上記の本の多くは必読であることに同意しますが(実用的プログラマー、神話的マン月、コンピュータプログラミングの芸術、SICPがすぐに思い浮かびます)、少し異なる方向に進んでA Disciplineを推奨しますEdsger Dijkstraによるプログラミングの。32歳ですが、「検証可能性の設計」を強調することは非常に関連があります(「検証可能性」が「単体テスト」ではなく「証明」を意味する場合でも)。


7

私はこの本に大きな期待を寄せていましたが、それは私にはできません。当たり前のことだと思います。プログラミングに不慣れな人にはおそらく良いでしょう。
projecktzero 2010

7

Martin Fowlerのリファクタリング:既存のコードのデザインの改善はすでにリストされています。しかし、それが私に影響を与えた理由を詳しく説明します。

本全体の本質は、人間が読みやすく理解できるようにコードを構造化することです。私が書いたコードは、同僚や後継者が消費し、おそらくそれから何か良いことを学ぶためのものであることを強く教えてくれます。それは私が人々を私の名前を称賛するような方法で意識的にプログラムするように促し、私を永遠に非難するつもりはありません



7

広く賞賛されていないが、深い洞察に満ちている優れた本は次のとおりです。AlistairCockburnによるAgile Software Development:The Cooperative Game

何がそんなに特別なのですか?まあ、明らかに誰もが「アジャイル」という言葉を聞いたことがあり、最近ではほとんどが信者であるようです。しかし、信じるかどうかにかかわらず、アジャイル運動が存在する理由の背後にはいくつかの深い原則があります。この本は、これらの原則を正確かつ科学的な方法で明らかにし、明確にします。原則のいくつかは(ところで、これらはAlistairの言葉ではなく、私の言葉です):

  1. チームソフトウェア開発で最も難しいのは、全員の頭脳に同じ理解を持たせることです。私たちは、実体のある世界では見えない巨大で精巧な複雑なシステムを構築しています。より多くの人々の脳がより深い理解を共有できるようになればなるほど、チームはソフトウェア開発により効果的になります。これがペアプログラミングが理にかなっている根本的な理由です。ほとんどの人はそれを却下します(私も最初は却下しました)が、この原則を念頭に置いて、もう一度試してみることを強くお勧めします。先ほど作成したサブシステムを深く理解している2人の人々に巻き込まれます...このように深い情報をすばやく転送する方法は他にあまりありません。それはバルカンの心の融合のようなものです。
  2. 深い理解をすばやく伝えるために、必ずしも言葉が必要なわけではありません。そして当然の結果:単語が多すぎて、リスナー/リーダーの能力を超えています。つまり、試みている理解の転移は起こりません。子供たちが「没頭」し、「夢中になる」ことによって言語を話す方法を学ぶと考えてください。言語だけでなく...彼は床で電車で遊んでいる子供たちの例を挙げます。沿ってさえでした別の子供来て見られないの前に列車が...しかし、他の子供たちを見て、彼はゲームの要点をピックアップし、右に沿って演じています。これは人間の間でいつも起こります。これは、あまりにも多くの単語についての当然の結果とともに、700ページの詳細な要件仕様を記述しようとするのが昔の「滝」の時代にどのように見当違いだったかを確認するのに役立ちます。

そこにもたくさんあります。今は黙るが、この本を強く勧める!


2
ユニークな貢献であり、あなたはそれを読む価値がある理由を明確に説明するために時間をかけました。独創性と努力の+1!私はこれをすぐに読むのを楽しみにしています...
エイブリー・ペイン

良い。私はあなたが失望することはないと思います。
チャーリーフラワーズ

7

運命の達人。あなたの職業への動機と愛情に関する限り、それはこの本で説明されているもの、真に刺激的な物語に勝るものはありません!


正確な1行のレビューの+1
rubayeet
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.