HtDP vs. Konkrete Abstraktionen vs.

8

Ich möchte mich selbst programmieren programmieren. Um einen kleinen Hintergrund zu geben, habe ich einen Geschichtsabschluss und meine Mathefähigkeiten sind über den College-Algebra-Level (und wahrscheinlich am unteren Ende davon). Ich suche nach Empfehlungen für Bücher, die lehren, über Programmierung nachzudenken, anstatt sich auf eine bestimmte Sprache zu konzentrieren. Ich habe bereits festgestellt, dass SICP vorerst nicht in meiner Liga ist.

Die beiden wichtigsten Alternativen scheinen Erstellen von Programmen und Konkrete Abstraktionen zu sein. Ich wäre daran interessiert, von jedem zu hören, der eines oder beide mit einer spezifischen Diskussion darüber verwendet hat, warum man dem anderen vorzuziehen ist. Auch wenn jemand einen Grundkurs mit frei verfügbaren Materialien empfehlen könnte, wäre das großartig. Etwas wie: Beginnen Sie mit HtDP- & gt; SICP- & gt;?

Danke für Ihre Zeit.

    
Cena Mayo 09.02.2009, 19:16
quelle

9 Antworten

9

Es gibt viele Ansätze, um zu lernen, wie man programmiert. Einige entscheiden sich für das, was derzeit auf dem Markt verwendet wird. Ich bevorzuge einen Ansatz, der Ihnen beibringt, wie Sie Programme erstellen, die strukturiert, formbar und verständlich sind. Beginnen Sie dazu mit SICP (holen Sie sich eine gebrauchte Version, um etwas Geld zu sparen). Offensichtlich werden Sie keinen Job in Scheme oder Lisp programmieren, aber das ist nicht die Absicht hinter meiner Empfehlung. Die Idee ist, den methodischen Denkprozess zu erlernen, der Probleme löst und zusammensetzbare und wartbare Lösungen für sie schafft.

Sobald Sie den Großteil des Buches bearbeitet haben, erhalten Sie ein einführendes Buch über Python oder Ruby. Arbeiten Sie die Hauptkonzepte (Prozeduren, Kontrollstrukturen). Suchen Sie gleichzeitig nach Bohm und Jacobinis "Structured Program Theory" und Jackson Structured Programming.

Beachten Sie, dass ich Objektorientierung nicht erwähnt habe. Tatsache ist, dass OO hervorragend für die Analyse und Implementierung geeignet ist, aber für die Designphase schwierig ist. Prozedurale, modulare und strukturierte Programmierung sind leichter zu handhaben, und ehrlich gesagt ist es extrem schwierig, Objektorientierung zu erlernen und richtig zu nutzen, ohne strukturierte, prozedurale und modulare Programmierkonzepte vollständig zu verstehen.

Sobald Sie damit fertig sind, tauchen Sie ein in C (benutzen Sie das gute alte Programming Language Book von Kerninghan und Ritchie C).

Sobald Sie damit fertig sind, springen Sie nach Herzenslust in Java oder C #. Dann lies dieses Papier:

Ссылка

Als echter Java-Entwickler würde ich es als unzumutbar empfinden, jedem, der ernst ist zu empfehlen, zu lernen, wie man programmiert, um mit Java oder C # zu beginnen. Sie sind ein großartiges Werkzeug für die Arbeit, aber keine großartige Sprache für den Unterricht (es sei denn, die Person hat bereits umfangreiche Erfahrung oder Zugang zu prozeduraler und strukturierter Programmierung.)

Auch wenn es für die Freizeit getan wird, ist Programmierung viel mehr als nur mit einer marktfähigen Sprache zu programmieren. Sie möchten Lektionen und Gewohnheiten entwickeln, die Ihnen helfen, in jeder Sprache sauber und effizient zu programmieren . Ich schlage vor, dass Sie dem hier vorgestellten Entwurf folgen. Viel Glück.

== BEARBEITEN - 2011-11-22 ==

Zusätzlich zu Hoares bahnbrechendem Papier, das oben erwähnt wurde, würde ich Ihnen sehr empfehlen, dass Sie Mitchel, McKim und Meyers "Design by Contracts, mit Beispiel ". In der Tat würde ich sagen, dieses Buch zuerst zu lesen und dann Hoares Papier zu lesen.

== BEARBEITEN - 2013-01-21 == Wenn ich folgendes sage:

  

Tatsache ist, dass OO hervorragend für die Analyse und Implementierung geeignet ist, aber   schwierig für die Designphase.

Ich meine damit zu sagen, dass die Entwurfsphase für die Uneingeweihten viel schwieriger zu verstehen und zu verstehen ist, wenn OO- und OO-bezogene Technologien verwendet werden. Die Entwurfsphase umfasst die präskriptiven Elemente, die das "Was" (aus der Analyse) in ein konkretes "Wie" (die Implementierung) einordnen, und die Implementierung läuft letztlich auf imperative oder funktionale Elemente hinaus.

Offensichtlich gilt dies für nicht initiierte nicht.

    
luis.espinal 27.05.2010 18:11
quelle
5

Ich kann nicht mit konkreten Abstraktionen sprechen, aber mein einführender CS Kurs wurde in HtDP von einem der Autoren unterrichtet. Rückblickend schätze ich die Erfahrung sehr. Es fördert eine Reihe von guten Gewohnheiten, die Ihnen als professioneller Programmierer dienen werden - kleine Methoden, zuerst testen - und es ist ein einigermaßen sanfter Start.

Sie werden Scheme lernen, das ein gutes Programmier- und Denkwerkzeug ist und Ihnen helfen wird, wenn Sie anfangen, andere Hochsprachen zu erforschen. Es kann dir in der nahen Zukunft nicht viel helfen, wenn du Sprachen wie Java erforschen willst, aber Ruby ist ein relativ freundlicher Sprung.

Um es richtig verwenden zu können, müssen Sie Racket herunterladen und die IDE, DrRacket, verwenden, die Sie durch mehrere führt immer komplexere Lerner-Programmiersprachen, während Sie durch das Buch fortschreiten.

    
Brian Guthrie 14.03.2009 14:16
quelle
1

"Wie man wie ein Informatiker denkt" ist ein gutes Open-Source-Buch über die Programmierung in Python. Ich finde HTDP und SICP etwas zu akademisch.

    
Brian 09.02.2009 19:42
quelle
1

Ich weiß, dass dies Ihre Frage nicht direkt beantwortet, aber Sie könnten meinen Kommentar nützlich finden.

Ich habe einen Hintergrund in T-SQL, C # und ein bisschen Perl. Seit 1996 arbeite ich als DBA und Datenbankentwickler und bin sehr daran interessiert, meine Programmierkenntnisse zu verbessern. Ich kann jede Sprache ziemlich schnell aufnehmen (außer Perl und Assembly), aber ich bin schwach im Design. Also nahm ich SICP und fand es sehr steil und zu stark auf Engineering / Wissenschaft konzentriert. Ich arbeite jetzt durch HtDP und finde es großartig, weil es viele Übungen zu folgen gibt und das Tempo mir perfekt passt. Offensichtlich werden einige Bücher besser zu Ihnen passen als andere, aber wenn Sie mit diesem Buch fertig sind, sollten Sie bereit sein, jede andere Sprache zu lernen, sei es Python, C, Java oder was auch immer.

    
Mark Allison 30.11.2009 10:54
quelle
1

Ich schreibe HTDP zu, dass er mir beigebracht hat, rekursiv zu denken, effektiv zu abstrahieren und Probleme in kleinere Teile zu zerlegen. Es ist ein großartiges Programmierhandbuch für Anfänger. Als jemand mit einem Mathe-Hintergrund, wirst du es zum Frühstück essen.

    
twf 27.03.2012 19:05
quelle
0

