28 Mrz 2008 14:27
Momentan besteht eine meiner Aufgaben darin, den Code eines ehemaligen Kollegens von „C++-Versuch“ und MATLAB nach sinnvollem C++ zu überführen (Von „proof-of-concept“ nach „tatsächlich einsetzbar“).
An sich schonmal meistens nicht die dankenswerteste Aufgabe, aber üblicherweise machbar; vorausgesetzt, der Kollege hat einigermaßen lesbaren und verständlichen Code geschrieben.
Ihr ahnt, was kommt.
Dieser werte Kollege hat es nämlich nicht geschafft, „einigermaßen lesbaren und verständlichen Code“ zu schreiben. Leerzeichen vor und hinter Gleichheitszeichen oder Operatoren sind völlige Fehlanzeige, sprechende Variablennamen sowieso (am liebsten ein bis drei Buchstaben gefolgt von ein bis drei Ziffern) und Leerzeilen sind auch rar gesät. Kommentare gibt es Blockweise (wenigstens das, dann hat man wenigstens ne Ahnung, was dieser Block tut), allerdings innerhalb das Blockes nicht mehr.
Mehrdimensionale Datentypen (Vektoren) werden nicht etwa in Objekten einer eigens dafür angelegten Klasse gespeichert, sondern schön in eindimensionalen Arrays. Ein Array von 5 dreidimensionalen Vektoren ist ein eindimensionaler Array der Länge 15, wobei mal die Reihenfolge {x,y,z,x,y,z,…} eingehalten wird, und mal {x,x,x,…,y,y,y….,z,z,z….}.
In MATLAB finden sich dann Gleichungssysteme, die ich übertragen darf. (Wobei ich schon dankbar bin, dass ich die nicht erstellen musste).
Das Ganze sieht dann ungefähr so aus (draufklicken, um mehr zu sehn):
Von diesen Gleichungen gibt es übrigens lockere 150 Stück.
Aus „d1^4“ muss in C++ natürlich „pow(d1,4)“ werden. => Thank God for regular expressions! Und dem Micha, der mir geholfen hat, die zu erstellen, nachdem ich zuerst mal versucht hatte, eine Gleichung per Hand umzuformen.
Nach fröhlichem Ersetzen, Leerzeichen einfügen lassen und sinnvollen Zeilenumbrüchen sieht das Ganze dann so aus:
Die Variablennamen werde ich später noch sanifizieren, und die Zeilenumbrüche erstmal weglassen, um vorwärts zu kommen.
Das is zwar immer noch grausig, und ich bin froh, das nicht erstellt haben zu müssen, aber ich hab das Gefühl, dass das wenigstens etwas übersichtlicher ist. Und es kompiliert, der Rest muss mir für heute egal sein 😉
So, back to work; ich brauchte mal ein paar Minuten Pause davon…
März 29th, 2008 at 10:52
Ach du meine Güte..mein Beileid, fremder Code kann echt übel sein 😀
April 3rd, 2008 at 15:38
Bah!! Das ist echt ekelhaft!
April 22nd, 2008 at 20:28
[…] habe den Horror in die Knie gezwungen. Er ist noch nicht völlig besiegt und leistet noch Widerstand, aber auch den […]