Ich hatte vor kurzem meine erste Programmierprüfung ... und nun, ich habe sie so ziemlich abgelehnt. Hat sich überhaupt nicht gut gemacht. Ich kann nur mich selbst beschuldigen, da ich außerhalb der College-Zeit so ziemlich nichts getan habe.
Jetzt, nahe der Sommerzeit, habe ich eine weitere und ich lasse nicht zu, dass dies wieder vorkommt. Seit ein paar Wochen lese, lese und lese ich noch mehr. Ich gehe immer wieder die älteren Dinge durch, die ich verpasst habe, und die neueren Dinge, die wir tun. Ich kann also offensichtlich einen großen Unterschied in meinem Sprachverständnis feststellen. Aber das war es auch schon. Ich kann den Code lesen und habe jetzt eine Vorstellung davon, was im Code vor sich geht ... aber wenn ich den Code selbst schreibe, bin ich einfach ahnungslos. Es ist, als wüsste ich nie, wie ich vorgehen soll, und kann die Fragen nie wirklich vollständig nachvollziehen.
Ich habe jeden Tag eine ganze Menge gelesen (in den letzten Monaten ungefähr 5-6 Stunden) ... Aber wenn ich meine IDE öffne, fühle ich mich immer zum Scheitern verurteilt, es ist wirklich demotivierend. Vor allem, weil ich Kenntnisse über Knoten, Listen, Arraylisten, Schnittstellen usw. habe, sie aber nicht nur auf einer Seite lesen kann, auf der es darum geht. Ich kann genau auf alles hinweisen, was in einem Programm vor sich geht, also finde ich es gut, einen Presample-Code zu kommentieren ... aber meinen eigenen Code zu schreiben, ist eine andere Geschichte.
quelle
Antworten:
Sie lernen, wie man Programme schreibt, indem Sie Programme schreiben.
Aber du musst klein anfangen, Mann.
Von dort aus beginnen zu bauen ...
und dann...
... und so weiter. Sobald Sie die Grundlagen der Funktionsweise von Objekten verstanden haben, ist es viel einfacher, größere Programme zu schreiben.
quelle
Gute Frage! Es ist wichtig zu wissen, dass Sie mehrere Lernkurven zum Klettern haben. Nur damit Sie nicht glauben, dass Sie nur eine Programmiersprache lernen. Du machst ziemlich viel mehr als das.
Sie lernen über ...
Ich vermute, dass es Punkt drei ist, an dem Sie Probleme haben. Sie lernen, wie man Dinge in Code sagt (Syntax), aber Sie fragen uns wirklich, was ich in Code sagen soll. Gibt es einen richtigen und einen falschen Weg, um Dinge zu tun?
Ich würde vorschlagen, dass Sie sich einer Herausforderung stellen. Schauen Sie sich das Folgende als Übung an.
http://en.wikipedia.org/wiki/Eight_queens_puzzle
Das ist eine schwierige Herausforderung. Sie müssen acht Damen auf ein Schachbrett legen, damit jede der Damen voreinander sicher ist.
Als Anfänger kann dies eine Übererfüllung sein. Sie können sich dieses Problem jedoch ansehen und lernen, wie man Code schreibt.
Hier ist eine Strategie zum Ausprobieren ...
Wiederholen Sie das Problem, um viel einfacher zu sein als das angegebene Problem, das gelöst werden soll . Vergiss die acht Königinnen. Konzentriere dich nur auf einen. Erfahren Sie, wie Sie den Code schreiben, um ein Schachbrett im Speicher darzustellen, eine einzelne Dame auf dieses Brett setzen und ihn dann dem Benutzer auf dem Bildschirm nur in Textform anzeigen.
Sobald Sie einen Stich in Schritt 1 gemacht haben, platzieren Sie zwei Königinnen so, dass beide sicher sind.
Versuchen Sie schließlich, mehr als zwei Damen auf dem Brett zu platzieren, damit sie alle sicher sind.
Die obigen Schritte sind eine Weiterentwicklung einer Entwurfsstrategie, die als schrittweise Verfeinerung bezeichnet wird. Es ist ein bisschen altmodisch in Bezug auf Design, aber es bringt Sie in kürzester Zeit von einem leeren Bildschirm zu einem interessanten Code.
Es gibt andere Design- und Implementierungsstrategien: Testgetriebenes Design, objektorientiertes Design und Designmuster, um nur einige zu nennen.
Mit der Zeit werden Sie diese Strategien zum Arsenal hinzufügen und sie nach Bedarf anwenden. Je mehr Designstrategien Sie lernen und üben, desto einfacher wird es.
Möge die Quelle mit dir sein.
quelle
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.
Programmieren im Kleinen
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:
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:
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:
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:
quelle
Ich weiß, das ist nicht die Antwort, die Sie hören wollen, aber: Schreiben Sie mehr Code!
Untersuchen Sie genauer den Code, den Sie verstehen. Es hilft mir oft, es ins normale Englisch zu "übersetzen" (da ich ein relativer Anfänger bin).
Haben Sie keine Angst davor, Ihre Idee, zuerst einen Code zu schreiben (z. B. "Ich möchte hier eine Variable deklarieren, dieses Segment durchlaufen usw."), zu überdenken und dann Stück für Stück nachzuschlagen, wie diese verschiedenen Segmente zu tun sind.
Denken Sie daran, dass das Codieren weniger wie eine Übung zum Auswendiglernen ist, als dass Sie einen Weg finden, etwas aus Bausteinen zu konstruieren. Ähnlich wie beim Erlernen einer Fremdsprache steht das Verständnis an erster Stelle. Dies ist ein gutes Zeichen dafür, dass Sie auf einem guten Weg sind.
Glauben Sie nur, je mehr Sie Code schreiben und lesen, desto sinnvoller wird es.
quelle
Wie andere gesagt haben, ist dies ein Fall, in dem Sie üben, üben, üben müssen.
Schreiben Sie eine Reihe kleiner Programme, die nur ein Problem lösen
Manchmal ist es das Schwierigste, etwas zu finden, das es wert ist, programmiert zu werden. Wenn Sie können, versuchen Sie, in einem Thema zu arbeiten, mit dem Sie Ihrer Meinung nach zu kämpfen haben - wie Klassen, Vererbung usw.
GetArea
. Lassen Sie nun die Klassen Triangle und Rectangle von Polygon erben und stellen Sie sicher, dass sie GetArea implementieren. Führen Sie dies für Polygone höherer Ordnung (Fünfeck, Sechseck usw.) aus.* Der Zweck von Code Golf besteht darin, die bereitgestellte Aufgabe mit der geringsten Anzahl von Zeichen, Bytes oder einer anderen in der Frage angegebenen Metrik auszuführen. Wenn Sie einige der Antworten lesen, werden Sie schnell die clevere Art und Weise zu schätzen wissen, wie Menschen diese Probleme lösen. Konzentrieren Sie sich nicht darauf, das Problem in den wenigsten Bytes zu lösen! Die Leute, die Code Golf posten, sind sehr erfahrene Programmierer. Einige der Fragen bieten jedoch einfache Aufgaben für sich.
Einige lustige Code Golf Beispiele:
Grundstruktur zur Lösung eines Problems:
Viele davon geben Ihnen eine gute Vorstellung davon, wie eine Funktion aussehen sollte. Wenn Sie X und Y angeben, sollte das Ergebnis Z sein:
Um die Grundlagen zu erlernen und sich mit einer Sprache vertraut zu machen, ist die oben stehende Vorlage ausreichend. Eine objektorientiertere Vorlage wäre:
Wenn es hilft, schreiben Sie es auch auf Papier. Sprechen Sie selbst darüber , wie Sie als Mensch dieses Problem lösen würden. Beispiel: Zeigen Sie die Zahlen i, j und k in absteigender Reihenfolge an. Als Person ist es einfach zu lösen. Der schwierige Teil besteht darin, Ihre Ideen in zeilenweise Anweisungen umzusetzen, damit ein Computer sie lösen kann.
Versuchen Sie auch, Ihre eigenen Ideen zu entwickeln. Es kann schwierig sein, aber selbst das einfachste Programm kann Ihnen etwas beibringen, was Sie nicht wissen. Der springende Punkt ist, sich mit den Grundlagen vertraut zu machen, bis sie zur zweiten Natur werden.
quelle
Sie kommen nicht weiter, wenn Sie nur Code lesen. Sie müssen Code schreiben. Einfach Code schreiben. Mach dir keine Sorgen, wenn der Code, den du schreibst, Mist ist. Jeder hat Mistcode geschrieben. Manche Menschen leben davon. Niemand fängt an, guten Code zu schreiben, und ich bin der Meinung, dass es beim Lernen fast notwendig ist , schlechten Code zu schreiben, weil erst dann der Unterschied zwischen gutem und schlechtem Code wirklich offensichtlich wird.
Es ist schwer, den Unterschied zwischen gutem und schlechtem Code zu erkennen, wenn Sie zwei Codeblöcke lesen, die dasselbe tun. Wenn Sie jedoch ein Skript geschrieben haben und jemanden mit Kenntnissen darin beauftragen, es zu überprüfen und Feedback zu geben, wird der Unterschied häufig deutlicher, weil Sie können es direkt auf das anwenden, was Sie wissen.
Programmieren kann man nicht durch Auswendiglernen lernen. Es ist nicht wie Ihre Zeitpläne oder Daten in der Geschichte. Das Programmieren ist eine praktische Fähigkeit, die ständige Übung erfordert, um scharf zu bleiben. Programmieren lernen, ohne Code zu schreiben, ist wie Schwimmen lernen, indem man ein Buch liest.
quelle
Diese Frage hat bereits einige wirklich gute Antworten, aber es gibt ein paar Gedanken, die ich noch nicht gesehen habe.
Das Erlernen einer Programmiersprache ähnelt dem Erlernen einer „echten“ Sprache: Es ist immer viel einfacher zu lesen als zu schreiben, sei es ein einzelner Satz, eine wissenschaftliche Arbeit oder ein Buch. Beim Lesen kann man viel aus dem Kontext herausfinden, indem man den Text oder Code beim Lesen versteht. Wenn Sie ein Wort sehen, das Sie nicht kennen, kennen Sie vielleicht ein anderes Wort mit demselben Stamm. Wenn Sie eine Methode sehen, gibt Ihnen der Name der Methode eine gute Vorstellung davon, was sie tut. Beim Schreiben müssen Sie sich nicht nur die Syntax, sondern auch die tatsächlich zu verwendenden Wörter merken. Und das Gleiche gilt für die Programmierung.
Wie andere gesagt haben, können Sie nicht lernen , Programme nur durch Lesen von Programmen zu schreiben .
Fangen Sie klein an. Suchen Sie nach einem Java-Tutorial und führen Sie alle Einheiten nacheinander aus. Und wenn Sie sicher genug sind, wählen Sie ein kleines Projekt, um Ihre Fähigkeiten zu testen, vielleicht ein einfaches Spiel, das Sie gut kennen und das nicht zu viel GUI-Interaktion erfordert. Wenn Sie sich entschieden haben, öffnen Sie nicht einfach Ihre Sonnenfinsternis und starren Sie auf die "leere Seite". Erstellen Sie ein Storyboard. Sie müssen keine aufwändigen UML-Diagramme zeichnen, sondern nur darüber nachdenken, wie bestimmte Aspekte des Programms gelöst werden könnten - wie sich die Geschichte oder Ihre Argumentation sozusagen entwickelt. Und wenn Sie den Code schreiben, beginnen Sie mit einem groben Entwurf. Normalerweise schreibe ich viele Kommentare, in denen ich beschreibe, was das Programm in welcher Reihenfolge tun soll, und beginne dann, den eigentlichen Programmcode einzugeben.
quelle
Wie andere sagen, müssen Sie nur das Schreiben von Code üben. Damit dies funktioniert, müssen Sie sich mit der Lösung eines Problems herausfordern, sei es das Drucken vordefinierter Nachrichten, das Erstellen eines einfachen interaktiven Rechners oder das Lösen einer bestimmten Aufgabe.
Wenn Ihnen die Inspiration fehlt, bietet Project Euler eine Fülle von Mathe- / Programmierübungen mit zunehmendem Schwierigkeitsgrad. Sie geben Ihnen klare und herausfordernde Ziele, die Sie erreichen müssen, und sollen Ihnen dabei helfen, Programme komfortabler zu gestalten.
quelle
Ich dachte nur, ich mische mich in dieses Thema ein, weil es wirklich in der Nähe von zu Hause ankommt.
Sie haben soeben müssen beginnen Codierung. Verstehen Sie mich nicht falsch, das Lesen ist großartig, aber was Ihnen wirklich vermittelt, dass das Arbeiten mit Programmierkenntnissen tatsächlich etwas aufbaut. Ich habe mehr aus einem einzelnen Sommerpraktikum gelernt als im Vorjahr, als ich darüber gelesen habe.
Ich sollte auch hinzufügen, dass Sie nicht einfach blind mit dem Codieren beginnen sollten . Mach ein Projekt für dich. Sie brauchen eine Richtung, in die Sie sich hineinversetzen, damit Sie wissen, was Sie machen wollen. Sie werden überrascht sein, wie viel Sie schnell lernen werden. Wenn Sie nur eine IDE öffnen und anfangen, einfache Beispiele für die Hallo-Welt zu erstellen, wird dieses demotivierende Gefühl schnell auf Sie zukommen. Finde etwas mit ein wenig Tiefe und bevor du es merkst, wirst du es erweitern.
quelle