Kaufen Sie ein anständiges Lernprogramm C ++ - Buch. Ich schlage C ++ in 24 Stunden vor, es war das, was ich beim Lernen benutzt habe.

Nein, du wirst in 24 Stunden nicht lernen. Oder 24 Tage. Vielleicht ein bisschen 24 Wochen, und 24 Monate werden Sie definitiv auf den richtigen Weg bringen.

Wichtig ist, dass Sie ein Buch benötigen, das Sie sowohl durch Programmieren als auch durch Programmieren in Ihrer Sprache führt. Ich empfehle C oder C ++. "Die C-Programmiersprache" ist das Buch über C; habe es aber nicht gelesen, also kann ich nicht weiter kommentieren ...

    
Paul Nathan 05.02.2010 23:56
quelle
0

Meiner Meinung nach gibt es drei Möglichkeiten, ein guter Programmierer zu werden:

  1. Durch Hingabe und gründliches Studium von Büchern und Online-Materialien;
  2. Mach es und spiele damit, bis du es verstehst; oder
  3. Von einem guten Programmierer unterrichtet zu werden.

Option 1 funktioniert, weil Sie sich bewusst dazu zwingen, wie ein Programmierer zu denken, indem Sie Probleme lösen, die Ihnen gestellt werden. Option 2 funktioniert, weil Sie unbewusst darauf konditioniert sind, wie ein Programmierer zu denken, indem Sie Probleme lösen, die Sie selbst erstellen. Option 3 funktioniert, weil wirklich gute Programmierer wissen, wie man Menschen programmieren kann, die nicht programmieren wollen.

Klingt so, als ob Sie für Option 1 gehen würden. Ich ging mit Option 2 als Kind, und ich denke, es ist das Beste. Jetzt versuche ich, Option 3 für die Leute bereitzustellen, wenn ich kann.

Ich glaube, dass Hochsprachen wie Ruby, Python und Java als Einführungssprachen einzigartig schlecht sind. Sie führen die Leute im schlimmsten Fall dazu, die Funktionsweise der Maschine völlig zu missverstehen oder zu ignorieren und im besten Fall zu vergessen, dass Zeichenketten schwierig sind .

    
Jon Purdy 06.02.2010 00:21
quelle
-1

Das soll in keiner Weise gemein sein, aber wenn Sie Fahrradfahren lernen wollten, würden Sie mit einem Buch über die elementaren Gesetze der Physik beginnen (Momentum, Zentripetalkraft, etc.)? Wenn Sie sich ein Lego-Kit gekauft haben, würden Sie anfangen, Bücher über die Theorie des Mauerwerks und der Konstruktion zu lesen?

Ich wette, als du anfingst, Geschichte zu lernen, hast du nicht damit begonnen, "wie man Geschichte lernt" - du liest Bücher über historische Perioden, die dich faszinierten und dich bewegten und dich zum Nachdenken brachten.

Anstelle theoretischer Forschung sollten Sie ein Buch über Ruby kaufen, das Programm herunterladen und zuerst mit der Sprache experimentieren. Verstehen Sie die Grundlagen der Sprache, wie die Elemente miteinander zu verbinden scheinen. Und nachdem Sie einige Zeit damit verbracht haben, einfache Programme zu erstellen, lesen Sie Ihre theoretischen Bücher. Gehe zwischen Praxis und Theorie hin und her.

Zugegebene Leute sind anders, und nicht jeder wird mit dieser Technik gedeihen. Aber ich denke, dass es die Konzepte klarer erscheinen lassen, wenn man sich die Hände schmutzig macht, als zuerst die Konzepte zu lernen.

    
johnbr 19.02.2009 14:50
quelle
-1

Es ist immer gut, mit Hallo Welt zu beginnen und von dort mehr zu lernen.

    
Chris Ballance 14.03.2009 14:26
quelle

Tags und Links