Das ist der erste interessante Beitrag dieser Diskussion. Zudem ist es auch das erste Mal, dass es aus dieser Perspektive beleuchtet wird.Zitat:
Zitat von oberallgeier
Druckbare Version
Das ist der erste interessante Beitrag dieser Diskussion. Zudem ist es auch das erste Mal, dass es aus dieser Perspektive beleuchtet wird.Zitat:
Zitat von oberallgeier
Es ist das erste Mal, dass ich etwas über diese Art zu Programmieren gehört hatte. Spaghetticode kenn ich ja, aber jetzt eben auch Rumpelstilzchencode. Immerhin kann ich so mal meine eigenen Oevres prüfen, aber ob die danach besser sind, wage ich doch zu bezweifeln. Ich gehöre (auch) leider zu denen, die glücklich sind, wenn ein Code mal läuft. Egal ob Rumpeletti oder Spaghstilzchen. Egal wie lang und krumm die Ghettis sind oder wie rumpelig das Stilzchen. Aber ich versuche mich zu bessern. Und ich reisse mich nie selbst mitten entzwei - auch wenn mir manchen fehlerhaften Code eher der T... gesagt hat.Zitat:
Zitat von thewulf00
....................................Bild hier
Guten morgen,
der goto-Sprungbefehl gilt heute bei vielen Programmierern als verpönt, da es keinen einzigen Grund gibt, diesen Befehl zu benutzen. Mit der goto-Labelanweisung kann ein genaues Sprungziel festlegt werden. Es ist dabei egal, ob das Sprungziel vor oder nach dem goto-Statement im Programm aufgeführt wird. Einzige Bedingung ist dabei, dass die Sprunganweisungen und Marken in derselben Funktion liegen müssen.
Warum also ist goto so verpönt? Aus Performancegründen! Durch goto wird der normale Ablauf des Programms einfach unterbrochen. Ein weiterer Grund, goto nicht zu verwenden: Wenn mit goto in einen Anweisungsblock gesprungen wird, der lokale Variablen beinhaltet, ist das Verhalten systemabhängig. Es gibt wohl kaum ein Problem, das sich nicht auch ohne goto lösen lässt. Man kann sagen, dass ein goto mit einem Sprung nach vorne nichts ausmacht. Von einem goto, das aber zurückspringt, kann nur abgeraten werden. In solch einem Fall (zurückspringen) kann z.B. die do-while-Schleife als bessere Alternative verwendet weden.
Ich persöhnlich benutze auf keinen Fall ein goto, egal in welcher Sprache. Es gibt einfach keinen Grund, diesen Befehl einzusetzen.
Oh, ich merke gerade, dass das nicht richtig ist. Ich benutze ihn doch. Wenn in Bascom ein Reset des Programms durchgeführt werden soll/muss, wird das mit goto 0 gemacht. Dabei werden aber auch alle Vatiablen zurück gesetzt und ist somit meiner Meinung nach ein Ausnahmefall.
Durch goto wird ein Code unstrukturiert und unleserlich.
Peter
Hehe, dieser Beitrag gefällt mir sehr. Ich glaube, ich klaue mir das mal eben. (siehe unten)
Was die Sache mit den GOTO's noch etwas aufmischt ist ja die Tatsache, dass der Prozessor bei jedem JMP seinen ganzen Pre-fetch Buffer in den Kübel schmeissen muss, so er denn einen hat. Bei den alten x86 Intel's war das durchaus noch ein Thema.
Das wäre das einzige gewesen, was ich auch hätte sagen wollen. Dennoch habe ich es nicht getan, weil das nicht nur bei GOTO der Fall ist, sondern auch bei Verzweigungen, Schleifen, Funktionssprüngen, usw. Also allem, was auch in ASM mit goto gemacht würde.Zitat:
Zitat von PicNick
Nun, schon, aber es gilt nur für JMP's, die auch gemacht werden. D.h. Man versucht die Verzweigung nur in den weniger häufigen Fällen zu machen.
Ist aber abgeschweift, denn logo gibt es immer den Spagat zwischen prozessorfreundlich und wartungsfreundlich strukturiert.
Im Idealfall schreibt man ja letzteres und hofft, dass der Optimizer ersteres daraus macht.
Bei einer IF-ELSE-Anweisung oder jeder Schleife mit mehr als einem Durchlauf ist automatisch der Prefetch-Buffer überflüssig.