it-swarm-eu.dev

Die Kunst der Computerprogrammierung - Lesen oder nicht lesen?

Es gibt viele Bücher über das Programmieren, und es scheint, dass Code Complete ganz oben auf der Liste der "Must-Read-Programmierbücher" steht, aber was ist mit Die Kunst der Computerprogrammierung von Donald Knuth? Ich bin ein vielbeschäftigter Mensch, zwischen Arbeit und einer jungen Familie habe ich nicht viel Freizeit, also muss ich wählerisch sein, wie ich es benutze.

Ich frage mich - hat hier jemand 'TAOCP' gelesen? Wenn ja, lohnt es sich, sich Zeit zum Lesen zu nehmen, oder würde ein anderes Buch oder mehr Nebenprogramm wie Haustierprojekte oder ein Beitrag zu Open Source meine Zeit besser für die berufliche Entwicklung nutzen?

HAFTUNGSAUSSCHLUSS - Für diejenigen unter Ihnen, die "Knuth is my homeboy" -T-Shirts tragen, verstehen Sie mich nicht falsch - ich möchte es lesen, aber ich frage mich nur, ob es ganz oben auf meiner Prioritätenliste stehen sollte oder wenn etwas anderes zuerst kommen sollte.

65
Zann Anderson

TAOCP ist eine äußerst wertvolle Referenz, um zu verstehen, wie die Datenstrukturen und Algorithmen, die wir jeden Tag verwenden, funktionieren und warum die Arbeit, aber es wäre eine außergewöhnliche Investition Ihrer Zeit, sie vollständig zu lesen.

Verbringen Sie als Familienvater die Zeit mit Ihren Kindern.

72
Adam Crossland

Ersetzen Sie in Ihrer Frage jeden Verweis auf TAOCP durch "die Enzyklopädie", und ich denke, die Antwort sollte offensichtlich sein. Denn genau das ist TAOCP in vielerlei Hinsicht.

Es gibt eine (möglicherweise apokryphe) Geschichte über Steve Jobs Treffen mit Knuth. Das erste, was Jobs zu ihm sagte, war: "Es ist eine Freude, Sie kennenzulernen, Dr. Knuth. Ich habe alle Ihre Werke gelesen!". Knuths Antwort war "Du bist voller Scheiße": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt

23
Jason Baker

Nein, es sollte nicht ganz oben auf Ihrer Prioritätenliste stehen. Ich habe einen vollständigen Satz und ich habe NICHT die ganze Sache gelesen. Ich habe es (bisher) als gute Referenz für bestimmte Probleme verwendet (es war zum Beispiel für mein Verständnis der Zufälligkeit und das Testen von Zufallsgeneratoren von unschätzbarem Wert). Immer wenn ein CS-Thema auftaucht, das ich nicht wirklich gut im Griff habe, neige ich dazu, das relevante Stück TAOCP als einen guten Schritt in meinem Verständnis zu betrachten.

Wenn Sie sich dazu entschließen, es zu lesen, haben Sie mehr Kraft, und ich empfehle auf jeden Fall, es in kleinen Stücken einzunehmen. Haben Sie keine Angst, herumzuspringen und sich zuerst das Interessanteste anzusehen.

22
Michael Kohne

TOACP ist eine wichtige Lektüre - irgendwann. Je nachdem, was Sie täglich tun, ist dies möglicherweise nicht die dringendste.

Es ist eines dieser Bücher (also Sammlungen von Büchern), das zu Beginn Ihrer Karriere gut zu lesen ist, weil es Ihnen wirklich gute Einblicke gibt, die Sie normalerweise erst später erhalten würden, aber es ist nicht wesentlich für das Überleben, bis Sie diesen Teil abgeschlossen haben In Ihrer Karriere, in der Sie nicht nur programmieren, wählen Sie die Toolbox. Dies ist der Punkt, an dem Sie wirklich Algorithmen studieren möchten, hoffentlich bereits ein wenig das Sprachdesign verstehen und ein sehr umfassendes Verständnis dafür haben möchten, welche Tools, Sprachen und Systeme es gibt und wie jedes einzelne in das Ökosystem der Dinge passt, die Sie können für ein bestimmtes Projekt nutzen.

Mit anderen Worten: Es ist ein Big-Picture-Lernen. Wenn Sie also wie ich besessen sind, lesen Sie es jetzt. Wenn Sie es nicht sind, ist es in Ordnung, es zu verschieben, bis Sie sich danach sehnen, die Leiter hinaufzusteigen und ein Big-Picture-Typ zu werden.

9
HedgeMage

Nachdem ich kürzlich genau diese Aufgabe übernommen habe, kann ich sagen, dass die Art und Weise, wie er schreibt, sehr angenehm ist und die Probleme (je nach Schwierigkeitsgrad) sehr treffend gekennzeichnet sind. Holen Sie sich den ersten Band und lesen Sie die Kapitel 1 und 2 und sehen Sie, wie es Ihnen gefällt.

6
sova

TAOCP ist eine großartige Arbeit, aber das Lesen wäre für einen praktizierenden Softwareentwickler eine schreckliche Zeitinvestition. Wenn Sie dies tun, werden Sie einige Jahre (so lange wird es dauern) Ihres professionellen Selbstverbesserungsbudgets opfern, um zu viel über zu wenig zu lernen.

Ich würde empfehlen, ein oder mehrere weniger "ultimative" Bücher über Algorithmen durchzuarbeiten. Mein Favorit in diesem Bereich ist The Algorithm Design Manual von Steven S. Skiena

Wenn Sie dann das Gefühl haben, dass Sie mehr brauchen/wollen, gehen Sie zum Knuth.

