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
Programmablauf verstehen a.k.a "Wie lest ihr Code"
@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.
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) 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
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
@MagBen (mit #Offtopic und #DissenAmFreitag): "modernisieren" in C++... omg 

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
need for speed, der Rechner ist nie schnell genugHyperion hat geschrieben:"modernisieren" in C++... omg
@MagBen: Deswegen kann man trotzdem eine moderne Sprache zum modernisieren verwenden…
z.B. C++ 11BlackJack hat geschrieben:Deswegen kann man trotzdem eine moderne Sprache zum modernisieren verwenden…
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.
@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.
- 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
assert encoding_kapiert
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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…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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- 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
assert encoding_kapiert
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also wenn es sowas wie Piston gibt?Hyperion hat geschrieben:interessant wird es wohl erst, wenn es eine 3D-Engine auf Rust Basis gibt

My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice