goto in der Programmierung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hafner schrieb:

    Mit goto kann man maximal den Multiplikator des Aufwandes verringern. Also nicht den quadratischen oder kubischen Aufwand. Es ist durchaus wahr, dass goto in der Kernel-, Treiberentwicklung oder in der Bildverarbeitung Sinn machen KANN. Ein solcher Entwickler wird allerdings kaum hier im Forum nach den Vor- und Nachteilen von goto fragen. Ich wage zu behaupten, dass mit Abstand die meisten Performanceprobleme algorithmisch bedingt und nicht durch 2 Kernelbefehle weniger zu lösen sind.

    Der Vergleich mit break und return hickt. Mit break und return kann man keine funktionale oder objektorientierte Programmstruktur aushebeln.


    Völlig korrekt, auch wenn es die Komplexitätsklasse niemals verbessert und theoretisch völlig unbedeutend sein mag, sieht die Praxis mitunter ganz anders aus. Der Multiplikator ist bei sovielen Pixeln nunmal doch wichtig und bei Echtzeitsystemen erstrecht. Den Vergleich mit return habe ich (bewusst) nicht angestellt. break exit und continue sehrwohl. Kannst ja mal eine Schleife mit einem dieser Teile versuchen als Nassi-Shneidermann-Struktogramm zu malen. Das wird dir nur in konstruierten Spezialfällen gelingen da der Code unstrukturiert wird, was sehrwohl dem Konzept funktionalen (bzw eigentlich reden wir ja von prozeduralen) Sprachen widerspricht.


    @truespin: Ich sag ja nicht dass es in jedem Fall immer benutzt werden muss aber erzähl doch mal was für Treiber und Anwendungen ihr programmiert.


    Für alle anderen: Ein Standardtext der Informatik: Goto Statement Considered Harmful, 1968
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Ich habe ja bereits betont, dass es in extremen Spezialfällen Sinn machen kann. Darin stimmen wir also durchaus überein.

    Das Struktogramm ist ja nicht die Definition von funktionaler oder objektorientierter Programmierung. Struktogramme würde ich sowieso nur für einfache Algorithmen verwenden. Wüsste nicht, dass man mit Struktogrammen Funktionen oder gar Objekte darstellen kann (ich will mich aber nicht zu weit aus dem Fenster lehnen, da ich Struktogramme schon ewig nicht mehr benutzt habe).

    Mit break und continue kann man nicht in eine andere Funktion, Methode oder in einen Objektkonstruktor springen. Diese Befehle haben nur Einfluss auf die Algorithmen den Funktionen, Methoden, Konstruktoren etc. und können somit das dahinter stehende Konzept nicht zerstören.

    Zu dem Befehl exit kann ich keine Aussage machen, da ich ihn nicht kenne.
  • hallo zusammen,
    hier die antwort auf die frage von SeBa:
    energie management, komfortelektronik, LIN-bus kommunikation... alles im automotive bereich.
    und hier wurde mir ganz schenll klar gemacht: kein goto, kein float...

    aber es tut mir leid falls ich den einduck erweckt habe als wolle ich sagen das es absolut kein goto im treiber bereich gebe... wollte nur mitteilen das ich es eben bei uns noch nie gesehen habe.

    persönlich halte ich aber auch nicht viel von goto. warum soll ich meinen code unnötig unübersichtlich machen? frei nach dem motto: es war schwer zu schreiben, also solls auch schwer zu lesen sein.

    ich stimme aber auch mit hafner überein... es gibt mit sicherheit fälle, wo mein ein goto nicht umgehen kann bzw. wo es nicht sinnvoll ist.


    thx, truespin


    edit:

    programmieren in C sagt dazu:
    C verfügt über eine beliebig zu mißbrauchende goto-Anweisung und marker, zu denen gesprungen werden kann. formal ist goto niemals notwendig, und man kann fast immer leicht ohne goto-anweisung auskommen. wir haben in diesem buch goto nicht verwendet.
    trotzdem gibt es einige situationen, in denen goto angebracht sein könnte. am häufigsten kann man damit die ausführung einer tief verschachtelten struktur beende, wie zum beispiel zwei schleifen auf einmal verlassen. break kann hierbei nicht benutzt werden, da break nur jeweils die innerste schleife beendet.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von truespin ()