![]() |
Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Hallo Delphifreunde!
Das Konzept der evolutionären Programmierung ist sicher etlichen von Euch geläufig. Seit längerem implementiere ich Sortieralgorithmen für ein Animationsprogramm, das ihren Verlauf darstellen soll. Ich habe für die meisten der Algorithmen nicht die „intellektuelle Energie“ und die Ausdauer, mich in deren Funktionsweise hineinzudenken (oft fehlen mir auch Grundlagen dazu). Mithin bin ich auf schon vorhandene Quelltexte angwiesen: Pascal (sehr selten), (Visual-)Basic (selten, aber erträglich) oder allermeistens alle möglichen C-Derivate (ein elende Übersetzung). Oft genug funktionieren die Quellcodes auch nicht zur Zufriedenheit. Also bin ich „Dünnbrettbohrer“ und „schraube“ an allem möglichen Parametern und Variablen umher (veränderte Startwerte, veränderte Typen, Laufbereiche bei Schleifen usw. usf.), bis der Algorithmus anscheinend / offensichtlich fehlerfrei funktioniert. Das dauert i.d.R. nur Stunden, und bis auf eine Ausnahme gelang es mir bisher auch immer. Jedem Informatikprofessor sträuben sich dabei natürlich die Haare, denn Professoren sind penibel und wünschen sichere Fehlerfreiheit, und die natürlich mit Beweis, denn ohne ist nichts sicher. Doch in der Programmierung bin ich Praktiker, und die Ersparnis an Zeit und Denkaufwand schätze ich als immens ein. Nun meine Fragen: Geht Ihr auch gelegentlich oder sogar häufig so vor? Wie schätzt Ihr das Restrisiko ein, daß man doch Fehler dabei einbaut bzw. übersieht? Ist das in Euren Augen eine praktikable, akzeptable Programmiermethodik? Ich wünsche schon mal einen schönen Jahreswechsel! Gruß Delphi-Laie |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Hi,
Zitat:
Sicherlich sollte man seine Programme/Projekte langfristig planen und versuchen alle Risiken zu minimieren. Doch Fehler schleichen sich immer ein. Ich bin der Meinung, dass Programmierung eine praktische Angelegenheit ist. Doch um Algorithmen (Sortierung, Primzahl, usw) zu implementieren sollte man auch den theoretischen Zusammenhang verstehen. Auf jedenfall, bin ich gespannt was andere Leute dazu sagen werden. |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Es ist in der Praxis leider unmöglich, jede Problemlösung bis ins letzte Detail vollständig zu erfassen. Spätestens dann, wenn ich externe Frameworks einbinde - zum Beispiel für die Kryptographie - muss ich mich auf deren Qualität verlassen können. So gesehen dürfte der von Dir skizzierte Weg eine fast alltägliche Praxis sein, solange wir von Allerwelts-Anwendungen reden: Wir haben hier im Forum Mitarbeiter von Flugzeugbauern, die für ihre Steuersoftware andere Maßstäbe ansetzen und jedes Framework bis auf die letzte Zeile auseinander nehmen. Dieser Aufwand ist aber nur in einer sehr begrenzten Menge an Einsatzgebieten wirtschaftlich.
Aber wenigstens den selbst programmierten Krams sollte man normalerweise im Griff haben und bei Bedarf für dessen Qualität geradestehen können. Werkzeuge zur systematischen Fehlersuche dafür gibt's ja genug wie z.B. Unit-Tests. Aber auch hier ist es wie immer eine Abwägung von Aufwand und Nutzen - man braucht schlichtweg nicht immer und überall das "perfekte" Programm. In dem Fall muss man sich nur der verbliebenen Risiken bewusst sein. |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
wenn ich übermüdet und unter Zeitdruck in komplexer Materie unterwegs bin nutze ich diesen Ansatz gerne mal, um hinterher zu analysieren warum es so funktioniert.
|
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Mit viel guter Laune könnten man es auch als naiven Ansatz für Test-driven-Development bezeichnen. Wenn du jetzt noch wiederholbare Tests verwendest ... :stupid:
|
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
[QUOTE=Delphi-Laie;1143580Seit längerem implementiere ich Sortieralgorithmen ... [/QUOTE] Diese Algorithmen müssen beweisbar korrekt sein. Weiterhin ist das Laufzeitverhalten von großem Interesse und nicht, das es "bei mir schneller als Methode XY" ist. Daher ist eine Analyse des Verfahrens bzw. des Algorthmus an sich sehr wichtig.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ein Kollege schwärmt von "Feinspezifikationen", bei denen jeder Button und jedes Verhalten vorher mit dem Kunden vereinbart wird. Das ist zwar Korinthenkackerei, ist aber letztendlich die effektivste Vorgehensweise. Es macht nur leider überhaupt keinen Spass, denn der arme Programmierer, der die Feinspec umsetzen muss, hat überhaupt keine Freiheiten. Ich selbst programmierer manchmal immernoch munter drauflos, nur um mir an der nächsten oder übernächsten Wand eine blutige Nase zu holen. Ich kanns einfach nicht lassen ;-) Allerdings ist es manchmal keine verlorene Zeit, denn u.U. muss man sich mit der Materie erst einmal auseinandersetzen. |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Viele kleine evolutionär gewachsene Programmteile, in einem großen Projekt vereint, können auch schnell man all ihre keinen Unzulänglichkeiten in einem rießigen Problem vereinen.
|
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
"Evolutionär"? Ich würde die Methode als "Versuch und Irrtum" bezeichnen. ;)
Ich mache das auch manchmal. Aber wenn ich es mache, dann merke ich, dass ich eigentlich keinen Plan habe wie der Code wirklich funktioniert und dann versuche ich ihn zu verstehen. |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Hi!
Ich nenne das Debugger-Programmierung... Zeilen tippen... F4 sehen was passiert... ggf. Fehler beheben Zeilen tippen... F4 sehen was passiert... ggf. Fehler beheben Zeilen tippen... F4 sehen was passiert... ggf. Fehler beheben Besonders bei Randbedingungen ist der Debug-View schneller als "überlegen" besonders ohne Kaffee Nacht's um 3 :oops: Mavarik |
AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?
Zitat:
Wie oft musst Du Dir sowas hinterher nochmal angucken / etwas ändern, wenn es in irgendwelchen Fällen dann doch nicht passt, und wie lange bist Du dann wieder damit beschäftigt (inkl. neu Eindenken, 'rumprobieren' bis es auch in dem Fall passt)? Eigentlich sind grad solche Dinge sehr einfach automatisiert testbar, und somit weisst Du auch automatisch, dass Du beim Ändern nichts mehr kaputt machst, was schon von Tests abgedeckt ist. Erfahrungsgemäß kosten Unittests nochmal so viel Zeit wie die eigentliche Implementierung, da aber im Laufe der Zeit die Behebung von Fehlern (insbesondere durch Fehler die durch Seiteneffekte auftreten) mehr als drei- bis viermal so Zeit kostet (und bei komplexeren Systemen mit der Zeit noch zunehmen) spart das hintenraus richtig viel Zeit. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz