The Art of Computer Programming - Leggere o non leggere? [chiuso]

62

Ci sono molti libri sulla programmazione, e sembra che Code Complete sia in cima alla lista di "libri di programmazione da leggere" della maggior parte delle persone, ma che dire di The Art of Computer Programming di Donald Knuth? Sono una persona impegnata, tra il lavoro e una giovane famiglia non ho un sacco di tempo libero, quindi devo essere schizzinoso su come lo uso.

Mi chiedo - nessuno ha letto qui "TAOCP"? Se è così, vale la pena dedicare del tempo a leggere o qualche altro libro o più di programmazione in-the-side come progetti per animali domestici o contribuire all'open source, utilizzare meglio il mio tempo in termini di sviluppo professionale?

DISCLAIMER - Per quelli di voi che praticano magliette "Knuth is my homeboy", non fraintendetemi - voglio leggerlo, ma mi chiedo solo se dovrebbe essere proprio in cima alla mia elenco di priorità o se qualcos'altro dovrebbe venire prima.

    
posta Zannjaminderson 05.11.2010 - 21:27
fonte

15 risposte

70

TAOCP è un riferimento assolutamente inestimabile per capire come funzionano le strutture dati e gli algoritmi che utilizziamo ogni giorno e perché il lavoro, ma impegnarsi a leggerlo cover-to-cover sarebbe un investimento straordinario del tuo tempo.

Come un padre di famiglia a un altro, passa il tempo con i tuoi figli.

    
risposta data 05.11.2010 - 21:31
fonte
22

Sostituisci "l'enciclopedia" nella tua domanda per ogni riferimento a TAOCP, e penso che la risposta dovrebbe essere ovvia. Perché sotto molti aspetti, questo è TAOCP.

C'è una storia (forse apocrifa) su Steve Jobs che incontra Knuth. La prima cosa che Jobs gli disse fu: "È un piacere conoscerti, dottor Knuth, ho letto tutte le tue opere!". La risposta di Knuth era "Sei pieno di merda": link

    
risposta data 05.11.2010 - 21:41
fonte
19

No, non dovrebbe essere nella parte superiore del tuo elenco di priorità. Ho un set completo e NON ho letto tutto. L'ho usato (finora) come un buon riferimento su alcuni problemi (è stato inestimabile per la mia comprensione della casualità e il test di generatori casuali, per esempio). Ogni volta che viene fuori un argomento CS su cui non ho un valido controllo, tendo ad afferrare il bit rilevante di TAOCP come un buon passo nella mia comprensione.

Se decidi di leggerlo, più potere a te, e consiglio vivamente di prenderlo in piccoli pezzi. Non aver paura di saltare e guardare prima ciò che è più interessante.

    
risposta data 05.11.2010 - 22:17
fonte
8

TOACP è una lettura essenziale - ad un certo punto. A seconda di ciò che fai ogni giorno, potrebbe non essere il più urgente.

È uno di quei libri (beh, raccolte di libri) che è buono da leggere all'inizio della tua carriera perché ti dà davvero delle buone intuizioni che normalmente non avresti mai avuto fino a tardi, ma non è essenziale per sopravvivere fino alla tua laurea a quella parte della tua carriera in cui non si limita il codice, si sceglie la casella degli strumenti. Questo è il punto in cui si vuole davvero studiare gli algoritmi, si spera che già comprendiamo un po 'il design della lingua, e abbiamo una comprensione molto ampia di quali strumenti, linguaggi e sistemi sono disponibili e di come ognuno si inserisce nell'ecosistema delle cose che è possibile attingere per un particolare progetto.

In altre parole: è un apprendimento di grandi dimensioni, quindi se sei ossessivo come me lo leggo ora, se non lo fai, va bene rimandarlo finché non inizi a desiderare di salire la scala e diventare una grande immagine ragazzo.

    
risposta data 05.11.2010 - 22:37
fonte
6

Il lavoro seminale di Knuth è il riferimento più popolare che i programmatori intendono leggere, o finire di leggere. Un giorno.

    
risposta data 24.11.2010 - 10:14
fonte
5

Avendo recentemente intrapreso questo compito, posso dire che il modo in cui scrive è molto piacevole ei problemi sono etichettati (secondo la difficoltà) in modo molto appropriato. Ottieni il primo volume e leggi i capitoli 1 e 2 e vedi come ti piace.

    
risposta data 05.11.2010 - 21:37
fonte
5

TAOCP è un ottimo lavoro, ma leggerlo sarebbe un terribile investimento nel tempo per uno sviluppatore di software. Se lo fai, sacrificherai un paio di anni (questo è quanto tempo ci vorrà) del tuo budget di auto-miglioramento professionale per imparare troppo sul troppo poco.

Consiglierei di lavorare su uno o più libri "ultimi" sugli algoritmi, il mio preferito in quest'area è Algorithm Manuale di progettazione di Steven S. Skiena

Quindi, se senti che hai bisogno / vuoi di più muoverti fino al Knuth.

