Programmablauf verstehen a.k.a "Wie lest ihr Code"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
robocode
User
Beiträge: 16
Registriert: Sonntag 8. Februar 2015, 23:52

Hallo Leute,
ich habe eine etwas "merkwürdige" Frage die ich mir als Programmieranfänger jedoch immer wieder stelle. Ich tue mir immer wieder schwer wenn ich Code lese wirklich zu verstehen, wie das Programm sequenziell abläuft. Meist sind Python Programme ja so aufgebaut, dass Funktionen nacheinander definiert werden und dann am Ende eine main function aufgerufen wird die einen Funktionsablauf startet.
Mir geht es darum eine möglichst strukturierte Vorgehensweise zu finden, wie ich mich Stück für Stück durch einen ganzen Code hangeln kann um den gesamten Ablauf zu verstehen.
Habt ihr dafür irgendwelche Anregungen?

Vielen Dank
robocode
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@robocode: es gibt entweder das Top-Down-Vorgehen oder eben Bottom-Up. Entweder schaust Du Dir die main an und schaust, welche Funktionen aufgerufen werden, oder Du fängst an, zu verstehen, was einzelne Funktionen machen und wie sie zu komplexeren Funktionen zusammengesetzt werden.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Ich bekomme immer wieder die Aufgabe Jahrzehnte alte Programme zu "modernisieren", also in Python und C++ neu zu schreiben, die Programme sind in diversen Programmiersprachen (Visual Basic, DBase, Fortran, Java). Die Dokumentation ist im Wesentlichen der Programmcode. Folgende Vorgehensweise hat sich dabei bewährt:
a) Mit dem Programmierer reden (wenn noch verfügbar).
b) Das Programm in einem Debugger laufen lassen und Breakpoints setzen (wenn die Programmierumgebung das ermöglicht).
c) Debugausgaben beim Betreten und Verlassen von Methoden, funktioniert bei allen Programmiersprachen.
d) Den Programmcode ausdrucken und mit Textmarkern bearbeiten.
e) "Understand" von scitools
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@MagBen (mit #Offtopic und #DissenAmFreitag): "modernisieren" in C++... omg :twisted:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Hyperion hat geschrieben:"modernisieren" in C++... omg
need for speed, der Rechner ist nie schnell genug
a fool with a tool is still a fool, www.magben.de, YouTube
BlackJack

@MagBen: Deswegen kann man trotzdem eine moderne Sprache zum modernisieren verwenden…
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

BlackJack hat geschrieben:Deswegen kann man trotzdem eine moderne Sprache zum modernisieren verwenden…
z.B. C++ 11
Im Ernst, womit meint Ihr wird heute 3D programmiert?
Womit ist man genauso schnell wie mit Fortran?
Ich weiß wie weit ich mit Numpy komme und ab wann ich den schnellen Code selbst schreiben muss.
a fool with a tool is still a fool, www.magben.de, YouTube
BlackJack

@MagBen: Im Ernst C++ ist keine moderne Sprache. Auch nicht wenn man da 11 hinter schreibt und noch mehr Komplexität drauf tackert. 3D wird mit allem möglichen programmiert. Ja, auch mit C++, aber eben nicht nur. Genau so schnell wie mit Fortran ist man mit C oder Assembler auch. Oder halt mit Fortran.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie sieht es da eigentlich mit Rust aus? Das ist ja auf jeden Fall systemnah... ob das in Zukunft auch im 3D Sektor eingesetzt werden wird?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Wie sieht es da eigentlich mit Rust aus? Das ist ja auf jeden Fall systemnah... ob das in Zukunft auch im 3D Sektor eingesetzt werden wird?
Also was ich so gehört habe scheinen Spielefirmen durchaus an Rust interessiert zu sein. Weil, das ist irgendwie auch einleuchtend: eine Sprache mit einem kostenlosen Compiler, mit Backing einer recht bekannten Organisation, Speichersicherheit ohne GC, (einigermaßen) Mainstream-Syntax…
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mitsuhiko arbeitet ja offenbar viel mit Rust in der Spieleindustrie. Laut seiner Blog Einträge aber eher im Backendbereich (Redis Anbindungen iirc)... interessant wird es wohl erst, wenn es eine 3D-Engine auf Rust Basis gibt oder zumindest ein solides Framework a la SDL.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:interessant wird es wohl erst, wenn es eine 3D-Engine auf Rust Basis gibt
Also wenn es sowas wie Piston gibt? ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten