PDA

View Full Version : Python - Goto


gabmac2
17-07-2014, 20:38
Esiste la possibilità di eseguire un Goto in Python?
Grazie in anticipo

dyablo96
17-07-2014, 20:51
Scusa se rispondo anche non conoscendo il python.
Il goto mi é sempre stato sconsigliato da tutti i miei professori in tutti i linguaggi in cui é presente.
E credo che anche gli altri utenti di questo forum ti diranno la stessa cosa

WarDuck
17-07-2014, 22:05
Scusa se rispondo anche non conoscendo il python.
Il goto mi é sempre stato sconsigliato da tutti i miei professori in tutti i linguaggi in cui é presente.
E credo che anche gli altri utenti di questo forum ti diranno la stessa cosa

Come sempre... dipende.

In C può essere usato opportunamente per gestire gli errori, cosa che viene fatta nel kernel Linux.

Comunque:

https://docs.python.org/3/faq/design.html?highlight=goto#why-is-there-no-goto

cdimauro
17-07-2014, 22:21
Esiste la possibilità di eseguire un Goto in Python?
Grazie in anticipo
Sì, c'è, ma non è prevista direttamente dal linguaggio. Se cerchi in giro qualcosa la trovi, ma il goto è una porcata e non sarò io a metterti sulla cattiva strada.

dyablo96
17-07-2014, 22:36
Come sempre... dipende.

In C può essere usato opportunamente per gestire gli errori, cosa che viene fatta nel kernel Linux.

Comunque:

https://docs.python.org/3/faq/design.html?highlight=goto#why-is-there-no-goto
Il C é uno dei linguaggi in cui mi é stato spiegato ma non consentito utilizzarlo

van9
17-07-2014, 23:00
Scusa se rispondo anche non conoscendo il python.
Il goto mi é sempre stato sconsigliato da tutti i miei professori in tutti i linguaggi in cui é presente.
E credo che anche gli altri utenti di questo forum ti diranno la stessa cosa

Fatti la tua opinione al riguardo partendo da uno dei pezzi migliori di sempre:
http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf

van9
17-07-2014, 23:04
Esiste la possibilità di eseguire un Goto in Python?
Grazie in anticipo

Nel linguaggio non c'è ma se armeggi con sys.settrace in un modo o nell'altro finisci anche per evocarlo.

banryu79
18-07-2014, 09:33
Nel linguaggio non c'è ma se armeggi con sys.settrace in un modo o nell'altro finisci anche per evocarlo.
*evocarlo*... proprio come si fa con i demoni, insomma :asd:

dyablo96
18-07-2014, 09:37
Fatti la tua opinione al riguardo partendo da uno dei pezzi migliori di sempre:
http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf

forse sono io deficent* ma il link non mi porta da nessuna parte, esaurisce il tempo per la connessione

van9
18-07-2014, 09:59
forse sono io deficent* ma il link non mi porta da nessuna parte, esaurisce il tempo per la connessione

ecchiloquà http://cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf

van9
18-07-2014, 10:50
*evocarlo*... proprio come si fa con i demoni, insomma :asd:

Lo so è poco "awesome" e non fa "Javascript Ninja", "Rockstar programmer" o "Programming luminary" (come l'altra volta hanno definito quel tale Jeff Atwood).

eww ;-)

dyablo96
18-07-2014, 11:21
ecchiloquà http://cs.sjsu.edu/~mak/CS185C/KnuthStructuredProgrammingGoTo.pdf

ok, poi me lo leggo con calma

banryu79
18-07-2014, 15:07
Lo so è poco "awesome" e non fa "Javascript Ninja", "Rockstar programmer" o "Programming luminary" (come l'altra volta hanno definito quel tale Jeff Atwood).

eww ;-)
Mi sa che non ci siamo capiti (o sì?), era una battuta.
Visto che si parla del goto (:eek:) "evocarlo come un demone" non è affatto una immeritata similitudine :)

AnonimoVeneziano
19-07-2014, 13:24
Che sia giusto insegnare che una GOTO se e' possibile evitarla e' meglio e' cosa buona e giusta, ma ci tengo anche a precisare che ci sono dei casi in cui e' necessario avere una GOTO.

Ad esempio in C e' l'unico modo per riuscire a fare error checking senza avere codice da eseguire in caso di fallimento duplicato a destra e a manca e rendere il tutto illeggibile e/o difficile da mantenere.

Ci sono anche alcuni casi dove le performance sono veramente molto importanti (codice di molto basso livello/drivers) dove una GOTO non e' necessaria magari, ma messa nel posto giusto puo' dare quel boost prestazionale che e' gradito e non influisce sulla manutenibilita' del codice.

Quindi in questi casi non bisogna avere paura di mettere una GOTO. Ho visto gente che piuttosto di mettere una GOTO si e' inventata cose orribili solo perché gli e' stato insegnato che e' male e che non dovrebbe mai essere usata ... beh, MAI non esiste in informatica ;)

Detto questo tutti i casi sopra non sono applicabili in python :D

Ciao