Es gibt viele Bücher über das Programmieren, und Code Complete steht anscheinend ganz oben auf der Liste der meist gelesenen Programmierbücher, aber was ist mit der Kunst der Computerprogrammierung von Donald Knuth? Ich bin ein vielbeschäftigter Mensch, zwischen Arbeit und einer jungen Familie. Ich habe nicht viel Freizeit. Deshalb muss ich wählerisch sein, wie ich damit umgehe.
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 On-the-Side-Programmierung wie Haustierprojekte oder der Beitrag zu Open Source meine Zeit besser für die berufliche Entwicklung nutzen?
HAFTUNGSAUSSCHLUSS - Für diejenigen unter Ihnen, die T-Shirts mit der Aufschrift "Knuth ist mein Homeboy" tragen, verstehen Sie mich nicht falsch - ich möchte sie lesen, frage mich aber nur, ob sie ganz oben auf meiner Prioritätenliste stehen sollten oder nicht wenn etwas anderes zuerst kommen sollte.
Antworten:
TAOCP ist eine äußerst wertvolle Referenz, um zu verstehen, wie die Datenstrukturen und -algorithmen, die wir täglich verwenden, funktionieren und warum die Arbeit, aber es wäre eine außerordentliche Investition Ihrer Zeit, sie vollständig durchzulesen.
Verbringen Sie als Familienvater die Zeit mit Ihren Kindern.
quelle
Ersetzen Sie "die Enzyklopädie" in Ihrer Frage durch jeden Verweis auf TAOCP, 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 lautete "Du bist voller Scheiße": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
quelle
Nein, es sollte nicht ganz oben auf Ihrer Prioritätenliste stehen. Ich habe einen vollständigen Satz und habe NICHT die ganze Sache gelesen. Ich habe es (bis jetzt) als Referenz für bestimmte Probleme verwendet (es war von unschätzbarem Wert für mein Verständnis der Zufälligkeit und das Testen von Zufallsgeneratoren). Immer wenn ein CS-Thema auftaucht, mit dem ich mich nicht wirklich auskenne, neige ich dazu, das relevante Stück TAOCP als einen guten Schritt in meinem Verständnis zu nehmen.
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, sich zuerst das anzuschauen, was am interessantesten ist.
quelle
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 (naja, Sammlungen von Büchern), das sich gut zu Beginn Ihrer Karriere lesen lässt, weil es Ihnen wirklich gute Einsichten gibt, die Sie normalerweise erst später erhalten, aber es ist nicht wesentlich, um zu überleben, bis Sie diesen Teil abgeschlossen haben In Ihrer Karriere entscheiden Sie sich nicht nur für Code, sondern auch für die Toolbox. Dies ist der Punkt, an dem Sie wirklich Algorithmen studieren, hoffentlich das Sprachdesign bereits ein wenig verstehen und ein sehr breites 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 ziehen.
Mit anderen Worten: Es ist Lernen im großen Stil. Wenn Sie also wie ich besessen davon sind, lesen Sie es jetzt. Wenn Sie es nicht sind, können Sie es aufschieben, bis Sie sich danach sehnen, die Leiter hinaufzusteigen und ein Mann im großen Stil zu werden.
quelle
Nachdem ich vor kurzem 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 benannt sind. Holen Sie sich den ersten Band, lesen Sie die Kapitel 1 und 2 und sehen Sie, wie es Ihnen gefällt.
quelle
TAOCP ist eine großartige Arbeit, aber es wäre eine schreckliche Zeitinvestition für einen praktizierenden Softwareentwickler. Wenn Sie es tun, werden Sie einige Jahre (so lange wird es dauern) Ihres professionellen Budgets für die Selbstverbesserung 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 das Algorithm Design Manual von Steven S. Skiena
Wenn Sie dann das Gefühl haben, dass Sie mehr brauchen / wollen, steigen Sie auf den Knuth auf.
Gleichzeitig können Sie ein oder mehrere Bände TAOCP kaufen, es durchsehen, um zu verstehen, welche Bereiche Knuth abdeckt, und es in Ihrer Bibliothek aufbewahren, falls Sie in Ihrem Alltag tatsächlich einige Informationen benötigen Arbeit. Meine Vermutung ist, dass Sie es nicht tun würden und das ist ein weiterer Grund, warum ich nicht raten würde, zu versuchen, zu lesen. Wenn Sie jedoch feststellen, dass Sie häufig genug darauf verweisen, dann wissen Sie, dass es sich lohnt, es vollständig durchzulesen.
quelle
Knuth brechende Arbeit ist die beliebteste Referenz , dass Programmierer der Absicht zu lesen, oder Finish Lesen. Irgendwann mal.
quelle
+10 auf die Familie / Kinder Kommentar. Ich versuche, das meiste zu lesen, während ich auf Rotaugenflügen zu Kunden bin.
Aber ... ja, sehr lesenswert. Kein Grund, linear zu lesen, stattdessen überfliegen und ein paar interessante Themen auswählen.
quelle
Ich bin fest in dem Lager der Leute, die der Meinung sind, dass jeder Entwickler die Investition in das Erhalten der Bücher irgendwann tätigen sollte (und es wird jetzt einfacher, da es so aussieht, als würden sie in einem Taschenbuch nachgedruckt ), aber aus dem gleichen Grund würde ich Es ist auch schwer zu glauben, dass sich jemand hinsetzt und sie alle von vorne bis hinten liest.
Der beste Ansatz für sie - wenn Sie keinen Weg zur Arbeit haben, wo Sie Zeit zum Sitzen und Lesen haben - ist es, genug von ihnen zu lesen, um zu wissen, wo sich Dinge in ihnen befinden, und dann, wann immer Sie wollen, 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 suchen. In einigen Fällen können Sie jedoch feststellen, dass die Bücher einen Einblick bieten, nach dem Sie zusätzliche Zeit im Internet suchen müssen.
quelle
Vergiss nicht, dass Knuth am Anfang etwas darüber schreiben wollte, wie man einen Compiler schreibt.
Sie können zum Beispiel mit Wikipedia eine Menge 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 ...
quelle
Es ist wahrscheinlich wichtiger, dass Sie diese Probleme in dem 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 sein mag), also wäre das Vervollständigen der Bücher wahrscheinlich besser als ein Universitätskurs in den Grundlagen der Informatik und macht Sie fast zum besten Programmierer aller Zeiten.
Da du eine junge Familie hast, wie ich, hast du mir eine ziemlich gute Idee gegeben. Ich kaufte die Bücher nacheinander und unterrichtete Ihre Kinder durch sie.
quelle
Wenn Sie neugierig sind, dann tun Sie es, aber die Verdauung nimmt einige Zeit in Anspruch, sodass Sie sich Zeit nehmen müssen.
Haben Sie einen Pendler, auf dem Sie lesen können - das wäre perfekt.
BEARBEITEN: Diese Vorschau eines kleinen Teils von Band 4 könnte Sie interessieren: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(Anmerkung: komprimiertes Postscript)
quelle
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 aufzugreifen, einen interessanten Abschnitt auszuwählen, darüber zu lesen und einige Übungen zu machen. Aber die oben gemachten Enzyklopädie-Vergleiche sind ziemlich zutreffend ... es ist groß, umfangreich und detailliert. Und einige der "Übungen" sind Forschungsprobleme, deren Lösung Jahre dauern kann.
Wenn Sie sich nur besser mit Low-Level-Algorithmen auskennen möchten, ist es möglicherweise besser, mit den Robert Sedgewick-Büchern zu beginnen (z. B. "Algorithmen in C", "Algorithmen in Java" usw.).
quelle
Wenn du die Welt verändern willst, dann lies sie. Wenn Sie neue Hacks lernen möchten, lesen Sie es nicht.
quelle
Knuths TAOCP ist ein Meisterwerk. Aber genau wie bei jedem Meisterwerk (wie "Illiad", "War and Peace" oder Prousts "Auf der Suche nach der verlorenen Zeit"), ist es nicht für jedermann oder jede Zeit geeignet.
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 die Tatsache ist, dass es scheiße ist.
Ich empfehle, dieses Buch als Bibel zu verwenden. Wenn Sie Hilfe brauchen, suchen Sie danach. Sie finden die Antwort. Es ist mir mehr als einmal passiert!
quelle