it-swarm.com.de

Meinen Problemlösungsansatz auf Papier schreiben?

Ich bin ein Neuling in der Informatik und wir haben gerade angefangen, einige aktuelle Projekte in Python zu machen. Ich habe festgestellt, dass ich sehr effizient bin, wenn ich die Stift- und Papiermethode verwende, die mein Professor im Unterricht vorgeschlagen hat. Aber wenn ich mein Problem nicht aufschreiben und meine Algorithmen auf Papier ausarbeiten kann, bin ich sehr langsam. Während der Labore muss ich die Aufgabe immer wieder in mein Wohnheim zurückbringen. Wenn ich dort ankomme und es aufschreibe, löse ich das Problem, das mich die ganze Klasse gekostet hat, in nur 5 Minuten.

Vielleicht liegt es daran, dass ich gestresst bin, wenn Leute vor mir Labore lösen. Oder vielleicht ist es die Stift-Papier-Methode.

Ich habe in Foren gestöbert und jemand hat geschrieben, dass man kein Programmierer sein sollte, wenn man seine Programme auf Papier schreiben muss. Ich mache mir wirklich Sorgen, weil ich so viel besser bin, wenn ich sehen kann, was das Programm tut, und mich durch das Programm verfolgen kann, bevor ich den eigentlichen Code eingebe. Mache ich etwas falsch?

Bearbeiten: Tut mir leid, dass ich unklar bin, aber als ich sagte, dass ich auf Papier schreibe, meinte ich, dass mein Lösungsansatz (z. B. Beispiele schreiben, Tabellen mit Werten erstellen usw.) nicht mein eigentlicher Code ist. Ich benutze nur das Papier, um meine Ideen zu verbreiten.

54
ComicStix

Es ist nichts Falsches daran, Ihre Algorithmen zuerst auf Papier zu erarbeiten. Nicht so sehr für die alltägliche Codierung, sondern für komplexere Algorithmen arbeiten professionelle Programmierer diese ständig auf Papier oder einem Whiteboard aus, insbesondere wenn ein grafisches Format dies klarer macht. Für einen Studenten ist jedes Programm komplex.

Wenn Sie jedoch das Entwerfen von Algorithmen am Computer verbessern möchten, können Sie einige Techniken üben. Beginnen Sie nicht einfach damit, den Code zu schreiben, schreiben Sie die gleichen Dinge, die Sie als Kommentare auf Papier bringen würden, und erweitern Sie ihn dann nacheinander zu echtem Code oder detaillierteren Kommentaren.

Wenn ich beispielsweise ein Element aus der Mitte einer verknüpften Liste lösche, beginne ich möglicherweise mit etwas wie:

// find the element
// point the previous element to the next element
//    How do I get a pointer to the previous element?
//        doubly-linked list?
//        another find?
//        keep track during the first find?
// delete the element

Dann könnte ich // find the element Durch eine Funktion mit mehr Pseudocode ersetzen und weitermachen, bis ich eine vollständige Lösung habe. Denken Sie nicht, dass Code linear geschrieben werden muss.

70
Karl Bielefeldt

Tue es! Wenn wir das, was Sie tun, als Denken und Entwerfen Ihre Lösung bezeichnen, ist es sinnvoll, dass Ihr Prozess viel schneller ist, als nur Code zu sprengen.

Die Leute denken gerne (und die Lauten sagen uns gerne), dass ihre Vorgehensweise besser ist. Aber jeder hat unterschiedliche Fähigkeiten und Fertigkeiten. Tun Sie also, was für Sie funktioniert. Wenn Sie üben, werden Sie wahrscheinlich mehr Designarbeit in Ihrem Kopf erledigen und Papier für größere Probleme verwenden.

Eine Sache, auf die Sie achten müssen, ist, wie die Prüfungen aussehen werden. Werden sie auf Papier sein oder werden sie computergestützt sein? Wenn sie auf Papier basieren, verschafft Ihnen Ihr Weg einen Vorteil. Wenn sie computergestützt sind, ist das auch in Ordnung: Entwerfen Sie auf Papier und schreiben Sie den Code. Was auch immer am besten funktioniert!

15
andy256

Ich schreibe keinen tatsächlichen Code auf Papier, aber für alles, was nicht trivial ist, beginne ich fast immer mit einem Whiteboard oder einem Notizbuch. Normalerweise skizziere ich:

  • Algorithmen/Prozess/Kontrollfluss
  • Datenstrukturen
  • Beziehungen
  • Komponenten (wie kann ich dieses Problem lösen)

Es ist normalerweise eine Kombination aus Skizzen, Pseudocode und Englisch.

Ich finde, dass es auf diese Weise einfacher zu visualisieren ist, wenn ich mit dem Codieren beginne. Ich werde auch Fehler erkennen, bevor ich mit dem Code beginne, weil ich alles vor mir sehen kann (anstatt unaufhörlich zu scrollen und Fenster zu hüpfen). Nicht nur das, sobald es ausgeschrieben ist, kann ich Dinge im Hinterkopf bilden lassen, während ich an anderen Aufgaben arbeite. Ich kann auch nichtlinear arbeiten und eine Idee auf Papier bringen, wenn sie mich trifft, und dann darauf zurückkommen, wenn ich den Punkt erreicht habe, an dem ich sie brauche.

Etwas auf Papier zu bringen ist eine enorme Hilfe für die Speichererhaltung. Der Slogan für Field Notes-Marke von Notebooks lautet:

Ich schreibe es nicht auf, um mich später daran zu erinnern, ich schreibe es auf, um mich jetzt daran zu erinnern.

