Thema: |
|
||
Autor: | token | ||
Datum: | 28.09.22 12:42 | ||
Antwort auf: | Frage zur Abschlussarbeit von Mampf | ||
>Wie ist das am Ende ausgelaufen? Hast du dann den Quellcode angepasst? Du kannst solche Routinen natürlich aus den Libprozeduren copypasten und statt diese aus der Lib aufzurufen, die korrigierte Variante aufrufen, die dann aber zum Teil deines eigenen Quellcodes wird. Das hätte allerdings meinen eigenen Code sinnlos und signifikant aufgebläht was ich nicht wollte, der Fehler kam afair auch irgendwo in einem Unteraufruf eines Unteraufrufs, da schleppt man das alles mit. Als Ergebnis wurde eine Exe erwartet und diese sollte ein Parameterset im vorgegebenen Format bekommen und Ergebnisse im vorgegebenen Format in eine Datei schreiben. Wenn du den Quellcode der Programmiersprache änderst hast du halt das Problem, das machst du lokal bei dir, nimmt der Prüfer deinen Quellcode und prügelt das bei sich durch den Compiler hat er den Bug in seiner Lib und dein Programm macht obwohl es richtig ist wieder das falsche. Aber wenn du eine .exe erzeugst spielt das keine Rolle mehr, wenn man den Bug in der Lib fixt, macht dann auch die daraus generierte Exe was sie soll. Das hab ich gemacht und noch auf den Bug in der Lib und wie der zu fixen ist hingewiesen, für den Fall dass mein Entwurf nicht nur anhand der Exe geprüft werden sollte, sondern vom Prüfer selbst durch den Compiler gejagt und daran verprobt wird. >Wie würde dein abweichen bewertet? Das gab Gummipunkte. Allerdings nicht für das Abweichen an sich, sondern weil die Lösung recht elegant war. Im Grunde gibt es bei sowas kein richtig und falsch. Welches Lösungsdesign man einsetzt hängt zum einen von der Problemstellung ab. Einen Nagel kannst du mit einem Hammer aber auch irgendwie mit einem Nudelholz in die Wand knallen. Einen Teig kannst du mit einem Nudelholz, aber eben auch irgendwie mit einem Hammer platt walzen. Schaust du auf das Ergebnis kannst du oftmals nicht mehr erkennen wie es zu Stande kam. Dennoch bieten sich unterschiedliche Werkzeuge und Lösungsstrategien für unterschiedliche Probleme an, was besser passt ist mal so und mal anders. Das sind oftmals Abwägungen, da gibt es keine Universalformel. Der Charme dieses anderen Entwurfs war dass er deutlich kompakter war, und von Haus aus eine hohe Flexibilität mitbrachte auch auf artverwandte Problemstellungen losgelassen werden zu können statt "nur" die Aufgabenstellung zu lösen. Das wurde dann auch entsprechend belohnt, wobei mehr als Höchstpunktzahl geht halt nicht, sauber umgesetzte generische Lösungen bekamen ebenfalls die Höchstpunktzahl, auch wenn meine Lösung eigentlich spürbar besser war. Aber den Schuh es nicht nach Schema F zu machen hab ich mir ja selbst angezogen :) >War der weg überhaupt zulässig? Natürlich. Es gibt bei sowas auch kein klares richtig oder falsch. Es geht oft um Kontext. Wenn ich einen Trainee habe und dem was gebe und der löst das objektiv betrachtet zwar superclever aber damit auch ein Stück weit kryptisch wasche ich dem Trainee nach dem Lob für seine Pfiffigkeit in der Regel anschließend den Kopf für eben diese Pfiffigkeit. Weil in einem Unternehmen geht es nicht darum dass dein Code sexy und clever ist, sondern darum dass auch andere Menschen an deinem Code arbeiten werden und ein Change deutlich effizienter über die Bühne geht wenn ein Programmierer das was er ändern soll und nicht selbst erfunden hat im Hinblick darauf wie es funktioniert, ohne sich groß einarbeiten zu müssen direkt kapiert. Es ist dann oftmals deutlich sinnvoller etwas dumm und ein Stück weit inperformant aber sehr einfach verständlich zu lösen, als einen auf Brain zu machen und damit auch ein schwer verständliches Erbe zu hinterlassen. Geht es aber bspw. um sowas wie Performanceengpässe wo Laufzeiten zum Showstopper werden, und etwas muss koste was wolle deutlich beschleunigt werden, kann man gerne auch den inneren Autisten rauskehren wenn es das Problem löst, auch wenn jemand anderes erstmal zwei Stunden bräuchte um die Lösung und wie das funktioniert überhaupt zu verstehen. Ich hab vor kurzem bspw. einen Youtube-Beitrag zu Roller Coaster Tycoon gesehen wo es darum ging dass das komplette Spiel von einem einzigen Typen in einer maschinennahen Sprache geschrieben wurde. Wenn man mit dieser Form der Programmierung auch nur mal oberflächlich Kontakt hatte und halbwegs versteht was das heißt, will man sich vor diesem Typen nur noch in Staub werfen. Diese. Leistung. Ist. Komplett. Irre! Und mit Sicherheit eben auch performant as fuck! Aber stell dir sowas mal in unserer modernen Entwicklungslandschaft vor wo man hinterher feststellt da ist ein Bug und dann gibt man den Quellcode an ein indisches IT-Team um das zu fixen, die sind mit dem Fix wahrscheinlich schneller wenn sie das komplette Spiel neu programmieren :D |
|||
< antworten > | |||