Qual è il libro più influente che ogni programmatore dovrebbe leggere?[Chiuso]

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

  •  08-06-2019
  •  | 
  •  

Domanda

Se potessi tornare indietro nel tempo e dirti di leggere un libro specifico all'inizio della tua carriera di sviluppatore, quale libro sarebbe?

Mi aspetto che questo elenco sia vario e copra una vasta gamma di cose.

Cercare: Utilizza la casella di ricerca nell'angolo in alto a destra.Per cercare le risposte alla domanda corrente, utilizzare inquestion:this.Per esempio:

inquestion:this "Code Complete"

Nessuna soluzione corretta

Altri suggerimenti

  • Codice completato (2a edizione) di Steve McConnell
  • Il programmatore pragmatico
  • Struttura e interpretazione dei programmi informatici
  • Il linguaggio di programmazione C di Kernighan e Ritchie
  • Introduzione agli algoritmi di Cormen, Leiserson, Rivest & Stein
  • Modelli di progettazione dalla Banda dei Quattro
  • Refactoring:Migliorare la progettazione del codice esistente
  • Il mitico mese dell'uomo
  • L'arte della programmazione informatica di Donald Knut
  • Compilatori:Principi, tecniche e strumenti di Alfred V.Aho, Ravi Sethi e Jeffrey D.Ullmann
  • Gödel, Escher, Bach di Douglas Hofstadter
  • Codice pulito:Un manuale sull'artigianato del software Agile di Robert C.Martino
  • C++ efficace
  • C++ più efficace
  • CODICE di Charles Petzold
  • Perle di programmazione di Jon Bentley
  • Lavorare in modo efficace con il codice legacy di Michael C.Piume
  • Articoli per la gente di Demarco e Lister
  • Codificatori al lavoro di Peter Seibel
  • Sicuramente sta scherzando, signor.Feynmann!
  • Java efficace 2a edizione
  • Modelli di architettura delle applicazioni aziendali di Martin Fowler
  • Il piccolo intrigatore
  • L'intrigante esperto
  • Perché la (toccante) guida a Ruby
  • I detenuti gestiscono il manicomio:Perché i prodotti high tech ci fanno impazzire e come ripristinare la sanità mentale
  • L'arte della programmazione Unix
  • Sviluppo basato sui test:Per esempio di Kent Beck
  • Pratiche di uno sviluppatore Agile
  • Non farmi pensare
  • Sviluppo software agile, principi, modelli e pratiche di Robert C.Martino
  • Progettazioni guidate dal dominio di Eric Evans
  • Il design delle cose quotidiane di Donald Norman
  • Design C++ moderno di Andrej Alexandrescu
  • Miglior scrittura di software I di Joel Spolsky
  • La pratica della programmazione di Kernighan e Pike
  • Pensiero pragmatico e apprendimento:Rifattorizza il tuo Wetware di Andy Hunt
  • Stima del software:Demistificare l'arte nera di Steve McConnel
  • Il programmatore appassionato (il mio lavoro è andato in India) di Chad Fowler
  • Hacker:Eroi della rivoluzione informatica
  • Algoritmi + Strutture dati = Programmi
  • Scrittura di codice solido
  • JavaScript: le parti migliori
  • Diventare reale da 37 segnali
  • Fondamenti di programmazione di Karl Seguin
  • Grafica computerizzata:Principi e pratica in C (2a edizione)
  • Pensare in Java di Bruce Eckel
  • Gli elementi dei sistemi informatici
  • Refactoring in modelli di Giosuè Kerievskij
  • Sistemi operativi moderni di Andrea S.Tanenbaum
  • Il Turing commentato
  • Cose che ci rendono intelligenti di Donald Norman
  • Il modo di costruire senza tempo di Christopher Alexander
  • La scadenza:Un romanzo sulla gestione dei progetti di Tom DeMarco
  • Il linguaggio di programmazione C++ (3a edizione) di Stroustrup
  • Modelli di architettura delle applicazioni aziendali
  • Sistemi informatici: la prospettiva di un programmatore
  • Principi, modelli e pratiche Agile in C# di Robert C.Martino
  • Crescita del software orientato agli oggetti, guidato da Test
  • Linee guida per la progettazione della struttura di Brad Abrams
  • Pensiero oggettivo dal Dott.Davide Ovest
  • Programmazione avanzata in ambiente UNIX di W.Riccardo Stevens
  • Hacker e pittori:Grandi idee dall'era dei computer
  • L'anima di una nuova macchina di Tracy Kidder
  • CLR tramite C# di Jeffrey Richter
  • Il modo di costruire senza tempo di Christopher Alexander
  • Modelli di progettazione in C# di Steve Metsker
  • Alice nel paese delle meraviglie di Lewis Carol
  • Lo Zen e l'arte della manutenzione della motocicletta di Robert M.Pirsig
  • Informazioni sul volto: gli elementi essenziali dell'Interaction Design
  • Arrivano tutti:Il potere di organizzare senza organizzazioni di Clay Shirky
  • Il Tao della programmazione
  • Bellezza computazionale della natura
  • Scrittura di codice solido di Steve Maguire
  • Guida di Philip e Alex alla pubblicazione sul Web
  • Analisi orientata agli oggetti e progettazione con applicazioni di Grady Booch
  • Java efficace di Joshua Bloch
  • Calcolabilità di N.J.Cutlandia
  • Menti della programmazione
  • Il Tao Te Ching
  • Il programmatore produttivo
  • L'arte dell'inganno di Kevin Mitnick
  • Il programmatore di carriera:Tattiche di guerriglia per un mondo imperfetto di Christopher Duncan
  • Paradigmi della programmazione dell'intelligenza artificiale:Casi di studio in Common Lisp
  • Signori del Destino
  • Unit test pragmatico in C# con NUnit di Andy Hunt e Dave Thomas con Matt Hargett
  • Come risolverlo di George Polya
  • L'alchimista di Paulo Coelho
  • Chiacchiere-80:Il linguaggio e la sua implementazione
  • Scrittura di codice sicuro (2a edizione) di Michael Howard
  • Introduzione alla Programmazione Funzionale di Philip Wadler e Richard Bird
  • Nessun bug! di David Thielen
  • Rielaborazione di Jason Freid e DHH
  • JUnit in azione

