Schreiben Sie meinen Lösungsansatz auf Papier? [geschlossen]


54

Ich bin ein Anfänger in 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 Labors muss ich den Auftrag immer in mein Wohnheim zurückbringen. Wenn ich dort ankomme und es aufschreibe, löse ich das Problem, das mich die ganze Klasse in 5 Minuten gekostet hat.

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

Ich habe in Foren gestöbert und jemand schrieb, wenn Sie Ihre Programme auf Papier schreiben müssen, sollten Sie kein Programmierer sein. Ich mache mir große Sorgen, weil ich so viel besser bin, wenn ich sehen kann, was das Programm tut, und mich durch das Programm schaue, bevor ich den eigentlichen Code eingebe. Mache ich etwas falsch?

Edit: Sorry für die Unklarheit, aber als ich sagte, auf Papier zu schreiben, meinte ich meinen Lösungsansatz (z. B. das Schreiben von Beispielen, das Erstellen von Tabellen mit Werten usw.) nicht meinen tatsächlichen Code. Ich benutze nur das Papier, um meine Ideen zu verbreiten.


28
Ich kann nichts falsches daran sehen, das Problem zuerst auf Papier durchzudenken.
Julien Guertault


34
Diese Person ist falsch. Die meisten verwenden Abkürzungen wie UML oder Pseudocode-Blöcke, aber welche Methode auch immer Sie verwenden, um so zu funktionieren, wie Ihr Verstand funktioniert, und anscheinend benötigen Sie Papier =) Ich denke, Feynman sollte kein Physiker sein, weil er Gleichungen an die Tafel schreibt, oder?
Patrick Hughes

10
Die Herausforderung für Sie wird höchstwahrscheinlich darin bestehen, zu lernen, Dinge auf Papier zu erarbeiten, während Sie tatsächlich im Labor sind. Ingenieure und Wissenschaftler verwenden gewöhnlich Notizbücher aus Papier (und als Papierpfad), und ich habe mich immer gefragt, warum so viele IT-Mitarbeiter diesen Ansatz missachten. Ich bin ein Ingenieur, dessen Karriere ich damit verbracht habe, Code zu schreiben und die ganze Zeit über Notizbücher aus Papier zu verwenden.
18.

4
@ott-- Ich und meine Kollegen benutzen alle Stifte mit Notizbüchern. Zumindest für mich ist es ein guter Trick, den ich auf dem College gelernt habe. Wenn ich nicht in der Lage bin, ihn zu löschen, zwinge ich mich, mehr darüber nachzudenken, damit ich ihn nicht auf weitere Seiten verteilen muss. Darüber hinaus macht es die Versuchung, alles auf einer Seite zu halten, und die Möglichkeit, alles zu löschen, zu einfach, versehentlich etwas zu löschen, das Sie wollten. Falsche Ansätze können auch nur durchgestrichen und nicht gelöscht werden, sodass Sie daran erinnert werden, was Sie versucht haben und was nicht. Papier ist billig, mach es dir nicht schwerer.
Izkata,

Antworten:


70

Es ist nichts Falsches daran, Ihre Algorithmen zuerst auf Papier zu erarbeiten. Nicht so sehr für das alltägliche Codieren, sondern für komplexere Algorithmen, arbeiten professionelle Programmierer sie 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 den Entwurf von Algorithmen am Computer verbessern möchten, können Sie einige Techniken üben. Beginnen Sie nicht damit, den Code aufzuschreiben, sondern schreiben Sie die gleichen Dinge, die Sie als Kommentare auf Papier gebracht haben, und erweitern Sie ihn dann nacheinander in echten Code oder detailliertere Kommentare.

Wenn ich zum Beispiel ein Element aus der Mitte einer verknüpften Liste lösche, beginne ich 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 durch // find the elementeine Funktion mit mehr Pseudocode ersetzen und weitermachen, bis ich eine vollständige Lösung habe. Denken Sie nicht, dass Code linear geschrieben werden muss.


Guter Rat Karl.
andy256

2
Ich kombiniere die obige Methode mit der Problemlösung von Rubber Duck (meine ist allerdings ein SuSE-Plüsch), um den größten Teil meiner komplexen Arbeit zu erledigen. Ich habe auch den Luxus eines Whiteboards, auf dem ich viel schreiben kann.
Deco

+1. Wenn ich Fragen und Antworten schreibe, löse ich oft Dinge. Es zwingt mich, nach Fallstricken und Fallstricken in meinen Plänen zu suchen.
Andy Hunt

1
Sie werden feststellen, dass eine Reihe von Softwareentwicklungsunternehmen überall beschreibbare Oberflächen haben. Sie sind normalerweise mit Diagrammen, Pseudocode, Notizen und Werken gefüllt. Ich habe eine sehr starke Vorliebe dafür, Dinge aufzuschreiben. Wenn ich Code neu faktorisiere, finde ich es toll, wenn ich den Code tatsächlich ausdrucken und mit Anmerkungen versehen kann. Ich habe ein viel besseres Gefühl dafür als durchzulesen und mir Notizen zu machen.
Twirrim

1
Diese Technik hat tatsächlich einen Namen: den Pseudocode Programming Process
roufamatic

15

Tue es! Wenn wir das nennen, was Sie tun , um Ihre Lösung zu denken und zu entwerfen , dann ist es sinnvoll, dass Ihr Prozess viel schneller ist als nur das Heraussprengen von Code.

Die Leute denken gerne (und die lauten sagen uns gerne), dass ihre Art zu tun besser ist. Der Mix aus Fähigkeiten und Fertigkeiten ist jedoch unterschiedlich. Tun Sie also, was für Sie funktioniert. Mit zunehmender Übung werden Sie wahrscheinlich einen größeren Teil der Designarbeit in Ihrem Kopf erledigen und bei größeren Problemen Papier verwenden.

Eine Sache, auf die Sie achten müssen, ist die Form der Prüfungen. Werden sie auf Papier sein oder werden sie computergestützt sein? Wenn sie auf Papier basieren, bietet Ihnen Ihr Weg einen Vorteil. Wenn sie computerbasiert sind, ist das auch in Ordnung: Entwürfe auf Papier machen und dann den Code schreiben. Was auch immer am besten funktioniert!


1
Ich kann dafür bürgen, dass das Denken und Entwerfen der Lösung auf lange Sicht weniger Zeit in Anspruch nimmt. Zu oft sah ich an der Universität Leute (ich selbst eingeschlossen), die in 2 Stunden wegklapperten, nur um herauszufinden, dass ihre Lösung kaputt war. Wenn Sie sich die Zeit nehmen, das Problem zu entwerfen und zu bearbeiten, finden Sie eine einfache Lösung. Wir haben Whiteboards, Notizbücher und "Konsultationen", bei denen ich genau aus diesem Grund arbeite.
Jamie Taylor

6

Ich schreibe den eigentlichen Code nicht auf Papier, aber für alles andere beginne ich fast immer mit einem Whiteboard oder einem Notebook. Ich skizziere normalerweise:

  • Algorithmen / Prozess / Kontrollfluss
  • Datenstrukturen
  • Beziehungen
  • Komponenten (wie kann ich dieses Problem beheben?)

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

Ich finde, dass es auf diese Weise einfacher ist, zu visualisieren, wenn ich mit dem Codieren beginne. Ich werde auch Fehler entdecken, bevor ich mit dem Code beginne, weil ich alles vor mir sehen kann (anstatt unablässig zu scrollen und Fenster zu hüpfen). Nicht nur das, wenn es einmal aufgeschrieben ist, kann ich Dinge im Hinterkopf entstehen lassen, während ich an anderen Aufgaben arbeite. Ich kann auch nichtlinear arbeiten und eine Idee auf Papier bringen, wenn sie mir einfällt, und dann darauf zurückkommen, wenn ich den Punkt erreiche, an dem ich sie brauche.

Etwas auf Papier festzuhalten ist eine enorme Hilfe für die Erinnerung. Der Slogan für die Notebook-Marke Field Notes 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 um das Aufschreiben von Dingen auf Papier gekümmert habe, finde ich, dass der Gedanke in meinem Kopf viel 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 Handy vornehme. IOW, wenn ich meine Codierung auf Papier / Whiteboard plane, bleiben die Ideen besser in meinem Kopf.

Es ist auch eine nützliche Referenz, wenn es darum geht, meine Texte zu dokumentieren.


5

Ich glaube nicht, dass irgendetwas von Natur aus falsch ist, wenn man zuerst Code (Pseudo oder auf andere Weise) auf Papier schreibt - es ist wirklich nicht anders als, wenn man ihn auf ein Whiteboard schreibt, 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 abschreiben? Eigentlich habe ich das vor Jahren gemacht, als ich noch ein Student war, aber nach meinem ersten Jahr habe ich mich gezwungen, alle Entwürfe auf einem Bildschirm zu schreiben, da dies das Schreiben nachfolgender Entwürfe so viel einfacher gemacht hat, und die gleiche Idee gilt zum Schreiben von Code.

