Entwickler-Ecke
Off Topic - Probleme mit Algorithmik
Mitmischer 1703 - Mi 02.11.11 18:25
Titel: Probleme mit Algorithmik
Hallo DF!
Ich habe bei der Umsetzung von Algorithmen das Problem, dass der Algorithmus nach der Erstprogrammierung nie durchläuft, sondern immer abbricht (Access Violaion etc.) und ich daher immer nacharbeiten muss. Das hat mich mittlerweile soweit demoralisiert, dass ich nur noch sehr ungern programmiere, weil ich mir immer alles mehrfach angucken muss - und - ihr kennt das sicherlich - wenn man mit Entwurf und Programmierung eines Algorithmus fertig ist, will man doch, dass es einfach funktioniert und nicht rumzickt.
Habt ihr ähnliche Erfahrungen und wie stellt ihr sicher, dass euer Code später das tut, was er tun soll?
jaenicke - Mi 02.11.11 18:44
Was da am meisten hilft ist Erfahrung, das ist einfach so.
Aber davon abgesehen brauchst du nicht glauben, dass bei erfahreneren Entwicklern alles immer sofort funktioniert. Der Anteil daran ist sicherlich höher, aber alles klappt auch nicht sofort. Insbesondere wenn es sich um komplexere Algorithmen handelt.
Dazu kommt wie du einen Algorithmus entwirfst. Machst du dabei schon Fehler oder passiert es erst bei der Implementierung?
Ja, und dann gibt es auch noch die Möglichkeit eines formalen Beweises mit dem Hoare-Kalkül wie es im Informatik-Studium relativ ausführlich behandelt wird:
http://de.wikipedia.org/wiki/Hoare-Kalk%C3%BCl
Das ist aber sehr aufwendig und für deinen Fall wohl nicht so passend. Aber vielleicht hilft die Idee dahinter trotzdem.
Gausi - Mi 02.11.11 18:46
Naja, das sind doch normale Probleme. Ich habe solche Fehler auch öfter (in letzter Zeit allerdings seltener). Da hat man mal in der For-Schleife vergssen, dass eine Liste nur bis Count-1 läuft, oder vergessen ein Object zu erzeugen, oder stolpert über Pointer-Leichen, ...
Sich deswegen entmutigen zu lassen, ist aber nicht angebracht. Ein Autor schmeißt seinen Job auch nicht, weil er einen Text nachbearbeiten muss. Und ein Autobastler auch nicht, wenn er am Ende nochmal ein paar Schrauben nachziehen muss, weil die Kiste noch klappert.
| Zitat: |
| wie stellt ihr sicher, dass euer Code später das tut, was er tun soll |
Gar nicht. :mrgreen:
jaenicke - Mi 02.11.11 19:22
Ein Beispiel aus der Praxis ist ein spezieller generischer Ringpuffer, den ich vor kurzem implementiert habe. Dazu habe ich einen Iterator geschrieben. Nur leider hatte ich nicht berücksichtigt, ob ein Eintrag gerade aktuell ist oder bereits erledigt (was der Puffer selbst anhand der Abrufe und Aufrufe entscheidet). Dadurch waren die Elemente nicht immer korrekt sortiert. Das habe ich auch erst gemerkt, als ich den entsprechenden Unittest implementiert hatte und der schiefging.
Schlimmer sind aber Fehler wie sie mir in letzter Zeit ein paarmal passiert sind: Regressionen. :oops:
Das heißt ich habe Code eingebaut und dabei ein bereits funktionierendes Feature zerlegt. An der Stelle können dann zwar Unittests helfen, aber solange die nicht genug Teile des Codes abdecken fallen halt Sachen durch.
Aber das Problem hatte auch Embarcadero aktuell. :mrgreen:
Delphi-Laie - Mi 02.11.11 23:40
Mitmischer 1703 hat folgendes geschrieben : |
| Ich habe bei der Umsetzung von Algorithmen das Problem, dass der Algorithmus nach der Erstprogrammierung nie durchläuft, sondern immer abbricht (Access Violaion etc.) und ich daher immer nacharbeiten muss. Das hat mich mittlerweile soweit demoralisiert, dass ich nur noch sehr ungern programmiere, weil ich mir immer alles mehrfach angucken muss - und - ihr kennt das sicherlich - wenn man mit Entwurf und Programmierung eines Algorithmus fertig ist, will man doch, dass es einfach funktioniert und nicht rumzickt. |
Computer sind einfach gnadenlos und entdecken
jeden Fehler, der nicht ihrer Logik entspricht. Zudem begehen Sie praktisch keine Flüchtigkeitfehler.
Computer sind eben in mancherlei Hinsicht den Gehirnen überlegen, die sie entwarfen bzw. die sie benutzen.
Deshalb sind Computer als leblose Dinge noch lang nicht per se besser als Menschen (das wäre ja schlimm). Deshalb kann man genauso sportlich sehen wie daß Autos schneller als der schnellste Läufer sind. Entmutigung? Mitnichten!
Mitmischer 1703 hat folgendes geschrieben : |
| Habt ihr ähnliche Erfahrungen und wie stellt ihr sicher, dass euer Code später das tut, was er tun soll? |
Ähnliche Erfahrungen? Sogar die gleichen, und zwar wie verrückt! Sicherstellen kann man hingegen leider kaum etwas, aber die Wahrscheinlichkeit der Korrektheit zu maximieren sich bemühen. Dazu immer fleißig testen und vor allem nicht enden wollendes Debuggen, Debuggen, Debuggen. Und der beste Korrektor der eigenen Arbeit sind immer andere, man selbst ist jedoch sein schlechtester Korrektor.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!