Allo stesso tempo puoi acquistare uno o più volumi di TAOCP, esaminarlo per capire quali aree ci sono coperte da Knuth e tenerlo nella tua biblioteca nel caso in cui tu abbia effettivamente bisogno di alcune informazioni da esso nel tuo giorno- lavoro di oggi. La mia ipotesi istruita è che non lo faresti e questo è un altro motivo per cui non consiglio di provare a leggere. Ma se ti troverai a fare spesso riferimento a questo, allora saprai che vale la pena leggerlo copertinalmente.

    
risposta data 05.11.2010 - 23:02
fonte
3

+10 sul commento famiglia / figli. Cerco di fare la maggior parte delle letture mentre resisto ai voli con gli occhi rossi ai clienti.

Ma ... sì, ne vale davvero la pena. Non c'è alcun motivo per leggere linearmente, invece scremare e scegliere alcuni argomenti di interesse.

    
risposta data 05.11.2010 - 21:40
fonte
3

Sono fermamente nel gruppo di persone che sentono che ogni sviluppatore dovrebbe fare l'investimento per ottenere i libri ad un certo punto (e sta diventando più facile ora che sembra che siano reimposta in brossura ) ma allo stesso modo, avrei anche difficoltà a credere che qualcuno si sedesse e leggesse tutto da una copertina all'altra.

L'approccio migliore per loro - se non hai un pendolarismo per lavorare dove hai tempo libero per sederti e leggere - è leggerne abbastanza da sapere dove trovare le cose e poi leggere un capitolo completo quando mai ti ritrovi a usarli come libri di riferimento per un determinato problema. Con Google e Stack Overflow non è così comune raggiungere i libri di riferimento, ma in alcuni casi potresti scoprire che i libri forniscono alcune indicazioni su cui dovresti inviare un po 'di tempo in più cercando su Internet.

    
risposta data 06.11.2010 - 19:39
fonte
3

Non dimenticare che all'inizio, Knuth voleva scrivere qualcosa su come scrivere un compilatore.

Puoi ottenere molte informazioni sulla rete con wikipedia per esempio, ma se non sei un tipo di ricercatore, leggi il sommario, riceverai soddisfazione.

Puoi ancora ottenere il primo tomo in modo che tu possa leggerlo quando sei annoiato però ...

    
risposta data 26.02.2011 - 13:03
fonte
2

Probabilmente è più importante che tu faccia questi problemi nel libro di quanto tu non lo abbia appena letto. Ciò richiederà molto tempo.

A lui piacciono 4 volumi e 5 fascicoli (qualunque essi siano) quindi completando i libri sarebbero probabilmente migliori di un corso universitario nei fondamenti dell'informatica e ti rendono quasi il miglior programmatore di sempre .

Dato che hai una giovane famiglia, come me, mi hai dato un'idea molto bella. Comprerei i libri uno alla volta e ti insegnerò attraverso i tuoi figli.

    
risposta data 05.11.2010 - 21:33
fonte
1

Se sei curioso, fallo, ma ci vuole un po 'di tempo per digerirlo, quindi devi prenderti il tuo tempo.

Hai un pendolarismo in cui puoi leggere - sarebbe perfetto.

EDIT: potresti trovare questa anteprima di una piccola parte del Volume 4 interessante: link

(nota: postscript compresso)

    
risposta data 05.11.2010 - 21:54
fonte
1

Non è qualcosa che molte persone vorranno sedersi e leggere cover-to-cover, no. È un riferimento incredibilmente inestimabile, ed è certamente bello prenderlo, scegliere una sezione interessante, leggerlo e fare alcuni esercizi. Ma i confronti dell'enciclopedia fatti sopra sono piuttosto azzeccati ... sono grandi, estesi e dettagliati. E alcuni degli "esercizi" sono problemi di ricerca che potrebbero richiedere anni per risolvere.

Se vuoi solo una migliore conoscenza degli algoritmi di basso livello, potrebbe essere meglio iniziare con i libri di Robert Sedgewick (ad es. "Algoritmi in C", "Algoritmi in Java", ecc.)

    
risposta data 06.11.2010 - 19:25
fonte
1

Se vuoi cambiare il mondo, allora leggilo. Se vuoi imparare nuovi hack, allora non leggerlo.

    
risposta data 05.01.2011 - 23:48
fonte
1

Il TAOCP di Knuth è un capolavoro. Ma, proprio come qualsiasi capolavoro (come "Illiad", "War and Peace" o Proust's "In Search of Lost Time"), non è per tutti o per il tempo passato.

Il libro è molto ben scritto e molto ben studiato. I problemi sono grandi e la spiegazione degli algoritmi è ben fatta.

Il grande problema del libro è il fatto che Knuth mostra il codice per un linguaggio di assemblaggio immaginario per un computer immaginario. Capisco perché l'ha fatto, ma il fatto è che fa schifo.

Raccomando di usare questo libro come una bibbia. Quando è nel bisogno, cercalo. Troverete la risposta. Mi è successo più di una volta!

    
risposta data 26.02.2011 - 02:21
fonte

Leggi altre domande sui tag