[Python] Il troppo stroppia (era: Re: Quando è opportuno usare @staticmethod?)

enrico franchi enrico.franchi a gmail.com
Ven 5 Dic 2014 17:57:25 CET


2014-12-05 16:23 GMT+00:00 Walter Valenti <waltervalenti a yahoo.it>:

> Ai tempi dell'università, il "goto" ci era stato caldamente consigliato
> di non usarlo.
>

Classico effetto "mi hanno detto che non va bene". In particolare tutto
nacque dal paper di Dijkstra.
Per inciso, Dijkstra stesso si e' espresso in modo piu' moderato sullo
stesso punto in seguito.
Il fatto e' che quel paper viene sempre citato, non e' stato in generale
letto o capito da chi lo cita.
E ovviamente tutte le condizioni al contorno non vengono *minimamente*
tenute in considerazione.

Come appunto dicevo, nella pratica si usa. Le alternative sono peggiori.
Specie perche' il goto di C ha relativamente poco in comune

Il punto e' che in C non hai le eccezioni. Il che vuole dire che il
classico pattern

res1_acq
res2_acq
res3_acq

do_something
do_something
do_something

clean_res1
clean_res2
clean_res3

diventa piuttosto tricky quando ci devi appunto ficcare in mezzo il fatto
che ogni operazione dopo res1_acq deve pulire res1, ogni operazione dopo
res2_acq deve pulire res2 (e per quanto detto prima, pure res1) e cosi' via.
La struttura usando goto risulta *parecchio* semplice e leggibile (e si
puo' anche sfruttare l'effetto a cascata).

Appunto, come diceva Roberto, e' una pratica talmente diffusa e ovvia che
e' veramente strambo parlarne. Basta leggere un po' di codice in giro (e si
parla di progetti piuttosto di peso, non roba scritta da principianti).



> Della serie: "esiste, ma guai a voi se lo usate".

Tenendo conto che la maggior parte delle persone che fanno il primo corso
di programmazione sono in difficolta' pure con il while, capisco la
posizione.
E anche tenendo conto che i programmi che si fanno in questi contesti sono
sufficientemente semplici, specialmente allocano molte poche risorse...
probabilmente files e memoria e fine della fiera.
Dopo di che, sfortunatamente, questo dogma resta, evidentemente senza
capirne il fondamento. Peccato che di tutte le cose piu' o meno utili
insegnate in universita' questo sia indelebile... mentre tanta altra roba
viene persa.

Credo che il motivo sia che non si e' dovuto lavorare piu' di tanto in C...
puo' essere?


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20141205/0d78d25b/attachment.html>


Maggiori informazioni sulla lista Python