Ein kurzes Vorwort
Learn By Doing: Wissen versus Know-how
Es gibt einen großen Unterschied zwischen Wissen und Know-how. Es ist ein häufiger Fehler für neue Lernende, zu denken, dass sie die Gründe für das Schreiben des Programms so verstehen, wie es ist, weil sie ein Programm "verstehen" können, während sie es lesen.
Und der einzige Weg, um zu diesem zweiten Teil zu gelangen, ist das Üben. Setzen Sie sich, öffnen Sie einen Texteditor, eine Befehlszeile und rufen Sie diese auf.
Es ist wahrscheinlich (und zu erwarten), dass Sie zu diesem Zeitpunkt nur begrenzt verstehen können, wie mehrere komplexe Softwarekomponenten miteinander interagieren. Und es ist eigentlich eine gute Sache, denn es zwingt Sie, von den Grundlagen auszugehen. Springen Sie nicht mit der Waffe und bewegen Sie sich im richtigen Tempo: Beginnen Sie mit kleinen Übungen für kleine Aufgaben.
Um ehrlich zu sein, war ich noch nie davon überzeugt, dass der Einstieg in das Programmieren mit Java der richtige Weg ist. Es ist an sich zu komplex, um Ihnen den Einstieg zu erleichtern, und die meisten Java-Bücher werden ziemlich entmutigend erscheinen. Trotzdem ist es mit Sicherheit möglich (zumindest für einige Bereiche des globalen Wissens, das wir von Programmierern erwarten), solange Sie sich darauf beschränken, Schritt für Schritt zu lernen.
Bücher
Da Sie auf Java eingestellt sind und ein anständiges Java-Buch benötigen, würde ich Folgendes empfehlen:
- In Java denken . Es ist in Ordnung, obwohl jetzt etwas veraltet.
- Das Java-Tutorial . Es ist nicht gerade der beste Begleiter für Lernende, aber eine großartige Referenz, die Sie zur Hand haben sollten, da sie alle Grundlagen abdeckt und Beispiele liefert. Das Erlernen der Programmiersprache Java Trail sollte wahrscheinlich auf Ihrer Leseliste sein, obwohl ich glaube , es wäre für Anfänger entmutigend sein , wie es Konzepte der zunächst zu erfassen hart sein kann.
- Effektives Java . Es ist kein großartiges Lernbuch, aber auch eine großartige Referenz, die Sie für später zur Hand haben sollten. Nicht in einer Sitzung zu lesen, sondern in mundgerechten Stücken.
Ich erwähne das nur, weil ich nicht weiß, was du im Unterricht verwendest. Es gibt eine Menge anderer Bücher. Einige sind gut. Einige werden die Schüler für Jahre lähmen.
Ihr Lernprozess
Der grundlegende Workflow
Ab sofort rate ich Ihnen, diesen zweistufigen Prozess für alle Übungen und Codebeispiele zu befolgen, die Sie im Unterricht gesehen haben:
- Lese und lerne
- Lies die Übungen
- Stellen Sie sicher, dass Sie sie verstanden haben
- Code
- schliesse das Buch
- Setzen Sie sich mit diesem Code-Editor und der Befehlszeile vor einen Computer
- Versuchen Sie, das Programm selbst neu zu schreiben
Im Falle eines Ausfalls
Wenn Sie versagen und das Gefühl haben, einen Blick in das Buch werfen zu müssen, ist es wahrscheinlich, dass Sie eines der folgenden Probleme haben:
- (höchstwahrscheinlich), dass Sie die Lösung nicht verstanden haben,
- (weniger wahrscheinlich), dass Sie vergessen haben, wie ein bestimmtes Teil der Lösung aussieht: Syntax, API-Verwendung, ...
Die erste Ursache ist wahrscheinlich, was Sie am häufigsten konfrontiert sind. Der zweite ist anekdotisch. Beides wird durch wiederkehrende Praxis angesprochen.
Wenn Sie eines dieser frühen Beispiele nicht umsetzen können, lesen Sie das Buch erneut und schließen Sie es dann erneut. Code nicht beim Betrachten des Buches. Ich würde sogar raten, dass Sie Ihre gesamte Lösung löschen und von vorne beginnen. Die Wiederholung ist ein lästiger, aber wichtiger Teil des Lernprozesses.
Nimm das nicht leicht. Jedes Mal, wenn Sie den Drang verspüren, sich zu sagen "Ja, ok, ich weiß das" oder "Ich bin zu 90% da, es ist fast so gut wie erledigt" und möchten zu einem anderen Abschnitt springen, diesen Drang bekämpfen und von vorne beginnen. Es ist sehr schwierig, die Ehrlichkeit zu haben, sich eingestehen zu müssen, dass Sie ein Konzept nicht vollständig verstanden haben.
Randbemerkung: Ich halte es für einen großen Nachteil, dass die meisten Schulprogramme jetzt versuchen, die Kurse zu "kicken", indem sie die Dinge zu sehr beschwichtigen und den Schülern zu fortschrittliche Werkzeuge zur Verfügung stellen Auswendig Dinge, die später in Ihrer Karriere durch Ihre Tools automatisiert werden und an die Sie sich manchmal sogar kaum erinnern werden. Es soll dir alle Teile beibringen, die herumschweben.
Im Erfolgsfall: Gehen Sie weiter!
Wenn Sie Ihre Übung erfolgreich durchführen können, müssen Sie nicht direkt zur nächsten springen. Versuchen Sie zu sehen, was Sie tun können, um das zu verbessern. Können Sie die angeforderte Ausgabe ändern? Ein kleines Feature hinzufügen? Eine Option? Versuchen Sie es, da Sie sich jetzt in der Spaßzone befinden, in der Sie die Hauptschwierigkeiten überwunden haben, und diese selbst auferlegten kleinen Anforderungen Ihre Stimmung mit größerer Wahrscheinlichkeit ein wenig aufrechterhalten.
Gehen Sie jedoch nicht zu weit: Sie müssen das Alphabet nicht drucken und umkehren, um es plötzlich auf einer Diagonale mit einem Farbverlauf auf dem Bildschirm erscheinen zu lassen. Mach kleine Schritte. Lernen ist ein langer und sich wiederholender Prozess, und Sie müssen Probleme mit zunehmendem Schwierigkeitsgrad angehen (siehe zum Beispiel, wie ich normalerweise daran denke , Rekursionen zu erklären ).
Es ist nur Lernen - Ein Vergleich
Ihr Problem hängt eigentlich überhaupt nicht mit der Programmierung zusammen. Es ist dasselbe Problem, auf das Tausende von Menschen stoßen, wenn sie versuchen, Mathematik zu lernen.
Wenn Sie ihnen ein Problem geben, sehen sie nicht, wie sie sich zur Lösung durcharbeiten sollen. Wenn Sie jedoch die Lösung für sie aufschreiben, werden die meisten das verstehen und denken: "Verdammt, das war so einfach!". Sie werden ihnen jedoch ein ähnliches Problem mit unterschiedlichen Maßen und Hypothesen geben und sie werden es nicht lösen können: Sie haben die Logik dahinter nicht verstanden und sie brauchen Übung, um es selbst tun zu können.
Beachten Sie, dass dies ein häufiges Problem in der Mathematik ist, aber meiner Meinung nach ist es in vielen anderen Bereichen zu beobachten, in denen Logik erforderlich ist: Erlernen von Solfege, Sprachgrammatik, Physik usw. Und es liegt nicht an einer "natürlichen" Fähigkeit Um diese Dinge zu verstehen: Es kommt nur auf die Praxis an (sei es in diesem Bereich oder in anderen Bereichen, die den Einzelnen dazu bringen, Konzepte auf diesem Gebiet leichter zu verstehen).
Es gibt keinen Grund, warum Sie nicht lernen können, Code zu schreiben. Sie müssen es einfach weiter versuchen, bis Sie dieses "ah ah!" / Eureka-Moment. Fahren Sie dann mit dem nächsten, schwierigeren Problem fort.
Diese können auch (später) helfen: