Dies mag subjektiv sein und wahrscheinlich abgeschlossen sein, aber ich wollte immer noch wissen, ob es wirklich hilfreich ist, Struktur und Interpretation von Computerprogrammen zu lesen.
Struktur und Interpretation von Computerprogrammen
Das Buch verwendet kein Java. Nicht, dass ich Java lernen wollte. Ich bin nur neugierig zu wissen, ob es nützlich sein wird, ein besserer Programmierer zu sein, und was kann ich aus dem Buch ziehen, oder sind andere Alternativen zu diesem Buch besser für Java-Programmierer geeignet?
Antworten:
Nun, ich weiß nicht, ob dieses Buch Ihnen helfen wird, aber als ich mich vor etwa 20 Jahren mit diesem Buch befasste, verbesserte es definitiv meine Programmierkenntnisse (unabhängig von einer Programmiersprache). Und ich denke, besonders ein Java-Programmierer wird einige neue Einsichten bekommen, die er / sie nicht bekommt, wenn er sich nur an Java hält.
Joel Spolsky 2005 hat einen schönen Artikel über Java und SICP geschrieben, der für Sie von Interesse sein könnte:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
quelle
Ich denke, die Struktur und Interpretation von Computerprogrammen ist ein großartiges Buch zum Lesen. Es gibt jedoch ein paar Probleme damit.
Das größte Problem in meiner Erfahrung ist , dass, während das Buch Wissen absolut keine Programmierung erfordert, und ist komplett Neulinge ausgerichtet, es ist darauf ausgerichtet, komplette Neulinge , die Studie am MIT . Und so, während es keine Programmierkenntnisse übernimmt, ist es nicht übernehmen ziemlich viel Domain Wissen, zB in den Bereichen Elektrotechnik, Physik und Mathematik. Hinweis: Diese haben nichts mit den gelehrten Konzepten zu tun , sondern dienen lediglich zum Verständnis der Übungen und Beispiele .
Größere Leute als ich haben es in einem Artikel mit dem Titel Die Struktur und Interpretation des Informatik-Lehrplans viel besser erklärt . Zum Glück sind sie nicht nur Nörgler, sondern haben stattdessen ein eigenes Buch geschrieben: How to Design Programs . Wenn Sie über das Lesen von SICP nachdenken, möchten Sie vielleicht zuerst HtDP lesen: Es deckt ungefähr den gleichen Bereich ab wie SICP, setzt jedoch nur durchschnittliches Domänenwissen auf High-School-Ebene voraus. (Tatsächlich ist es geschrieben, um High-School-Kindern beigebracht zu werden.)
Nachdem Sie HtDP beendet haben, können Sie immer noch zurückgehen und SICP lesen, da jetzt ein fehlender Teil des Domänenwissens nicht mehr so schädlich ist, weil Sie das Konzept zuvor gesehen haben.
Hinweis: Es gibt einen Entwurf für eine zweite Ausgabe von HtDP , den Sie möglicherweise anstelle der ersten Ausgabe lesen möchten. Das Material zur imperativen Programmierung wurde entfernt und wird im noch ungeschriebenen zweiten Band " How to Design Components" behandelt . Sie können es jedoch entweder aus der ersten Ausgabe oder von SICP oder beiden übernehmen.
quelle
Nach meinem Verständnis konzentriert sich SICP mehr auf Bereiche der funktionalen Programmierung, einschließlich der rekursiven Programmierung und der starken Einführung in CS - was für neue Programmierer etwas schwer zu verstehen ist . Ein weiterer Punkt, der für das MIT vorbereitet und unterrichtet wird, sind einige gute Grundlagen in den Bereichen Ingenieurwesen, Mathematik und Physik erforderlich, um dieses Buch nützlich zu finden.
Ich würde eine gute Reihe von Büchern empfehlen, bei denen jeder Schwerpunkt auf verschiedenen Aspekten der Softwareentwicklung liegt:
Eine detailliertere Beschreibung der oben genannten und anderer Bücher kann aus den folgenden Quellen entnommen werden:
Fühlen Sie sich bitte frei, der Liste etwas hinzuzufügen, da dies nicht ideal ist :)
Bearbeiten: Bei der Auswahl der oben genannten Bücher und der Festlegung der Priorität beim Lesen kommt es wirklich auf den Zweck an, was Sie primär versuchen zu tun oder zu lernen.
quelle
Ich werde hier auf die Sprünge gehen und sagen - für die meisten Leute wahrscheinlich keine gute Lektüre - welche Sprache auch immer.
Wie Knuth ist es ein gutes Buch, gelesen zu haben. Aber selbst wenn Sie ein heißes MIT ugrad sind, wird es immer noch den größten Teil eines Jahres dauern, um richtig zu lesen, und das mit Dozenten und TAs, die helfen.
Gibt es andere Bücher über Softwareentwicklung, die Sie in dieser Zeit lesen konnten und die von größerem Wert wären? Gibt es andere Sprachen, die Sie in der Zeit lernen könnten?
edit Nur um ein wenig zu erweitern:
Software-Engineering ist Engineering, es dreht sich alles um Optimierung. Ihre Aufgabe ist es, Ihr Wissen für ein bestimmtes Zeit- und Kostenbudget zu maximieren.
SICP ist eine Einführung in die Programmierung in einer funktionalen Sprache. Der Grund für die Verwendung einer funktionalen Sprache ist, dass es einfacher ist, viele mathematische Konzepte der Programmierung in funktionalen Sprachen als in prozeduralen zu beschreiben und viel einfacher zu lesen als formale Logik.
Es gibt auch ein gewisses Maß an Haltung, dh. "Sie sind nicht wirklich ein Programmierer, es sei denn, Sie lesen SICP" oder Knuth oder können in Lisp oder C oder x86 Assembler programmieren. Das ist normalerweise leicht zu widerlegen. dh Sie können kein echter Programmierer sein, wenn Sie Cantors Arbeit zur Mengenlehre und zu Maxwells Gleichungen nicht kennen und mit der Lochmobilität in Halbleitern vertraut sind.
quelle
Planen Sie, für den Rest Ihres Lebens ein "Java-Programmierer" zu sein? Dann gibt es wahrscheinlich bessere Bücher zum Lesen. Wenn Sie im Allgemeinen ein guter Programmierer sein möchten, ist es eine ausgezeichnete Lektüre. Hier ist warum. Es gibt bestimmte Werkzeuge, die jeder gute Programmierer in seiner Toolbox benötigt. Eine davon ist eine gründliche Kenntnis der Datenstrukturen und -algorithmen (wenn Sie mir nicht glauben, machen Sie ein Interview bei Microsoft, Google, Amazon usw.). Begleitende Algorithmen sind Komplexitätsanalysen, Rekursionen und ein solides Verständnis von Zeigern, das nicht der Fall ist verletzt. Wenn es um Algorithmenanalyse, rekursive Prozesse und das Funktionsparadigma im Allgemeinen geht, kann ich mir kein besseres oder herausfordernderes Buch als SICP vorstellen.
quelle