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…