Quel est le livre le plus influent que chaque programmeur devrait lire? [fermé]

si vous pouviez remonter le temps et vous dire de lire un livre spécifique au début de votre carrière en tant que développeur, quel livre serait-il?

Je m'attends à ce que cette liste soit variée et couvre un large éventail de choses.

pour rechercher: utilisez la case de recherche dans le coin supérieur droit. Pour rechercher les réponses à la question actuelle, utilisez inquestion:this . Par exemple:

inquestion:this "Code Complete"
1439
demandé sur Robert Harvey 2008-08-05 03:50:22

30 réponses

  • Code complet (2e édition) par Steve McConnell
  • The Pragmatic Programmer
  • Structure et interprétation des programmes D'ordinateur
  • Le Langage de Programmation C par Kernighan et Ritchie
  • Introduction aux algorithmes par Cormen, Leiserson, Rivest & Stein
  • Design Patterns par la " bande des Quatre
  • Refactoring: l'Amélioration de la Conception de Code Existant
  • The Mythical Man Month
  • The Art of Computer Programming by Donald Knuth
  • compilateurs: principes, Techniques et outils par Alfred V. Aho, Ravi Sethi et Jeffrey D. Ullman
  • Gödel, Escher, Bach by Douglas Hofstadter
  • Code Propre: Un Manuel de Logiciel Agile de l'Artisanat par Robert C. Martin,
  • Effective C++
  • Plus Efficace C++
  • CODE par Charles Petzold
  • Perles de programmation de Jon Bentley
  • Travailler Efficacement avec les Legacy Code par Michael C. Plumes
  • Peopleware par Demarco et Lister
  • codeurs au travail par Peter Seibel
  • Vous plaisantez, M. Feynman!
  • Effective Java 2e édition
  • Modèles d'Architecture Enterprise Application par Martin Fowler
  • Le Petit Intrigant
  • Le Schéma Assaisonné
  • Pourquoi (Poignant) Guide de Ruby
  • les détenus dirigent L'asile: pourquoi les produits de haute technologie nous rendent fous et comment restaurer la santé mentale
  • L'Art de la programmation Unix
  • développement piloté par des essais: par exemple par Kent Beck
  • pratiques D'un développeur Agile
  • Don't Make Me Think
  • Développement Agile de Logiciels, Principes, Modèles et Pratiques par Robert C. Martin,
  • Domain Driven Dessins par Eric Evans
  • La Conception des Choses de tous les jours par Donald Norman
  • Modern C++ Design by Andrei Alexandrescu
  • Meilleur Logiciel que j'ai Écrit par Joel Spolsky
  • La Pratique de la Programmation par Kernighan et le Brochet
  • Pragmatique de la Pensée et de l'Apprentissage: restructurer le Wetware par Andy Hunt
  • Logiciel Estimation: Démystifier l'Art Noir par Steve McConnel
  • La passion Programmeur (Mon Travail est Allé À l'Inde) par Chad Fowler
  • Hackers: Heroes of the Computer Revolution
  • Algorithmes + Structures De Données = Programmes
  • Écrit Solide Code
  • JavaScript - Les Bonnes Parties
  • Getting Real par 37 Signaux
  • fondements de la programmation par Karl Seguin
  • infographie: les Principes et la Pratique en C (2e Édition)
  • penser en Java par Bruce Eckel
  • Les Éléments des Systèmes de Calcul
  • Refactoring de Modèles par Joshua Kerievsky
  • des Systèmes d'Exploitation Modernes par Andrew S. Tanenbaum
  • La Annoté De Turing
  • les choses qui nous rendent intelligents par Donald Norman
  • L'Intemporel Manière de construire la par Christopher Alexander
  • the Deadline: A Novel About Project Management par Tom DeMarco
  • Le Langage de Programmation C++ (3e édition) par Stroustrup
  • Modèles d'Architecture Enterprise Application
  • les Systèmes Informatiques - Un Programmeur Perspectives
  • Agile Principes, Modèles et Pratiques en C# par Robert C. Martin,
  • logiciel orienté objet en croissance, guidé par des Tests
  • Cadre des lignes Directrices de Conception par Brad Abrams
  • Objet de Pensée par le Dr David West
  • Programmation Avancée dans le UNIX Environment par W. Richard Stevens
  • les Pirates et les Peintres: les Grandes Idées à partir de l'Âge de l'Ordinateur
  • The Soul of a New Machine by Tracy Kidder
  • CLR via c# by Jeffrey Richter
  • L'Intemporel Manière de construire la par Christopher Alexander
  • Patrons de Conception en C# par Steve Metsker
  • Alice au pays des Merveilles de Lewis Carol
  • le Zen et l'Art de l'Entretien des motocyclettes par Robert M. Pirsig
  • à propos de Face-the Essentials of Interaction Design
  • Vient Ici tout le monde: Le Pouvoir d'Organiser Sans organisation par Clay Shirky
  • Le Tao de la Programmation
  • la beauté computationnelle de la Nature
  • Écrit Solide Code par Steve Maguire
  • Philippe et Alex du Guide de la Publication Web
  • l'Analyse Orientée Objet et Design avec des Applications par Grady Booch
  • Effective Java de Joshua Bloch
  • calculabilité par N. J. Cutland
  • maîtres d'œuvre de la Programmation
  • The Tao Te Ching
  • La Productivité Du Programmeur
  • l'Art de La Tromperie , par Kevin Mitnick
  • La Carrière De Programmeur: Guerilla Tactiques pour un Monde Imparfait par Christopher Duncan
  • Paradigmes de l'Intelligence Artificielle Programmation: études de Cas en Common Lisp
  • Masters of Doom
  • Pragmatique de Tests Unitaires en C# avec NUnit par Andy Hunt et Dave Thomas avec Matt Hargett
  • Comment le Résoudre par George Polya
  • L'Alchimiste de Paulo Coelho
  • Smalltalk-80: La Langue et sa mise en Œuvre
  • writing Secure Code (2ème Édition) par Michael Howard
  • Introduction à la programmation fonctionnelle par Philip Wadler et Richard Bird
  • Pas De Bugs! de David Thielen
  • Rework par Jason Freid et DHH
  • JUnit dans l'Action
1746
répondu random 2012-02-21 21:02:44

K&R

@Juan: je connais Juan, je sais - mais il y a des choses qui ne peuvent être apprises qu'en se mettant réellement à la tâche. Parler dans des idéaux abstraits toute la journée fait simplement de vous un universitaire. C'est dans l'application de l'abstrait que nous trouvons vraiment la raison de leur existence. : P

@Keith: grande mention de" les détenus dirigent l'asile " par Alan Cooper - un révélateur pour certain, tout développeur qui a travaillé avec moi depuis que j'ai lu ce livre m'a entendu mentionner les idées qu'il prône. +1

9
répondu Jason Bunting 2008-08-21 20:06:37

Discrete Mathematics For Computer Scientists http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Mathématiques Discrètes Pour l'Informatique scientifique par J. K. Grappe.

bien que cela ne vous enseigne pas la programmation, il vous enseigne les mathématiques fondamentales que chaque programmeur devrait savoir. Vous vous souvenez peut ce choses de l'université, mais vraiment, faire logique prédicate va améliorer vos compétences de programmation, vous devez apprendre la théorie des ensembles Si vous voulez programmer en utilisant des collections.

Il y a vraiment beaucoup d'informations intéressantes ici qui peuvent vous faire réfléchir sur des problèmes de différentes manières. C'est pratique de l'avoir, juste de temps en temps pour apprendre quelque chose de nouveau.

9
répondu Tarski 2008-10-14 12:04:58

Systemantics: Comment les Systèmes fonctionnent et Surtout Comment Ils Échouent . L'habituer à bas prix. Mais vous n'aurez peut-être pas l'humour tant que vous n'aurez pas travaillé sur quelques projets ratés.

La beauté de l'ouvrage, l'année de copyright.

probablement la loi la plus profonde présentée dans le livre:

L'Échec Fondamental en Mode Théorème (F. F. T.): systèmes Complexes fonctionnent généralement en mode de défaillance.

l'idée étant qu'il y a des pièces défectueuses dans un logiciel donné qui sont masquées par des défaillances dans d'autres pièces ou par des validations dans d'autres pièces. Voir un exemple réel à la Therac-25 radiation machine , dont les défauts de logiciel ont été masqués par des défauts de matériel. Lorsque les défauts matériels ont été retirés, la condition de course logicielle qui avait passé inaperçue toutes ces années a entraîné la machine tuant 3 personnes.

9
répondu Nicholas Piasecki 2008-11-19 06:04:22

L'un de mes favoris personnels est Hacker's Delight , parce que c'était aussi amusant à lire que c'était éducatif.

j'espère que la deuxième édition sortira bientôt!

9
répondu tr9sh 2009-06-07 17:38:52

Extreme Programming Explained: Embrace Change par Kent Beck. Bien que je ne prône pas une approche hardcore XP-or-the-highway sur le développement de logiciels, j'aurais aimé avoir été introduit aux principes de ce livre beaucoup plus tôt dans ma carrière. Les tests unitaires, le remaniement, la simplicité, l'intégration continue, le coût/le temps/la qualité/la portée - ceux-ci ont changé la façon dont j'ai regardé le développement. Avant Agile, il s'agissait du Débogueur et de la peur des requêtes de changement. Après Agile, ceux les démons n'ont pas de métier à tisser comme les grands.

9
répondu TrueWill 2009-09-18 03:34:36

Types and Programming Languages par Benjamin C. Pierce pour une compréhension approfondie des fondements des langages de programmation.

9
répondu Dave Clarke 2010-05-26 12:01:43

Système de Base de données Concepts de est l'un des meilleurs livres que vous pouvez lire sur la compréhension de la base de données des principes de conception.

alt text

9
répondu Ryan Berger 2010-11-18 19:27:10

la pratique de La programmation. Par Brian W. Kernighan, Rob Pike.

le style montré ici est excellent - le code parle juste pour lui-même, et le livre entier suit le principe du baiser. Personnellement pas ma langue de choix, mais encore influente pour moi.

9
répondu RD1 2011-01-22 19:52:05

Programmation à partir du sol. C'est gratuit sur internet. Ce livre m'a appris AT & T asm. Il est très facile à lire.

alt text

9
répondu ladookie 2011-05-17 04:19:52

Paradigmes de l'Intelligence Artificielle Programmation : Études de Cas en Common Lisp par Peter Norvig

enter image description here

j'ai commencé à le lire parce que je voulais apprendre le Lisp commun. Quand j'étais à mi-chemin, j'ai réalisé que c'était le meilleur livre sur la programmation que j'avais lu jusqu'à présent.

9
répondu Michiel Borkent 2011-12-07 09:09:43

Definitely Software Craftsmanship

alt text http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

ce livre explique beaucoup de choses sur l'ingénierie logicielle, le développement de systèmes. Il est également extrêmement utile de comprendre la différence entre les différents types de développement de produit: web VS shrinkwrap VS IBM Framework. Ce que les gens avaient à l'esprit lorsqu'ils ont conçu modèle en cascade? Lisez ceci et tout ce que nous deviendrons clair (avec un peu de chance)

9
répondu dario minonne 2012-01-30 17:56:07

@Peter Coulton -- vous ne lisez pas Knuth, vous l'étudiez.

pour moi, et mon travail... Purement Fonctionnelle des Structures de Données est idéal pour la réflexion et l'élaboration avec les langages fonctionnels à l'esprit.

8
répondu nlucaroni 2008-08-05 01:25:46

"Le Monde est Plat" par Thomas Friedman.

L'Excellence dans la programmation exige un investissement d'énergie mentale et un dévouement à l'apprentissage continu comparable aux professions de la médecine ou du droit. Il paie une fraction de ce que ces professions paient, et encore moins les salaires versés aux mathématiciens qui entrent dans le secteur des finances. Et les salaires pour code de construction s'érodent parce que c'est une profession qui est relativement facile pour les intelligents et auto-disciplinés dans la plupart des économies d'entrer.

la programmation s'est déjà érodée au point de payer moins que, disons, la plomberie. La plomberie ne peut pas être "délocalisée"."Vous n'avez pas besoin de payer 2395 $Pour assister à la Conférence des plombiers professionnels tous les deux ans pour le privilège de recevoir un ensemble entièrement nouveau de technologies de plomberie qui vous prendra un an pour apprendre.

si vous vivez en Amérique du Nord ou en Europe, sont des jeunes, et sont intelligents, la programmation n'est pas rationnelle de choix de carrière. Les entreprises qui impliquent programmation, absolument. Étudier les affaires, en savoir assez sur la programmation pour affiner votre détecteur BS: brillant. Mais consacrer la part du lion de votre énergie mentale à la maîtrise des bibliothèques, des structures de données et des algorithmes? Cela n'a de sens que si la programmation est plus qu'un choix économique pour vous.

si vous amour la programmation et pour cette raison l'intention d'en faire votre carrière, alors il vous incombe de développer une compréhension aux yeux froids des forces qui sont, et continueront, à en faire une profession de plus en plus difficile dans laquelle faire une vie. "Le monde est plat "ne vous apprendra pas comment nommer vos variables, mais il vous plongera pendant 6 ou 8 heures dans les réalités économiques qui ont déjà arrivé. Si vous pouvez le lire, et ne pas avoir peur, puis sortir et d'acheter du "Code Complet."

8
répondu Larry OBrien 2008-09-16 03:25:30

alt text

cette dernière année, j'ai pris un certain nombre de cours. J'ai lu

the Innovator's Dilemma (disruptive tech)

le mois de L'homme mythique (gestion des logiciels)

franchir le Gouffre (démarrage)

systèmes de gestion de bases de données, LE LIVRE DE LA VACHE

programmation C#, Le Livre de L'autruche

début iPhone Developmen, le livre de pamplemousse

chaque livre était étonnant, mais le dilemme de L'Innovateur par Clayton Christensen (1997!!!), c'est vraiment un livre fantastique, et ça m'a fait vraiment penser au logiciel moderne du monde. Le défi abordé est la technologie de rupture, et comment les entreprises et les entreprises non techniques sont toujours perturbées par la nouvelle technologie. Il donne une nouvelle perspective en pensant à Google, probablement la plus grande entreprise "web". Pourquoi ont-ils leurs mains dans tout? C'est parce qu'ils ne veulent pas que leur position soit perturbée par quelque chose de nouveau. L'aperçu sur google est beaucoup à avoir l'idée. Le lire!

8
répondu TahoeWolverine 2017-02-08 14:13:47

hackers, de Steven Levy.

la personnalité et le mode de vie doivent venir en premier. Tout le reste peut être appris.

8
répondu tsilb 2009-11-26 20:04:24
8
répondu agupta666 2017-02-08 14:29:15

le langage Python a été très influent pour moi, j'aurais aimé lire ce livre il y a des années. La beauté et la simplicité du langage Python ont vraiment affecté la façon dont j'ai écrit du code dans d'autres langues.

alt text alt text

8
répondu Matthew J Morrison 2010-10-24 15:01:53

The New Turing Omnibus http://ecx.images-amazon.com/images/I/51HlYd-%2BRwL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA300_SH20_OU01_.jpg

très bon livre. A un haut niveau goût des domaines les plus importants de l'informatique. Oui, CS != programmation, mais cela reste utile à chaque programmeur.

8
répondu Derrick 2011-06-20 21:23:13

The Mythical Man-Month by Fred Brooks http://en.wikipedia.org/wiki/The_Mythical_Man-Month

7
répondu Loren Charnley 2008-08-21 20:02:07

je pense que" L'Art de la programmation Unix " est un excellent livre, par un excellent hacker/esprit brillant comme Eric S. Raymond, qui tente de nous faire comprendre quelques principes de la conception de logiciels (simplicité principalement). Ce livre est un must pour toute programmation qui est sur le point de démarrer un projet sous Unix plate-forme.

7
répondu lurks 2008-08-27 01:42:43

bien que je convienne que beaucoup des livres ci-dessus sont des lectures obligatoires (programmeur pragmatique, homme-mois mythique, Art de la programmation informatique, et SICP venu à l'esprit immédiatement), je voudrais aller dans une direction légèrement différente et recommande une Discipline de programmation par Edsger Dijkstra. Même s'il a 32 ans, l'accent mis sur la "conception pour la vérifiabilité" est très pertinent (même si "vérifiabilité" signifie "épreuve" plutôt que "essais unitaires").

7
répondu joel.neely 2008-08-28 23:47:12

Martin Fowler Refactoring: l'Amélioration de la Conception de Code Existant a déjà été répertoriés. Mais je vais expliquer en détail pourquoi cela m'a affecté.

l'essence du livre entier est sur le code de structuration de sorte qu'il est plus simple à lire et à comprendre par humains . Il m'apprend fortement que le code que j'écris est destiné à mes collègues et successeurs à consommer et éventuellement apprendre quelque chose bon . Il m'inspire à consciemment programme d'une manière qui laisse les gens louant mon nom, et ne me maudissant pas à la damnation pour toute l'éternité .

7
répondu icelava 2008-09-17 07:55:51

alt text http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

c++ comment programmer c'est bon pour le débutant.C'est un excellent livre qui complet avec 1500 pages.

7
répondu Krirk 2008-09-23 05:48:04

voici un excellent livre qui n'est pas aussi applaudi, mais est plein de perspicacité profonde: Agile Software Development: the Cooperative Game , par Alistair Cockburn.

Qu'est-ce qu'il a de si spécial? Eh bien, clairement tout le monde a entendu le terme "Agile", et il semble que la plupart sont des croyants de nos jours. Que vous le croyiez ou non, il y a des principes profonds derrière l'existence du mouvement Agile. Ce livre découvre et articule ces principes précis, de manière scientifique. Certains de ces principes sont (btw, ce sont mes mots, pas Alistair):

  1. le plus difficile dans le développement de logiciels d'équipe est d'amener le cerveau de tout le monde à avoir la même compréhension. Nous construisons des systèmes énormes, élaborés et complexes qui sont invisibles dans le monde tangible. Plus vous réussirez à obtenir plus de cerveaux pour partager une meilleure compréhension, plus votre équipe sera efficace dans le développement de logiciels. C'est la raison sous-jacente pour laquelle la programmation par paire a du sens. La plupart des gens le rejettent (et je l'ai fait aussi au départ), mais avec ce principe à l'esprit, je recommande fortement que vous lui donner une autre chance. Vous vous retrouvez avec deux personnes qui comprennent profondément le sous-système que vous venez de construire ... il n'y a pas beaucoup d'autres moyens d'obtenir un tel transfert d'information si rapidement. C'est comme un Vulcain esprit fondre.
  2. Vous n'avez pas toujours besoin de mots pour communiquer profonde comprendre rapidement. Et un corollaire: trop de mots, et vous dépassez la capacité de l'auditeur / lecteur, ce qui signifie que le transfert de compréhension que vous tentez ne se produit pas. Considérez que les enfants apprennent à parler la langue en étant "immergés" et "absorbants". Pas seulement de la langue ... il donne l'exemple d'enfants jouant avec des trains sur le sol. Le long vient un autre enfant qui n'a jamais même vu un train avant ... mais en regardant les autres enfants, il ramasse les l'essentiel du jeu et de la joue droite. Ça arrive tout le temps entre humains. Cela ainsi que le corollaire sur trop de mots vous aide à voir à quel point il était malavisé dans l'ancienne "chute d'eau" jours pour essayer d'écrire 700 page spécifications des exigences détaillées.

il y a tellement plus là-dedans aussi. Je vais la fermer maintenant, mais je recommande fortement ce livre!

7
répondu Charlie Flowers 2009-03-20 02:45:42

Masters of doom. autant que la motivation et l'amour pour votre profession vont: il ne sera pas mieux que ce qui a été décrit dans ce livre, histoire véritablement inspirante!

7
répondu Jasper Bekkers 2009-07-04 09:10:59