K&R

@Juan:Conosco Juan, lo so, ma ci sono alcune cose che possono essere apprese solo mettendosi effettivamente al lavoro da svolgere.Parlare di ideali astratti tutto il giorno ti trasforma semplicemente in un accademico.È nell'applicazione dell'astratto che riusciamo veramente a capire la ragione della loro esistenza.:P

@Keith:Ottima menzione di "The Inmates are Running the Asylum" di Alan Cooper: sicuramente mi ha aperto gli occhi, qualsiasi sviluppatore che abbia lavorato con me da quando ho letto quel libro mi ha sentito menzionare le idee che sposa.+1

Matematica discreta per informatici http://ecx.images-amazon.com/images/I/51HCJ5R42KL._SL500_BO2,204,203,200_AA219_PIsitb-sticker-dp-arrow,TopRight,-24,-23_SH20_OU02_.jpg

Matematica discreta per informatici di J.K.Travatura.

Anche se questo non ti insegna a programmare, ti insegna la matematica fondamentale che ogni programmatore dovrebbe conoscere.Potresti ricordare queste cose dall'università, ma in realtà, fare la logica dei predicati migliorerà le tue capacità di programmazione, devi imparare la teoria degli insiemi se vuoi programmare utilizzando le raccolte.

Ci sono davvero molte informazioni interessanti qui che possono farti pensare ai problemi in modi diversi.È comodo da avere, da riprendere di tanto in tanto per imparare qualcosa di nuovo.

Sistematica:Come funzionano i sistemi e soprattutto come falliscono.Usatelo a poco prezzo.Ma potresti non capire l'umorismo finché non avrai lavorato su alcuni progetti falliti.

La bellezza del libro è l'anno del copyright.

Probabilmente la "legge" più profonda presentata nel libro:

Il Teorema Fondamentale della Modalità di Guasto (F.F.T.):I sistemi complessi di solito funzionano in modalità di guasto.

L'idea è che ci sono parti difettose in un dato pezzo di software che sono mascherate da fallimenti in altre parti o da convalide in altre parti.Guarda un esempio del mondo reale su Macchina per radiazioni Therac-25, i cui difetti software erano mascherati da dispositivi di sicurezza hardware.Quando i dispositivi di sicurezza hardware furono rimossi, la condizione di competizione del software che non era stata rilevata in tutti quegli anni fece sì che la macchina uccidesse 3 persone.

Uno dei miei preferiti personali è La gioia degli hacker, perché è stato tanto divertente da leggere quanto educativo.

Spero che esca presto la seconda edizione!

Spiegazione della programmazione estrema:Abbraccia il cambiamento di Kent Beck.Anche se non sostengo un approccio hardcore allo sviluppo del software, vorrei essere stato introdotto ai principi di questo libro molto prima nella mia carriera.Test unitari, refactoring, semplicità, integrazione continua, costi/tempi/qualità/ambito: questi hanno cambiato il modo in cui guardavo allo sviluppo.Prima di Agile, tutto ruotava attorno al debugger e alla paura delle richieste di modifica.Dopo Agile, quei demoni non erano così grandi.

Tipi e linguaggi di programmazione di Benjamin C Pierce per una comprensione approfondita delle basi dei linguaggi di programmazione.

Concetti del sistema di database è uno dei migliori libri che puoi leggere sulla comprensione dei principi di progettazione di un database.

alt text

La pratica della programmazione.Di Brian W.Kernighan, Rob Pike.

Lo stile mostrato qui è eccellente: il codice parla da solo e l'intero libro segue il principio KISS.Personalmente non è la mia lingua preferita, ma per me è comunque influente.

Programmazione da zero. È gratuito su Internet.Questo libro mi ha insegnato AT&T asm.È molto facile da leggere.

alt text

Paradigmi della programmazione dell'intelligenza artificiale:Casi di studio in Common Lisp di Peter Norvig

enter image description here

Ho iniziato a leggerlo perché volevo imparare Common Lisp.Quando ero a metà strada, mi sono reso conto che questo era il miglior libro sulla programmazione che avessi letto finora.

Sicuramente artigianato del software

testo alternativo http://ecx.images-amazon.com/images/I/5186JKTDVWL._SL500_AA240_.jpg

Questo libro spiega molte cose sull'ingegneria del software e sullo sviluppo di sistemi.È anche estremamente utile comprendere la differenza tra i diversi tipi di sviluppo del prodotto:web VS termoretraibile VS framework IBM.Cosa avevano in mente le persone quando hanno concepito il modello a cascata?Leggi questo e tutto ti sarà chiaro (si spera)

@Peter Coulton: non leggi Knuth, lo studi.

Per me e per il mio lavoro... Strutture dati puramente funzionali è ottimo per pensare e sviluppare pensando ai linguaggi funzionali.

"Il mondo è piatto" di Thomas Friedman.

L'eccellenza nella programmazione richiede un investimento di energia mentale e una dedizione all'apprendimento continuo paragonabile alle professioni della medicina o del diritto.Rega una frazione di quello che pagano quelle professioni, molto meno degli stipendi pagati agli esperti di matematica che si dirigono nel settore finanziario.E salario per costruzione del codice si stanno erodendo perché è una professione che lo è relativamente Nella maggior parte delle economie è facile entrare per le persone intelligenti e autodisciplinate.

La programmazione è già stata erosa al punto da pagare meno, ad esempio, degli impianti idraulici.L'impianto idraulico non può essere "offshored". Non è necessario pagare $ 2395 per partecipare alla conferenza dell'idraulica professionale ogni due anni per il privilegio di ricevere una serie completamente nuova di tecnologie idrauliche che ti impiegheranno un anno per imparare.

Se vivi in ​​Nord America o in Europa, sei giovane e intelligente, la programmazione non è una scelta di carriera razionale.Le imprese che coinvolgere programmazione, assolutamente.Studia affari, conosci abbastanza programmazione per affinare il tuo rilevatore di stronzate:brillante.Ma dedicare la maggior parte della tua energia mentale alla padronanza di librerie, strutture dati e algoritmi?Ciò ha senso solo se per te la programmazione è qualcosa di più di una scelta economica.

Se tu Amore programmazione e per questo motivo intendi farne la tua carriera, allora ti conviene sviluppare una comprensione fredda delle forze che stanno, e continueranno, a renderla una professione sempre più difficile con cui guadagnarsi da vivere."Il mondo è piatto" non ti insegnerà come chiamare le tue variabili, ma ti immergerà per 6 o 8 ore in realtà economiche che hanno Già arrivato.Se riesci a leggerlo, senza spaventarti, Poi esci e acquista "Codice completo".

alt text

L'anno scorso ho seguito diversi corsi.Leggo

Il dilemma dell’innovatore (tecnologia dirompente)
Il mitico mese dell'uomo (software di gestione)
Attraversare il baratro (avvio)
Sistemi di gestione di database, il libro COW
Programmazione in C#, Il libro dello STRUZZO
Inizio dello sviluppo di iPhone, il libro POMPELMO

Ogni libro era fantastico, ma Il dilemma dell'innovatore di Clayton Christensen (1997!!!) è davvero un libro fantastico e mi ha fatto davvero pensare al mondo del software moderno.La sfida affrontata riguarda la tecnologia dirompente e il modo in cui le aziende produttrici di unità disco e le aziende non tecniche vengono sempre sconvolte da una nuova tecnologia rivoluzionaria.Offre una nuova prospettiva quando si pensa a Google, probabilmente la più grande azienda "web".Perché hanno le mani in TUTTO?È perché non vogliono avere la loro posizione interrotto da qualcosa di nuovo.L'anteprima su Google è sufficiente per rendere l'idea.Leggilo!

hacker, di Steven Levy.

La personalità e lo stile di vita devono venire prima.Tutto il resto si può imparare.

