Ich bin auf dieses Zitat von Bill Gates gestoßen: "Sie sollten mir auf jeden Fall einen Lebenslauf schicken, wenn Sie das Ganze lesen können." Er sprach über die Kunst des Programmierens Bücher. Ich war also ziemlich neugierig und wollte alles lesen. Aber ehrlich gesagt verstehe ich das nicht.
Ich bin wirklich nicht so intellektuell. Das sollte der Grund sein, warum ich es nicht verstehen kann, aber ich bin gespannt darauf zu lernen. Ich lese gerade Band 1 über grundlegende Algorithmen. Gibt es da draußen Bücher, die für Anfänger / langsame Leute wie mich freundlich sind, was mir helfen würde, mein Wissen aufzubauen, damit ich in Zukunft Knuths Buch mühelos lesen kann?
algorithms
books
taocp
Rho
quelle
quelle
Antworten:
Auch ich denke, Knuths Buch ist etwas fortgeschritten und schwer zu verstehen. Diese Bücher sind definitiv für Algorithmen auf Forschungsniveau, IMHO.
Die Einführung in Algorithmen von CLRS ist viel einfacher.
EDIT :
Wenn Sie jedoch Knuths Buch lesen möchten , sollten Sie zuerst Konkrete Mathematik durchgehen . Knuth möchte, dass seine Schüler den grundlegenden mathematischen Teil der Algorithmenanalyse kennen.
quelle
Lesen Sie unbedingt das gesamte Zitat von Gates, einschließlich des Folgenden:
Sie sind keine einfachen Bücher und sollen es auch nicht sein. Denken Sie daran, dass eines von Knuths Zielen darin bestand, der Informatik mathematische Strenge zu verleihen . Das ist großartig, wenn Sie etwas über einen Algorithmus beweisen möchten , aber nicht so großartig, wenn Sie nur wissen möchten, wie er funktioniert.
Michael Dorfman hat ein paar gute Tipps zum Lesen der Bücher in seiner Antwort auf die (jetzt gelöschte) Frage zu Stackoverflow: Was kann ich aus dem Lesen des Loses machen? . Wenn Sie keine 10-k-Wiederholungen haben, können Sie die Frage und ihre Antwort weiterhin auf dem Wayback-Computer anzeigen .
Für andere Quellen habe ich herausgefunden, dass das Durchsuchen der Lehrpläne angesehener Informatikschulen nützlich ist. Zum Beispiel Lehrbücher für den Beginn von Algorithmusklassen:
quelle
Knuth ist der am meisten verehrte, zitierte, besprochene und hoch angesehene Informatikautor in der Geschichte. Seine Bücher schmücken die Bücherregale aller ernsthaften Softwareentwickler und werden mit dem gleichen Maß an Respekt bezeichnet, das die Menschen der Bibel und der Kunst des Krieges entgegenbringen.
Ich habe sogar gehört, dass einige Leute tatsächlich Teile von Knuths Büchern gelesen haben .
Die meisten Leute haben nur vor .
Persönlich speichere ich sie für meinen Ruhestand
quelle
Knuths Bücher haben das Gebiet der Algorithmen für immer verändert. Er selbst hat gesagt, dass "2 Seiten in meinem Buch die gesamte berufliche Arbeit eines Menschen sind" und dass seine Bücher schwer zu lesen sind. Das Buch enthält kondensiertes Material aus jahrelanger Arbeit in der Informatik.
Sie sollten sich nicht schlecht fühlen, wenn Sie es nicht verstehen können.
Wie Prasoon sagte, ist CLRS ein einfacher zu lesendes Buch.
Sie haben auch Algorithmen von Rajasekaran, Sahni et al., Die leicht zu verstehen sind.
quelle
Als ich meinen Abschluss machte, nahm ich mir die ersten drei Bände von TAOCP als Abschlussgeschenk und versuchte, sie durchzulesen. Ich habe es nie geschafft. In diesen Tagen habe ich vielleicht 1/3 der ersten drei Bände durchgearbeitet (in keiner bestimmten Reihenfolge gedacht). Das Material ist definitiv dicht, aber ich habe drei Tipps gelernt, die mir sehr geholfen haben.
Versuchen Sie zunächst nicht, von vorne bis hinten zu lesen. TAOCP ist wirklich so viel wie ein Nachschlagewerk, und ich habe festgestellt, dass es am besten ist, einen Abschnitt zu lesen, wenn er für ein Problem relevant ist, das Sie lösen möchten. Wie bei vielen Dingen auf der Welt ist das Verstehen der Lösungen viel einfacher, wenn Sie auf die Probleme gestoßen sind, die sie zu lösen versuchen.
Als nächstes ist das Flussdiagramm vorne im Buch nicht nur ein bisschen Humor, sondern auch ein nützlicher Tipp. Lesen Sie die Abschnitte, an denen Sie iterativ arbeiten. Beginnen Sie zunächst mit den übergeordneten Konzepten und vertiefen Sie sich dann sanft in die Mathematik.
Halten Sie zum Schluss ein gutes altmodisches Papier und einen Bleistift bereit, um die beschriebenen Algorithmen durchzuarbeiten und einige der einfachen Probleme zu lösen. Es ist ein langer Weg, um das, was Sie lesen, zu verstärken.
quelle
Keine Sorge, die meisten Leute verstehen die Kunst der Computerprogrammierung (TAOCP) nicht. Denken Sie also nicht, Sie seien langsam oder ein Anfänger, wenn Sie nicht verstehen - Sie sind genau wie die anderen 99,99% von uns, die es nicht verstehen.
Sie sind ziemlich ehrgeizig , wenn Sie auf das Niveau erhalten möchten , wo Sie die TAOCP lesen kann mit Leichtigkeit . Ich selbst habe erst die Bücher durchgeblättert, bevor ich sie weggelegt habe. Es gibt wahrscheinlich nur eine Handvoll Menschen auf diesem Planeten, die TAOCP verstehen.
Lesen Sie den Beitrag: Bücher Programmierer lesen nicht wirklich von Bill the Lizard.
Es gibt viele andere Bücher , die gut lesbar und verständlich sind und von denen Sie sofort profitieren können .
Ich persönlich mag:
quelle
wenn du dich selbst definierst, dann stellst
not a highly intellectual being
du dich auf niedrige Erwartungen ein. Du musst diese Mentalität brechen, wenn du etwas tun willst, das die Mühe wert ist. Sie sollten keinen Zweifel daran haben, dass Sie etwas erreichen können. Es zu erreichen bedeutet auch nicht, dass Sie es leicht erreichen werden.Dinge, die es wert sind, verfolgt zu werden, sind diejenigen, die schwierig sind ... und das ist kein Klischee. In der Software, im Engineering, im Leben im Allgemeinen, wenn Sie etwas erreichen möchten, müssen Sie sich für die Dinge entscheiden, die schwierig sind, die Dinge, die die Leute meiden, und sich nicht mit den kleinsten gemeinsamen Nennern der Dinge zufrieden geben.
Zunächst ist nicht klar, wie Ihr CS-Hintergrund aussieht. Knuths Buch erfordert einen gewissen Reifegrad. Nur wenige Menschen mit einem CS-Abschluss können es problemlos durchstehen. Ich würde nicht erwarten, dass ein CS-Student, der gerade seinen ersten Kurs in Algorithmen abgeschlossen hat, auch nur ein Buch von Knuth durchgehen kann. Die Reife, die benötigt wird, um es zu bekommen, ist einfach nicht da, und das hat nichts mit der mentalen Kapazität des Schülers zu tun.
Sie müssen Ihre grundlegenden Algorithmen kalt und klar haben, und Sie müssen eine Menge Programmierkenntnisse (Arbeit und / oder Gelehrsamkeit) haben - ich würde sagen, mindestens 40 Credits für Programmierkenntnisse. Sie müssen auch Ihre CS-Mathematik auf festem Grund haben.
Sie können nicht weiterkommen, ohne ein gutes Verständnis der diskreten Mathematik (und möglicherweise der Berechnungstheorie) zu haben.
Es ist nicht so, dass Sie dieses Wissen benötigen, um Knuths Probleme zu lösen, aber Sie brauchen eine gewisse Reife, um in der Lage zu sein, diese Art von Material zu durcharbeiten.
Wählen Sie zuerst ein Buch und nur ein Buch aus (CLRS-Buch wie zuvor vorgeschlagen) und bearbeiten Sie es von Anfang bis Ende. Wenn möglich Programme ausführen, die die Algorithmen implementieren. Verwenden Sie kein Java oder C #, nicht einmal C ++. Gehen Sie zu Bare Bones C und bekommen Sie das Gefühl, Dinge aus Bare-Bone-Metallschrotten zu bauen.
Holen Sie sich auch Knuths Buch "Konkrete Mathematik", wenn Sie keinen Kurs in diskreter Mathematik und Rechentheorie belegt haben. Es wäre gut, wenn Sie auch dieses Buch durchgehen würden.
Dann gehe auf Knuths Enzyklopädie ein Band, ein Kapitel nach dem anderen ein. Gehen Sie nicht zu einem anderen Kapitel, ohne das erste richtig verstanden zu haben.
Ich würde vorschlagen, dass Sie zuerst Band I (grundlegende Algorithmen) und dann Band III (Suchen und Sortieren) durchgehen. Das sollten Ihre unmittelbaren Ziele sein. Dann, später (viel später), Band IV (Kombinatorische Algorithmen) und dann Band II (Semi-Numerische Algorithmen).
Fühlen Sie sich nicht schlecht, wenn Sie es zuerst nicht bekommen. Ich habe jahrelang versucht, durch Band I und III zu kommen (jetzt 10 Jahre).
Und Sie sollten auch nicht so viel Gewicht darauf legen. Tun Sie es nicht, um sich selbst oder jemandem etwas zu beweisen. Tun Sie es, weil Sie intellektuell daran interessiert sind. Sie können sich mit Algorithmen auskennen, indem Sie einfach das CLRS-Buch (oder eines der hervorragenden Grad-Level-Bücher) verwenden.
Sei pragmatisch und gönne dir eine Pause. Betrachten Sie das Durchgehen von Knuths Buch als langfristigen persönlichen Ehrgeiz, nicht als sofortigen Beweis dafür, dass Sie CS-Material sind;)
Es gibt andere wichtigere Dinge (beruflich), für die du dich umbringen musst;)
quelle
Bevor ich überhaupt mit Knuth anfing, musste ich vier verschiedene Bücher durchgehen. Die ersten beiden sind die Sedgewick-Bücher über Algorithmen. Diese bieten einen Überblick über die meisten Algorithmen und Datenstrukturen in einer tatsächlich implementierten Form, sodass Sie sehen können, was sie sind und wie sie funktionieren. Diese Bücher gibt es in verschiedenen Sprachversionen - ich habe die in C gelesen, aber sie wurden ursprünglich in Pascal geschrieben, und es gibt C ++ - und Java-Versionen.
Danach habe ich einen guten Teil des Cormen-Buches über Algorithmen durchgearbeitet und Sedgewick und Flajolets Einführung in die Analyse von Algorithmen als komplementären Text verwendet, da dies eher Knuths mathematischer Strenge entspricht als das Cormen-Buch. Beides muss ich noch erledigen. Meistens suche ich die Teile aus, die ich für nötig halte.
Nachdem ich diese gelesen habe und einen Abschluss in Mathematik gemacht habe, kann ich einiges von TAOCP durchlesen, aber es ist schwierig zu lesen. Das heißt nicht, dass es nicht nützlich ist. TAOCP sind einige der besten Algorithmus-Referenzhandbücher, aber es ist etwas problematisch, zu glauben, dass Sie sie verwenden können, um alles "vollständig" zu verstehen.
quelle