Archiv der Kategorie: goto

Das lange Leben von GOTO auch in C, Java und C#

Gibt es goto auch in C, Java oder C#? Da denkt man nein, das kann nicht sein. Das war doch das Argument gegen Assembler – nie wieder GOTOs und damit schwer les-, wart- und erweiterbaren Code. Schon gar nicht bei Sprachen mit VM wie Java oder C#.

Und dann meint CW bei einer Diskussion am Abendessen – alles Coder*: Doch das gibt es weiterhin. Und ein Blick ins Netz – altmodische Google-Suche – zeigt: Ja es gibt es als GOTO/Labels-Komplex. Es ist etwas nachdem man gar nicht sucht, wenn man denkt, es gibt es nicht.

Die Begründungen dafür (es nennt sich nun Goto/Label) sind die alten: Wie kommt man möglichst schnell aus einer tiefen Verschachtelung raus.

https://www.geeksforgeeks.org/goto-statement-in-c

Und noch unglaublicher Java:

https://www.geeksforgeeks.org/g-fact-64

Keine Gotos scheinen zu kennen Javascript, Python.

Das sind natürlich im ersten Moment schlechte Nachrichten, weil es nun diese Möglichkeit wieder gibt und im zweiten Gute: Man kann es im SizeCoding eigentlich wieder nutzen.

Assembler: jmp (jump)

Und man* tut es einfach: Man benützt den Jump-Befehl und springt irgendwo hin und macht da weiter – irgendwo im immer linearen Code. Hinein in die psychische Konstruktion des Code (und seinen Hierachien), die am Ende linear ist.

Es ist letztlich Anarchie, die immer noch Assembler als Option hat und die Lust daran. Es ist der Möglichkeitsraum, Dinge zu tun, die man eigentlich nicht mehr tut in den höheren Programmiersparchen. Wo man Dinge konstruiert in Verschachtelungen, in Hierarchien, die nicht überspringbar sind. Code also der letztlich, wie die Systemtheorie funktioniert. Systeme in Systemen – aber brich niemals aus! Dadurch ist auch hochintegrierter Code möglich. Letztlich nachhaltiger Code.

Es ist die Freiheit und Bürde von Assembler zugleich (Hängt da mein Code wieder in einer Endlosschleife?). In diesem Fall springt der Code „jmp next_level“ (ich springe, geistig beim Nachprüfen) über alle Hierarchien zum Code für den nächsten Level (nach oben). Kein Gequäle ist das durch die Hierarchien der Verschachtelungen mit {} – sondern einfach da hoch.

Eine Erfahrung die ab 1964 viele natürlich mit GoTo gemacht haben.

Anarchie muss ab und zu sein.