2009-05-27 12 views
3

So kenne ich ein paar Leute, die ihre Algorithmen vor der Codierung tatsächlich in einfachem Englisch (Pseudocode) schreiben. Ich habe das vorher noch nie gemacht, aber jetzt, wo ich darüber nachdenke, macht es Sinn, komplizierte Algorithmen zu organisieren. Machst du das? Hilft es? Wenn nicht, was machen Sie (wenn überhaupt), um Ihr Programm zu organisieren, bevor Sie es schreiben?Schreiben Sie Ihren Algorithmus vor dem Codieren in Pseudocode?

+0

Teil-Duplikat von [http://stackoverflow.com/questions/480432/do-you-pseudo-code]? –

+0

..oder das [http://stackoverflow.com/questions/852724/writing-pseudocode-best-practices/852928#852928]? –

Antwort

8

I've mentioned it before:

Ich neige dazu, mich zu schreiben kleine Anwendungsfälle im Notizblock zu finden Einzug mit ... und nach einem halben Dutzend Zeilen oder so plötzlich ich weiß, ich bin in einem Stil zu schreiben, die im Wesentlichen Python ist aber mit etwas weniger Syntax! Ich bin also zu dem Schluss gekommen, dass Python eigentlich Pseudo-Code ist und eine fantastische Möglichkeit, deine Gedanken in jeder Sprache zu schreiben, in der du wirklich schreiben willst. Das Beste an dieser Technik ist, dass du bereits eine Referenz hast, die du vergleichen kannst Ihr fertiges Ergebnis im Falle von fiesen Bugs.

+0

Ich war gerade dabei, Python Prototyping als Alternative vorzuschlagen, da ich das auch gefunden habe;) –

0

Ich schreibe nicht in Pseudo-Code, aber ich mache normalerweise eine Art von Flussdiagramm, um mich entlang zu führen.

1

Wenn es nicht trivial ist, verwende ich zuerst pseudocode und schließe dann diesen Pseudocode in meine Dokumentation ein, wenn ich irgendeine formale Dokumentation für diese bestimmte Komponente produziere.

Wenn es trivial ist, schreibe ich einfach Code in meiner Implementierungssprache und gehe dann durch und füge Kommentare hinzu, wenn etwas benötigt wird.

1

Wenn es ein wirklich hartes Problem ist, werde ich eine Art Pseudo-Code machen.

7

Ich schreibe nicht viel Pseudo-Code, aber ich finde, wenn ich nicht sagen kann, was ich in einfachem Englisch machen will, dann verstehe ich das Problem nicht genug, um Code zu schreiben.

+0

Gute Eins. Ich gehe einfach weiter und tue dies im Header der putativen Funktion, bevor ich eine Codezeile dafür schreibe. –

+0

Ich neige dazu, eine plain-englische Gliederung zu schreiben, persönlich. –

0

Wenn ich weiß, dass ich an dem Schreiben des Codes für einen anderen Teil arbeiten muss, aber ich kann mir jetzt den allgemeinen Umriss der Methode oder Funktion vorstellen, werde ich gerade genug schreiben, damit ich mich später an meine Idee erinnern kann wie die Methode ausgeführt werden soll. Im Allgemeinen ändere ich es später, so dass ich es selten hilfreich finde.

2

Ich habe das versucht, aber ich finde es sehr schwierig zu tun, denn im Allgemeinen gibt es typischerweise viele Dinge, die ich nicht berücksichtigt habe, bis ich gezwungen bin, den Algorithmus in einer strengen Sprache zu schreiben. Englisch ist einfach so eine gute Sprache, um sich selbst zu belügen.

Ich fand es tatsächlich schädlich, weil ich Zeit auf Nicht-Probleme verbrachte und vernachlässigte die wirklichen Probleme, die ich nicht sah, bis ich versuchte, den Computer-Code zu schreiben . Tatsächlich habe ich Computercode geschrieben, um meine Gedanken für Dinge, die ich auf Englisch schreibe, zu organisieren.

Ich habe festgestellt, dass das Zeichnen von Bildern und/oder die Verwendung eines geometrischen Ansatzes sehr hilfreich sein kann.

+1

So ziemlich eine perfekte Erklärung für das Problem mit einer Menge Zeit für Pseudocode. –

4

Ich schreibe hauptsächlich in Python in diesen Tagen. Das ist Pseudo-Code für den Anfang.

1

Im Allgemeinen für eine Funktion, werde ich eine schöne lange Header-Beschreibung von dem, was es tut (Doxygen formatiert, vorzugsweise).

Wenn es kompliziert genug ist, mache ich Strukturdiagramme (alte Pre-UML Pre-OO-Design), oder so etwas wie UML-Sequenz oder Aktivitätsdiagramme.

Für ein ganzes System beginne ich natürlich mit Klassendiagrammen.

+0

Ich habe UML einmal für ein Projekt benutzt und ich habe gespürt, dass es in die Quere gekommen ist, aber ich entwickle es auch für kleine ziemlich selbständige Software-Projekte. Wie groß ist der Umfang der Projekte, die Sie mit UML verwenden? Bist du ein Architekt oder ein Ingenieur? –

+0

Eigentlich mag ich auch UML nicht besonders. Deshalb mache ich zuerst meine altmodischen Strukturdiagramme, wenn ich kann. UML-Diagramme scheinen einfach nie richtig zu sein für das, was ich herausfinden will. Ich weiß nicht, ob es daran liegt, dass sie vom Committee entworfen wurden, oder wenn ich nur das bevorzuge, mit dem ich gelernt habe. –

+0

Oh, um die Frage zu beantworten, finde ich im Allgemeinen UML am besten für ganze Systeme und nicht für eine einzelne Klasse (oder Funktion). Ich habe nie an einem Ort gearbeitet, an dem wir getrennte "Architekten" hatten, die nur Code entwerfen und ihn nie wirklich umsetzen. Es klingt schrecklich. –

3

Ich benutze Kommentare (sowohl innerhalb der Methode und in der veröffentlichten Schnittstelle) als Pseudocode.

Wenn Sie einen Algorithmus Implementierung, die Schritte, die ich folgen, um sind:

  • Vergewissern Sie sich, dass die API oder die Schnittstelle richtig ist. Wenn ich nicht feststellen kann, was die richtigen Operationen sind oder welche Daten ein- und ausgehen, stimmt etwas nicht.
  • Beschreiben Sie jede Operation in Javadoc (oder gleichwertig) Kommentare; Dies weist normalerweise auf Probleme mit dem Algorithmus oder dessen Verwendung hin.
  • Schreiben Sie Kommentare in die Methode oder Methoden als eine Form von Pseudocode. Ich mache das, bevor ich Code schreibe oder den Code schreibe. Dies hilft mir, mich zu erinnern, was ich dachte, bevor ich es schreibe, und dokumentiert, was ich für zukünftige Referenz dachte.
+1

Ich mache genau das auch. Ich schreibe die Kommentare innerhalb der Methode/Funktion, bevor ich den Code schreibe. Es hilft mir, mich daran zu erinnern, was ich tun muss. –

+1

Meine Erfahrung mit Pseudocode in Kommentaren ist, dass es überhaupt nicht wirklich hilfreich ist. Sie erhalten eine doppelte Logik Ihrer Logik, ohne einen tieferen Einblick in die Gründe für die Wahl einer bestimmten Lösung zu haben. – molf

0

Das wäre der Traum.

Schreiben Sie einfach Pseudocode und es funktioniert einfach.

+0

Es heißt Python. ;) –

3

Im Allgemeinen nicht wirklich. Wenn ich am Computer arbeite und an etwas besonders Schwierigem oder Langweiligem arbeite, kann ich die Dinge mit Kommentaren vor der Hand durchgehen und skizzieren, aber sie sind eher eine natürliche Sprachaussage als ein richtiger Pseudocode. Im Allgemeinen war das einzige Mal, dass ich jemals richtigen Pseudocode verwendet habe, während eines Unterrichts.

Es ist jedoch erwähnenswert, dass das, was für einen Entwickler funktioniert, möglicherweise nicht für einen anderen Entwickler funktioniert und einige Leute schwören, indem sie vorher Pseudocode schreiben.

+0

Auch ich finde es einfacher im Code zu denken als im psudocode. Aber ich benutze oft Kommentare, um zu beschreiben, was ich gerade versuche zu tun. – zonkflut

0

Ich bin ein großer Fan von Algorithmen zuerst in Pseudo-Code schreiben, nur um meinen Kopf um den Algorithmus zu wickeln. Es ist relativ einfach (für mich), von Englisch in Code zu konvertieren, daher schreibe ich mehr Wörter und weniger Code. Ich könnte meinen Pseudo-Code leicht als Kommentar für andere für ausreichend komplexe Algorithmen verwenden.

Für die Besonderheiten gehe ich normalerweise mit dem alten Papier/Stift, und ich ziehe Schleifen/Steueranweisungen. Alles andere ist, was mein Verstand zu der Zeit ausspuckt.

0

Absolut ... Einmal habe ich etwas Solides in Pseudo, ich starte den "Port". Es ist leicht, etwas Komplexes auf einfache Art und Weise zu erledigen, ohne dass eine Sprachsemantik im Weg ist.

0

Mein Pseudocode, wie andere oben, ist im Grunde Python. Dies ist keine Aussage über meine Python-Kenntnisse, sondern darüber, wie intuitiv die Sprache ist. Meine Problemlösungsfähigkeiten waren immer besser als mein Gedächtnis für Details wie Syntax, daher ist es großartig, mit einer Sprache zu arbeiten, die es mir ermöglicht, mich auf das vorliegende Problem zu konzentrieren, ohne mich dazu zu zwingen, die Syntax nachzuschlagen. Einer der Vorteile von Pseudocode gegenüber anderen Sprachen besteht darin, dass man die Logik einfach ohne Datentypen wie Typdeklarationen schreibt - und das macht man sowieso nicht in Python, also ist das Schreiben des Codes im Grunde keine Arbeit oder Unordnung mehr als Pseudocode-Logik.

0

Ich schreibe es in Fortran - das ist im Grunde Pseudocode, die so ziemlich jeder verstehen kann. Ich kann mir keinen einfacheren Weg vorstellen, es zu schreiben.

0

Es hängt vom Algorithmus ab. Wenn es einfach ist, kann ich normalerweise alle logischen Pfade in meinem Kopf speichern, wenn es komplex ist, dann skizziere ich jeden Schritt mit der relativen Logik.

Verwandte Themen