Il linguaggio Python è stato molto influente per me, vorrei aver letto questi libri anni fa.La bellezza e la semplicità del linguaggio Python hanno influenzato molto il modo in cui ho scritto il codice in altri linguaggi.

alt text alt text

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

Davvero un buon libroHa una conoscenza di alto livello delle aree più importanti dell'informatica.Sì, CS!= programmazione, ma è comunque utile a ogni programmatore.

Il mitico mese dell'uomo di Fred Brookshttp://en.wikipedia.org/wiki/The_Mythical_Man-Month

Penso che "The Art of Unix Programming" sia un libro eccellente, scritto da un eccellente hacker/mente brillante come Eric S.Raymond, che cerca di farci comprendere alcuni principi della progettazione del software (soprattutto la semplicità).Questo libro è un must per ogni programmatore che sta per iniziare un progetto su piattaforma Unix.

Anche se sono d'accordo sul fatto che molti dei libri di cui sopra siano da leggere (mi vengono in mente Pragmatic Programmer, Mythical Man-Month, Art of Computer Programming e SICP), vorrei andare in una direzione leggermente diversa e raccomandare Una disciplina di programmazione di Edsger Dijkstra.Anche se ha 32 anni, l'enfasi sulla "progettazione per la verificabilità" è molto rilevante (anche se "verificabilità" significa "prova" invece di "test unitari").

Di Martin Fowler Refactoring:Migliorare la progettazione del codice esistente è già stato elencato.Ma descriverò in dettaglio il motivo per cui mi ha influenzato.

L'essenza dell'intero libro riguarda la strutturazione del codice in modo che sia più semplice da leggere e comprendere umani.Mi insegna fortemente che il codice che scrivo è pensato per essere utilizzato dai miei colleghi e successori e possibilmente imparare qualcosa Bene fuori di esso.Mi ispira a farlo consapevolmente programma in un modo che permetta alle persone di lodare il mio nome e non di maledirmi fino alla dannazione per tutta l'eternità.

testo alternativo http://ecx.images-amazon.com/images/I/61dECNkdnTL._SL500_AA240_.jpg

C++ Come programmare Va bene per i principianti. Questo è un libro eccellente, completo di 1500 pagine.

Ecco un libro eccellente che non è stato così ampiamente applaudito, ma è pieno di intuizioni profonde: Sviluppo software agile:Il gioco cooperativo, di Alistair Cockburn.

Cosa c'è di così speciale?Bene, chiaramente tutti hanno sentito il termine "Agile" e sembra che la maggior parte ci creda oggigiorno.Che tu ci creda o no, però, ci sono alcuni principi profondi dietro l’esistenza del movimento Agile.Questo libro svela e articola questi principi in modo preciso e scientifico.Alcuni dei principi sono (a proposito, queste sono parole mie, non di Alistair):

  1. La cosa più difficile nello sviluppo di software in team è convincere i cervelli di tutti ad avere la stessa comprensione.Stiamo costruendo sistemi enormi, elaborati e complessi che sono invisibili nel mondo tangibile.Quanto più sarai bravo a convincere il cervello di più persone a condividere una comprensione più profonda, tanto più efficace sarà il tuo team nello sviluppo del software. Questa è la ragione di fondo per cui la programmazione in coppia ha senso.La maggior parte delle persone lo respinge (e l'ho fatto anch'io inizialmente), ma con questo principio in mente ti consiglio vivamente di fare un altro tentativo.Ti ritroverai con DUE persone che comprendono profondamente il sottosistema che hai appena costruito...non ci sono molti altri modi per ottenere un trasferimento di informazioni così profondo e così rapido.È come una fusione mentale vulcaniana.
  2. Non sempre sono necessarie le parole per comunicare rapidamente una comprensione profonda.E un corollario:troppe parole e superi la capacità dell'ascoltatore/lettore, il che significa che il trasferimento di comprensione che stai tentando non avviene.Considera che i bambini imparano a parlare la lingua essendo "immersi" e "assorbenti".E non solo la lingua...fa l'esempio di alcuni bambini che giocano con i trenini sul pavimento.Arriva un altro ragazzo che non l'ha mai nemmeno fatto VISTO un treno prima...ma guardando gli altri bambini, coglie l'essenza del gioco e gioca subito.Questo accade continuamente tra gli esseri umani.Questo, insieme al corollario di troppe parole, ti aiuta a vedere quanto fosse fuorviante ai vecchi tempi della "cascata" provare a scrivere specifiche dettagliate dei requisiti di 700 pagine.

C'è anche molto di più lì dentro.Adesso sto zitto, ma consiglio vivamente questo libro!

Signori del destino. Per quanto riguarda la motivazione e l'amore per la propria professione:non c'è niente di meglio di quanto descritto in questo libro, una storia davvero stimolante!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top