Eh ormai nella programmazione ad oggetti non ha molto senso usarlo, come nei linguaggi troppo di alto livello, siamo arrivati al punto in cui, abbiamo fatto di tutto per non averne bisogno, per cui abbiamo molte strutture necessarie alla programmazione, ma questo aumenta la complessità di codice.
Alcuni problemi ho trovato essere risolvibili in modo più semplice efficace e diretto con i goto, e sarà poi stato solo UN GOTO, ma ha evitato troppe seghe mentali, per arrivare ad una soluzione "strutturata".
Si tratta di funzioni per la ricezioni di dati da socket... basso livello ... però sono stati utili.
Devo ammettere che a volte invece di tante seghe mentali su come arrivare ad una soluzione strutturata, un goto è la via più semplice.
Ma penso che siano rari casi in effetti.
Fondamentalmente, però è vero che in fondo tutti i blocchi strutturati, sono delle serie di cmp, e jump. Non vuol dire che dobbiamo usare i goto, ma almeno ricordarci, che tutto il codice che ci sta sopra, è solo astrazione, per costruire un linguaggio, ma alla fin fine si riduce a quello.
Insomma il succo del discorso è: tutto il problema dei goto, fondamentalmente, è un non-problema, basta conoscerne i rischi, e gli argomenti, basta sapere. Ecco magari spiegare meglio ai principianti come funziona la programmazione strutturata, e i goto. Per questo dico che secondo me insegnare assembly all'inizio non è così tanto male... insieme magari a linguaggi più ad alto livello.
Ormai si tende sempre più a questo:
Strato di astrazione4
Strato di astrazione3
Strato di astrazione2
Strato di astrazione1
Basso livello
Macchina
Un sacco di codice, per poi fare poche cose.
Cioè su codici già complessi, si costruiscono altri framework, non ha molto senso.
IMHO.