Gleichzeitig können Sie ein oder mehrere Bände von TAOCP kaufen, es durchsehen, um zu verstehen, welche Bereiche Knuth darin abdeckt, und es in Ihrer Bibliothek aufbewahren, falls Sie tatsächlich einige Informationen davon in Ihrem Alltag benötigen Arbeit. Meine Vermutung ist, dass Sie es nicht tun würden, und das ist ein weiterer Grund, warum ich nicht rate, zu versuchen, zu lesen. Wenn Sie jedoch feststellen, dass Sie häufig genug darauf verweisen, wissen Sie, dass es sich lohnt, es von Anfang bis Ende zu lesen.

6
kdubinets

Knuths wegweisende Arbeit ist die beliebteste Referenz, die Programmierer beabsichtigen lesen oder zu Ende lesen. Irgendwann mal.

6
Steven A. Lowe

+10 zum Kommentar der Familie/Kinder. Ich versuche, am meisten zu lesen, während ich rote Augen zu Kunden fliege.

Aber ... ja, sehr lesenswert. Kein Grund, linear zu lesen, sondern ein paar interessante Themen zu überfliegen und auszuwählen.

3
Jé Queue

Vergessen Sie nicht, dass Knuth am Anfang etwas darüber schreiben wollte, wie man einen Compiler schreibt.

Sie können zum Beispiel mit Wikipedia viele Informationen im Internet erhalten, aber wenn Sie kein Forscher sind, lesen Sie einfach die Zusammenfassung, Sie werden zufrieden sein.

Sie können immer noch den ersten Band bekommen, damit Sie ihn lesen können, wenn Sie sich langweilen ...

3
jokoon

Ich bin fest im Lager der Leute, die der Meinung sind, dass jeder Entwickler irgendwann in die Beschaffung der Bücher investieren sollte (und es wird jetzt einfacher, da es so aussieht, als wären sie nachgedruckt im Taschenbuch ), aber Aus dem gleichen Grund würde es mir auch schwer fallen zu glauben, dass sich jemand hinsetzen und sie alle von vorne bis hinten lesen würde.

Der beste Ansatz für sie - wenn Sie keinen Weg zur Arbeit haben, wo Sie Zeit zum Sitzen und Lesen haben - ist, genug von ihnen zu lesen, um zu wissen, wo sich die Dinge in ihnen befinden, und dann, wann immer Sie möchten, ein vollständiges Kapitel zu lesen Verwenden Sie sie als Nachschlagewerke für ein bestimmtes Problem. Bei Google und Stack Overflow ist es nicht so üblich, nach Nachschlagewerken zu greifen. In einigen Fällen stellen Sie jedoch möglicherweise fest, dass die Bücher Einblicke bieten, nach denen Sie im Internet zusätzliche Zeit suchen müssten.

3
rjzii

Es ist wahrscheinlich wichtiger, dass Sie diese Probleme im Buch lösen, als es nur zu lesen. Das wird viel Zeit erfordern.

Er mag bis zu 4 Bände und 5 Faszikel (was auch immer das sind), also Abschluss Die Bücher wären wahrscheinlich besser als ein Universitätskurs in den Grundlagen der Informatik und machen Sie fast zum besten Programmierer aller Zeiten.

Da Sie eine junge Familie haben, wie ich, haben Sie mir eine ziemlich gute Idee gegeben. Ich würde die Bücher einzeln kaufen und sie Ihren Kindern beibringen.

2
Peter Turner

Wenn Sie die Welt verändern wollen, dann lesen Sie es. Wenn Sie neue Hacks lernen möchten, lesen Sie sie nicht.

1
veryfoolish

Wenn Sie neugierig sind, dann tun Sie es, aber die Verdauung dauert einige Zeit, sodass Sie sich Zeit nehmen müssen.

Haben Sie einen Weg, auf dem Sie lesen können - das wäre perfekt.


BEARBEITEN: Diese Vorschau eines kleinen Teils von Band 4 könnte für Sie interessant sein: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz

(Hinweis: komprimiertes Postskriptum)

1
user1249

Es ist nicht etwas, was die meisten Leute sich hinsetzen und von vorne bis hinten lesen wollen, nein. Es ist eine unglaublich wertvolle Referenz, und es ist auf jeden Fall gut, sie aufzunehmen, einen interessanten Abschnitt auszuwählen, darüber zu lesen und einige Übungen zu machen. Aber die oben gemachten Enzyklopädie-Vergleiche sind ziemlich passend ... sie sind groß, umfangreich und detailliert. Und einige der "Übungen" sind Forschungsprobleme, deren Lösung Jahre dauern kann.

Wenn Sie nur ein besseres Wissen über Algorithmen auf niedriger Ebene wünschen, ist es möglicherweise besser, mit den Büchern von Robert Sedgewick zu beginnen (z. B. "Algorithmen in C", "Algorithmen in Java" usw.).

1
mindcrime

Knuths TAOCP ist ein Meisterwerk. Aber genau wie jedes Meisterwerk (wie "Illiad", "War and Peace" oder Prousts "Auf der Suche nach der verlorenen Zeit") ist es nicht für jedermann oder für immer.

Das Buch ist sehr gut geschrieben und sehr gut recherchiert. Die Probleme sind groß und die Erklärung der Algorithmen ist gut gemacht.

Das große Problem des Buches ist die Tatsache, dass Knuth Code für eine fiktive Assemblersprache für einen fiktiven Computer zeigt. Ich verstehe, warum er es getan hat, aber Tatsache ist, dass es scheiße ist.

Ich empfehle, dieses Buch als Bibel zu verwenden. Wenn Sie in Not sind, suchen Sie danach. Sie finden die Antwort. Es ist mir mehr als einmal passiert!

1
Eduardo