Ich würde vorschlagen, dass Sie versuchen, Ihre Algorithmen auszutippen, auch wenn es nur in einem Texteditor wie Word ist. Je mehr Sie es tun, desto komfortabler können Sie sich nicht auf Papier und Stift verlassen. Und wenn Ihre Schreibfähigkeiten etwas mangelhaft sind 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.


3

Das Problem zu lösen und den Code zu schreiben, 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 dabei Papier, Whiteboard oder das Beginnen an der Decke helfen, dann tun Sie es auf jeden Fall.

(Ich persönlich steige vom Computer aus und laufe im Kreis, um eine Lösung zu finden.)


2

Sie werden die Interviews begeistern! Sie lassen Sie Code auf Papier oder auf 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.


0

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


0

An Ihrer Arbeit ist nichts auszusetzen, ich habe gelernt, auch mit Papier und Stift zu programmieren.

Wie andere vorgeschlagen haben, tun Sie, was für Sie funktioniert. Ich erinnere mich, dass das erste Java-Programm, das ich schrieb, hauptsächlich auf Papier geschrieben war. Dann habe ich zwei Stunden damit verbracht, es abzutippen und fünfzehn Minuten geweint, als ich mehr als 200 Compiler-Fehler sah. Es gab mehr, aber der Compiler würde nur die ersten 200 anzeigen! Der Punkt, den ich aber 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 nicht ausgeführt werden konnte. 90% der Probleme waren Ausnahmen mit Arrays.

Je mehr Erfahrung und Selbstvertrauen Sie sammeln, desto weniger verwenden Sie Stift und Papier. Sie wissen bereits, wie Sie grundlegende Konzepte verwenden, z. B. für Schleifen und so weiter. Sie haben Beispiele in anderen Programmen, die Sie wiederverwenden können. Sie werden den Compiler und eine IDE verwenden, um offensichtliche Fehler beim Schreiben des Programms zu finden. Im Moment, obwohl Sie diese Erfahrung nicht haben.

Wenn ich Ihre Frage durchlese, frage ich mich, ob einige Ihrer Probleme darauf zurückzuführen sind, dass sie sich konzentrieren. Wenn Sie Stift und Papier in einer ruhigen Umgebung verwenden, können Sie sich besser konzentrieren.

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.


1
Wie beantwortet dies die gestellte Frage?
gnat

Das OP fragt, ob es in Ordnung ist, Stift und Papier zu verwenden, da er liest: "Jemand hat geschrieben, dass Sie kein Programmierer sein sollten, wenn Sie Ihre Programme auf Papier schreiben müssen." Er gibt auch an, dass er am College ist und noch lernt. Meine Absicht war es zu zeigen, dass nichts falsch ist mit dem, was er tut und ich habe gelernt, auch mit Papier und Stift zu programmieren.
Daniel Hollinrake

-1

Mein Code ist viel besser organisiert, wenn ich Notizen und Annäherungen auf einen Notizblock kritzele, Bücher überprüfe, das Web überprüfe und darüber nachdenke. Ich bin auch viel mehr eine visuelle Person, deshalb ist das Zeichnen von Bildern mit Datenstrukturen sehr hilfreich. Ich schreibe nicht jede Zeile auf, aber ich kritzle, was ich als "wichtige" Fragmente oder Schlüsselfunktionalität betrachte. Für größere Projekte starte ich Visio. Ich bin mir nicht sicher, warum jemand befürworten würde, direkt auf eine Tastatur zu springen, wenn er nicht viel effizienter oder stundenweise bezahlt ist.


-1

Mach was für dich funktioniert. Ich würde keinen Code auf Papier schreiben. Ich schreibe Pseudocode und zeichne Flussdiagramme auf Papier, aber das Schreiben des vollständigen Codes scheint Zeitverschwendung zu sein.


-2

Ich stehe auch am ersten Tag des Lernens technischer Fähigkeiten vor dem gleichen Problem.

Diese Vorgehensweise sollte jedoch nicht zu 100% zum Erfolg führen, da beim Schreiben von Code auf Papier keine Möglichkeit zur Fehlerbehebung besteht und die Fehler und Ausnahmen bei der Ausführung von Papierarbeiten behoben werden können.

In der Schreibarbeit gibt es also keine Navigation, um die Probleme zu lösen. Und wir können aufgrund der Systempraxis die Schreibgeschwindigkeit als Bonus erhalten.

Ich mache auch Papierkram, aber wenn ich vor der Implementierung meiner Funktionalität eine grobe Schätzung mache, beginne ich danach mit der Implementierung auf dem System.

Bitte versuchen Sie mehr Zeit mit Systemübungen zu verbringen. Dies gibt 100% iges Vertrauen und Ergebnis.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.