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

StackOverflow https://stackoverflow.com/questions/1711

  •  08-06-2019
  •  | 
  •  

質問

過去に戻って、開発者としてのキャリアの初期に特定の本を読むように自分に言い聞かせることができるとしたら、どの本を読みますか?

このリストは多様であり、幅広い内容を網羅するものになると予想しています。

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

inquestion:this "Code Complete"

正しい解決策はありません

他のヒント

  • コードの完成 (第 2 版) スティーブ・マコネル著
  • 実用的なプログラマー
  • コンピュータプログラムの構造と解釈
  • C プログラミング言語 カーニハンとリッチー著
  • アルゴリズムの概要 コーメン、ライザーソン、リベスト、スタイン著
  • デザインパターン ギャング・オブ・フォーによって
  • リファクタリング:既存のコードの設計を改善する
  • 神話上の人間月間
  • コンピュータープログラミングの芸術 ドナルド・クヌース著
  • コンパイラ:原則、技術、ツール アルフレッド V.アホ、ラヴィ セティ、ジェフリー D.ウルマン
  • ゲーデル、エッシャー、バッハ ダグラス・ホフスタッター著
  • クリーンなコード:アジャイル ソフトウェア クラフトマンシップのハンドブック ロバート C.マーティン
  • 効果的な C++
  • より効果的な C++
  • コード チャールズ・ペツォルト著
  • プログラミングパール ジョン・ベントレー著
  • レガシーコードを効果的に使用する マイケル C.羽毛
  • ピープルウェア デマルコとリスター著
  • 働くプログラマー ピーター・セイベル著
  • 確かに冗談ですよ、ミスター。ファインマン!
  • 効果的なJava 第2版
  • エンタープライズ アプリケーション アーキテクチャのパターン マーティン・ファウラー著
  • 小さな策士
  • 熟練の策士
  • Ruby の (感動的な) なぜガイド
  • 収容者たちは精神病院を運営している:ハイテク製品が私たちを狂わせる理由と正気を取り戻す方法
  • Unix プログラミングの芸術
  • テスト駆動開発:例による ケント・ベック著
  • アジャイル開発者の実践
  • 考えさせないでください
  • アジャイル ソフトウェア開発、原則、パターン、実践 ロバート C.マーティン
  • ドメイン駆動設計 エリック・エヴァンス著
  • 日常のもののデザイン ドナルド・ノーマン著
  • 最新の C++ 設計 アンドレイ・アレクサンドルスク著
  • 最優秀ソフトウェアライティング I ジョエル・スポルスキー著
  • プログラミングの実践 カーニハンとパイク著
  • 実践的な思考と学習:ウェットウェアをリファクタリングする アンディ・ハント著
  • ソフトウェアの見積もり:黒人芸術を解き明かす スティーブ・マッコーネル著
  • 情熱的なプログラマー (仕事でインドに行きました) チャド・ファウラー著
  • ハッカー:コンピューター革命の英雄たち
  • アルゴリズム + データ構造 = プログラム
  • しっかりとしたコードを書く
  • JavaScript - 良い部分
  • 現実になる アーティスト: 37 シグナルズ
  • プログラミングの基礎 カール・セギン著
  • コンピューターグラフィックス:C の原則と実践 (第2版)
  • Javaで考える ブルース・エッケル著
  • コンピューティング システムの要素
  • パターンへのリファクタリング ジョシュア・ケリエフスキー著
  • 最新のオペレーティング システム アンドリュー S.タネンバウム
  • 注釈付きのチューリング
  • 私たちを賢くするもの ドナルド・ノーマン著
  • 時代を超越した建築方法 クリストファー・アレクサンダー著
  • 締め切り:プロジェクト管理に関する小説 トム・デマルコ著
  • C++ プログラミング言語 (第 3 版) ストルストラップ著
  • エンタープライズ アプリケーション アーキテクチャのパターン
  • コンピュータ システム - プログラマーの視点
  • C# のアジャイルの原則、パターン、実践 ロバート C.マーティン
  • 成長するオブジェクト指向ソフトウェア、ガイド付き テストによる
  • フレームワーク設計ガイドライン ブラッド・エイブラムス著
  • オブジェクト思考 博士によるデビッド・ウェスト
  • UNIX 環境での高度なプログラミング W 著リチャード・スティーブンス
  • ハッカーと画家:コンピューター時代のビッグアイデア
  • 新しいマシンの魂 トレイシー・キダー著
  • C# 経由の CLR ジェフリー・リヒター著
  • 時代を超越した建築方法 クリストファー・アレクサンダー著
  • C# でのデザインパターン スティーブ・メツカー著
  • 不思議の国のアリス ルイス・キャロル著
  • 禅とバイク整備術 ロバート M.ピルシグ
  • 顔について - インタラクション デザインの基礎
  • みんなが来ます:組織を持たずに組織する力 クレイ・シャーキー著
  • プログラミングの道
  • 計算による自然の美しさ
  • しっかりしたコードを書く スティーブ・マグワイア著
  • フィリップとアレックスの Web パブリッシング ガイド
  • アプリケーションを使用したオブジェクト指向の分析と設計 グレイディ・ブーチ著
  • 効果的なJava ジョシュア・ブロック著
  • 計算可能性 N 著J.カットランド
  • プログラミングの首謀者
  • タオ・テ・チン
  • 生産的なプログラマー
  • 欺瞞の芸術 ケビン・ミトニック著
  • キャリアプログラマー:不完全な世界のためのゲリラ戦術 クリストファー・ダンカン著
  • 人工知能プログラミングのパラダイム:Common Lisp のケーススタディ
  • マスターズ・オブ・ドゥーム
  • NUnit を使用した C# でのプラグマティックな単体テスト アンディ・ハント、デイブ・トーマス、マット・ハーゲット著
  • 解決方法 ジョージ・ポリア著
  • 錬金術師 パウロ・コエーリョ著
  • Smalltalk-80:言語とその実装
  • 安全なコードの作成 (第 2 版) マイケル・ハワード著
  • 関数型プログラミングの概要 フィリップ・ワドラーとリチャード・バード著
  • バグはありません! デビッド・シーレン著
  • 手直し ジェイソン・フリードとDHH著
  • JUnit の動作

K&R

@ファン:フアンのことは知っています、わかっています。しかし、実際に目の前の仕事に取り組むことでしか学べないこともいくつかあります。抽象的な理想を一日中話していると、ただの学者になってしまいます。抽象を適用することで、それらの存在理由を真に理解できます。:P

@キース:アラン・クーパー著「受刑者は精神病院を運営している」についての素晴らしい言及 - 確かに目を見張るもので、私がその本を読んで以来私と一緒に仕事をした開発者は誰でも、私がこの本が支持するアイデアについて言及しているのを聞いたことがあるでしょう。+1

コンピュータ科学者のための離散数学 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 著トラス。

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

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

システム論:システムがどのように機能するか、特にシステムがどのように失敗するか. 。安く中古で手に入れましょう。しかし、失敗したプロジェクトをいくつか経験するまでは、そのユーモアを理解できないかもしれません。

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

おそらくこの本で紹介されている最も奥深い「法則」は次のとおりです。

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

これは、ソフトウェアのどの部分にも障害のある部分があり、他の部分の障害や他の部分の検証によって隠蔽されているという考え方です。実際の例については、 Therac-25 放射線照射装置, 、そのソフトウェアの欠陥はハードウェアのフェイルセーフによって隠蔽されていました。ハードウェアのフェイルセーフが取り外されたとき、長年検出されなかったソフトウェアの競合状態により、マシンは 3 人を死亡させました。

私の個人的なお気に入りの 1 つは、 ハッカーの喜び, 、それは勉強になるのと同じくらい読むのが楽しかったからです。

早く第二弾が発売されることを願っています!

エクストリーム プログラミングの説明:変化を受け入れる ケント・ベック著。私はソフトウェア開発に対するハードコアな XP や高速道路の考え方を支持するわけではありませんが、キャリアのもっと早い段階でこの本の原則に出会っていればよかったと思っています。単体テスト、リファクタリング、シンプルさ、継続的インテグレーション、コスト/時間/品質/範囲 - これらは私の開発に対する見方を変えました。アジャイル以前は、デバッガと変更リクエストに対する恐怖がすべてでした。アジャイルの後、それらの悪霊はそれほど大きくならなくなりました。

種類とプログラミング言語 Benjamin C Pierce 著。プログラミング言語の基礎を徹底的に理解します。

データベース システムの概念 は、優れたデータベース設計原則を理解するために読むのに最適な本の 1 つです。

alt text

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

ここで示されているスタイルは優れています。コード自体がすべてを物語っており、本全体が KISS の原則に従っています。個人的には私の好みの言語ではありませんが、それでも私にとって影響力のある言語です。

ゼロからプログラミング。 インターネット上では無料です。この本は私にAT&Tのasmを教えてくれました。とても読みやすいです。

alt text

人工知能プログラミングのパラダイム:Common Lisp のケーススタディ by Peter Norvig

enter image description here

Common Lisp を学びたかったので読み始めました。半分まで読んだとき、これが私がこれまでに読んだプログラミングに関する最高の本であることに気づきました。

まさにソフトウェアの職人技

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

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

@Peter Coulton -- あなたはクヌースを読んでいません、勉強しているのです。

私にとっても、私の仕事にとっても… 純粋に機能的なデータ構造 関数型言語を念頭に置いて考え、開発するのに最適です。

トーマス・フリードマン著「ザ・ワールド・イズ・フラット」。

プログラミングで優れた能力を発揮するには、精神的エネルギーの投資と、医学や法律の専門職に匹敵する継続的な学習への献身が必要です。それは、それらの専門職が支払う賃金のほんの一部であり、金融​​セクターに向かう数学に精通した人々に支払われる賃金のほんの一部です。そして、そのための賃金 コードの構築 衰退しているのは、それが職業だからです。 比較的 ほとんどの国において、知的で自制心のある人々が参入しやすい環境です。

プログラミングはすでに、たとえば配管工事よりも給料が安く済むところまで侵食されています。配管は「オフショード」することはできません。学習には1年かかるまったく新しい配管技術を受け取る特権のために、隔年のプロの配管工会議に出席するために2395ドルを支払う必要はありません。

あなたが北米またはヨーロッパに住んでいて、若くて賢い場合、プログラミングは合理的な職業選択ではありません。事業者 関与する プログラミング、絶対に。ビジネスを勉強し、BS 検出器を改良するためのプログラミングについて十分に理解してください。素晴らしい。しかし、ライブラリ、データ構造、アルゴリズムを習得することに精神エネルギーの大部分を捧げるのでしょうか?これは、プログラミングが経済的な選択以上のものである場合にのみ意味を成します。

もし、あんたが プログラミングを仕事にしており、そのためにそれを自分の仕事にしようとしているのであれば、それを生計を立てるのがますます困難な職業にする、そして今後も続くであろう勢力について、冷静な目で理解する義務があります。「The World is Flat」では、変数にどのような名前を付けるかを教えてくれませんが、経済の現実に 6 ~ 8 時間浸ることができます。 すでに 到着した。怖がらずに読んでいただければ、 それから 「コードコンプリート」を買いに行ってください。

alt text

昨年、私はいくつかの授業を受けました。私は読む

革新者のジレンマ (破壊的テクノロジー)
The Mythical Man Month (ソフトウェアの管理)
キャズムを越える (スタートアップ)
データベース管理システム、COW ブック
C# プログラミング、OSTRICH ブック
iPhone 開発初心者向け、THE GRAPEFRUIT Book

どの本も素晴らしかったですが、Clayton Christensen 著の『Innovator's Dilemma』 (1997!!!) は本当に素晴らしい本で、現代のソフトウェアの世界について本当に考えさせられました。取り組む課題は、破壊的テクノロジー、そしてディスクドライブ企業と非技術系企業が常に新しい革新的なテクノロジーによってどのように破壊されているかということです。おそらく最大の「ウェブ」企業である Google について考えるときに、新しい視点を与えてくれます。なぜ彼らはあらゆることに手を出しているのでしょうか?それは彼らが自分たちの立場を持ちたくないからです 混乱した 新しい何かによって。Google のプレビューはアイデアを理解するのに十分です。それを読んで!

ハッカー、スティーブン・レヴィ著。

人格と生き方が第一です。他のことはすべて学ぶことができます。

Python 言語は私に大きな影響を与えました。何年も前にこれらの本を読んでおけばよかったと思います。Python 言語の美しさとシンプルさは、他の言語でのコードの書き方に大きな影響を与えました。

alt text alt text

新しいチューリング オムニバス http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

本当に良い本です。コンピューターサイエンスの最も重要な分野について高度な知識を持っています。はい、CS != プログラミングですが、これはすべてのプログラマーにとって依然として役立ちます。

フレッド・ブルックス著『神話の人月』http://en.wikipedia.org/wiki/The_Mythical_Man-Month

『The Art of Unix Programming』は、Eric S. のような優れたハッカーであり、優れた頭脳を持った人が書いた素晴らしい本だと思います。Raymond は、ソフトウェア設計のいくつかの原則 (主に単純さ) を私たちに理解させようとしています。この本は、Unix プラットフォームでプロジェクトを始めようとしているすべてのプログラミング者にとって必需品です。

上記の本の多くが必読であることには同意しますが (Pragmatic Programmer、Mythical Man-Month、Art of Computer Programming、SICP がすぐに思い浮かびます)、私は少し違う方向に進んで、お勧めしたいと思います。 プログラミングの分野 エドガー・ダイクストラ著。32 年前のものではありますが、「検証可能性を考慮した設計」の強調は非常に重要です (「検証可能性」が「単体テスト」ではなく「証明」を意味するとしても)。

マーティン・ファウラーの リファクタリング:既存のコードの設計を改善する はすでにリストされています。しかし、それが私に影響を与えた理由を詳しく説明します。

この本全体の本質は、コードを構造化して、読みやすく、理解しやすいようにすることです。 人間. 。私が書いたコードは、同僚や後任者が利用して、おそらく何かを学ぶことを目的としているということを強く教えてくれます。 良い それから。それは私に意識的にインスピレーションを与えます 人々が私の名前を賞賛し、永遠に私を呪わないような方法でプログラムを実行してください。.

以下は、それほど広く賞賛されているわけではありませんが、深い洞察に満ちた優れた本です。 アジャイルなソフトウェア開発:協力ゲーム, 、アリスター・コックバーン著。

何がそんなに特別なのでしょうか?そうですね、明らかに誰もが「アジャイル」という言葉を聞いたことがあるでしょうし、最近ではほとんどの人がそれを信じているようです。ただし、信じるか信じないかにかかわらず、アジャイル運動が存在する理由の背後には、いくつかの深い原則があります。本書はこれらの原則を正確かつ科学的な方法で明らかにし、明確に説明します。原則のいくつかは次のとおりです (ちなみに、これらは私の言葉であり、アリスターの言葉ではありません)。

  1. チームによるソフトウェア開発で最も難しいのは、全員の頭脳に同じ理解を持たせることです。私たちは、有形の世界では目に見えない、巨大で精巧で複雑なシステムを構築しています。より多くの人々の脳を集めてより深い理解を共有することができればできるほど、チームはより効果的にソフトウェア開発を行うことができます。 これが、ペア プログラミングが理にかなっている根本的な理由です。ほとんどの人はこれを無視しますが (私も最初はそうしました)、この原則を念頭に置いて、もう一度試してみることを強くお勧めします。あなたが構築したばかりのサブシステムを深く理解している 2 人が結果的に得られます...これほど深い情報をこれほど迅速に伝達できる方法は他にありません。それはヴァルカン人の精神が融合したようなものです。
  2. 深い理解をすぐに伝えるために、必ずしも言葉が必要なわけではありません。そして当然の結果:言葉が多すぎると、聞き手/読み手のキャパシティを超えてしまい、意図した理解の伝達が行われなくなります。子どもたちは「没頭」し「吸収」することで言語を話す方法を学ぶと考えてください。言語だけでなく...彼は、床に電車を置いて遊んでいる子供たちの例を挙げました。まったくやったことのない別の子供がやって来ます 見た 前の電車で…しかし、他の子供たちを見て、彼はゲームの要点を理解し、すぐにプレイしました。これは人間の間では常に起こります。このことと、言葉が多すぎるという結果は、古い「ウォーターフォール」の時代に 700 ページの詳細な要件仕様を書こうとすることがいかに間違った方向に向かっていたかを理解するのに役立ちます。

他にもたくさんあります。もう黙りますが、この本は本当にお勧めです!

マスターズ・オブ・ドゥーム。 自分の職業に対するモチベーションと愛情については、次のとおりです。この本で説明されているもの以上のものはありません。本当に感動的な物語です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top