Nachdem ich mich gezielter darum gekümmert habe, Dinge auf Papier zu schreiben, stelle ich fest, dass der Gedanke in meinem Kopf weitaus besser zementiert ist, als nur die elektronische Notiz zu machen, selbst wenn ich einen Moment später einen Eintrag in der ToDo-App auf meinem Telefon mache. IOW, durch die Planung meiner Codierung auf Papier/Whiteboard bleiben die Ideen besser in meinem Kopf.

Es dient auch als praktische Referenz, wenn es Zeit ist, zu dokumentieren, was ich geschrieben habe.

6
alroc

Ich glaube nicht, dass irgendetwas von Natur aus falsch ist, wenn man zuerst Code (Pseudo oder auf andere Weise) auf Papier entwirft - es ist wirklich nicht anders, als ihn auf ein Whiteboard zu schreiben, was viele Leute tun, wenn sie darüber diskutieren, wie man ein Problem angeht.

Schreiben Sie zuerst Entwürfe von Aufsätzen für Nicht-CS-Klassen auf Papier, bevor Sie sie abtippen? Tatsächlich habe ich das vor Jahren gemacht, als ich noch Student war, aber nach meinem ersten Studienjahr habe ich mich gezwungen, alle Entwürfe auf einen Bildschirm zu schreiben, da dies das Schreiben nachfolgender Entwürfe so viel einfacher machte und die gleiche Idee gilt Code schreiben.

Ich würde vorschlagen, dass Sie versuchen, Ihre Algorithmen auszutippen, auch wenn es sich nur um einen Texteditor wie Word handelt. Je mehr Sie es tun, desto komfortabler können Sie sich nicht auf Papier und Stift verlassen. Und wenn Ihre Schreibfähigkeiten etwas fehlen und dies tatsächlich die Quelle Ihrer Frustration ist, nehmen Sie an einem Schreibkurs teil! Es wäre das Beste, was Sie für Ihre zukünftige Karriere tun könnten.

5
Derek

Das Lösen des Problems und das Schreiben des Codes, der Ihre Lösung implementiert, sind zwei verschiedene Aktivitäten.

Wenn Sie mit einer Sprache nicht vertraut sind, werden Sie viel Zeit mit dem Code selbst verbringen - und nicht genug, um eine gute Lösung zu finden. Wenn Ihnen Papier, Whiteboard oder das Beginnen an der Decke dabei helfen, dann tun Sie es auf jeden Fall.

(Ich persönlich steige vom Computer ab und laufe im Kreis herum, um eine Lösung in meinem Kopf zu finden.)

3
ptyx

Sie werden Interviews mit Ass! Sie lassen Sie Code auf Papier oder das Whiteboard schreiben. Ich bin genau das Gegenteil. Der Versuch, Klammern zu schreiben oder mit einem Stift auszuschneiden und einzufügen, ist SO mühsam!

Mein Vater hat beim Programmieren von COBOL viel Papier verwendet. Ich denke, es ist nur dein Denkstil.

2
Chloe

Es ist nichts Falsches an dem, was Sie tun. Ich habe gelernt, auch mit Papier und Stift zu programmieren.

Wie andere vorgeschlagen haben, tun Sie, was für Sie funktioniert. Ich erinnere mich an das erste Java Programm, das ich geschrieben habe, war hauptsächlich auf Papier und dann habe ich zwei Stunden damit verbracht, es zu tippen und fünfzehn Minuten zu weinen, als ich mehr als 200 Compilerfehler sah. Es gab mehr, aber der Compiler würde nur Die ersten 200 zeigen! Der Punkt, den ich jedoch mache, ist, dass ich durch das Schreiben des Codes auf Papier den grundlegenden Algorithmus und die Funktionalität für das, was das Programm tun musste, durchdenken konnte. Der Compiler wies auf die Gründe hin, warum mein Programm dies nicht tun würde. 90% der Probleme waren Ausnahmen außerhalb der Grenzen mit Arrays.

Wenn Sie mehr Erfahrung und Selbstvertrauen gewinnen, werden Sie weniger Stift und Papier verwenden. Sie wissen bereits, wie Sie grundlegende Konzepte wie for-Schleifen usw. verwenden. Sie haben Beispiele in anderen Programmen, die Sie wiederverwenden können. Sie verwenden den Compiler und ein IDE, um offensichtliche Fehler beim Schreiben des Programms zu finden. Im Moment haben Sie diese Erfahrung jedoch nicht.

Wenn ich Ihre Frage durchlese, frage ich mich, ob einige Ihrer Probleme möglicherweise auf den Fokus zurückzuführen sind. Wenn Sie mit Stift und Papier in einer ruhigen Umgebung besser fokussieren können.

Du bist noch am College und lernst noch. Letztendlich ist alles, was Sie tun, das, was für Sie funktioniert. Wenn Sie mit Papier und Stift Ihre Gedanken ordnen und klar und ruhig denken, dann programmieren Sie.

0

Früher hatten wir eine zweisemestrige Klasse mit dem Namen The Basics of Programming. Sowohl die Tests zur Semestermitte als auch die Prüfungen am Ende wurden auf Papier durchgeführt. Wenn Sie Kompilierungsfehler gemacht haben, haben Sie eine Menge Punkte verloren. Wenn Sie große Kompilierungsfehler gemacht haben, sind Sie fehlgeschlagen. Ich bin jedoch der Meinung, dass es in uns die Fähigkeit entwickelt hat, in relativ kurzer Zeit einen Blick auf jeden Code zu werfen und fehlerhafte Zeilen zu finden.

0
András Hummer