[PLUTO-help] [OT] Programmazione
saint a eng.it
saint a eng.it
Ven 9 Apr 2010 12:03:33 CEST
>>>>> "FV" == Fabio Ven <fabiove a email.it> writes:
FV> E' ormai risaputo che l'uso del costrutto GOTO è "altamente
FV> sconsigliato",
La definizione di Dijkstra era "considered harmful". Ma, come
l'arsenico, nelle mani giuste in dosi minime può fare la
differenza. Che la teoria vive nel mondo delle idee ed i programmi li
eseguono i computer nel mondo reale.
FV> Di fatti se un algoritmo è ben pensato il problema non si porrà
FV> mai. Questa è una delle primissime regole di programmazione che
FV> mi è stata insegnata.
Infatti, un buon algoritmo scritto in modo non efficente batterà ogni
algoritmo cattivo scritto in modo efficente (o quasi, che una volta un
geniale algoritmo scritto da Matteo 'athena' Frigo venne battuto da un
algoritmo mattacchione scritto in assembler mascherato da C...).
Ma un buon algoritmo scritto in modo efficente (ovvero limando i tempi
di esecuzione dove veramente serve) è ancora meglio.
FV> Ma il punto è: il costrutto "CONTINUE" all'interno dei cicli non
FV> dovrebbe essere anche'esso sconsigliato? Per come la vedo io è un
FV> modo più elegante e non pericoloso di scrivere un "GOTO", ma dal
FV> punto di vista stilistico lo trovo molto poco elegante e meno
FV> leggibile di un ciclo ben strutturato, specialmete se il ciclo e
FV> complesso e presenta al suo interno diversi punti di uscita, come
FV> return, break o altri continue.
Prima cosa: le macchine fanno i jump. Ovvero i goto. O le test and
branch.
L'eleganza del codice non è nella pedissequa applicazione delle regole
di strutturazione, ma nella formulazione del codice più semplice
possibile, a cui non puoi togliere nulla.
Un continue può portare ad una scrittura più semplice, evitando ad
esempio un else che richiederebbe un blocco di codice in più che
'complica' la codifica ed in lettura (ricordarsi, stare dentro le 80
colonne per quanto possibile!!!) e probabilmente ance in esecuzione,
sopratutto se il compilatore non ottimizza bene. Ma qui il discorso
oramai è difficile, che le architetture sono così dannatamente
complesse che un buon compilatore è in grado di battere spesso l'uomo
nell'ottimizzazione.
Ad esempio possiamo avere un primo layer hardware che predigerisce
delle istruzioni vecchio stile per farle elaborare ad una macchina
RISC sottostante - nascosta all'utilizzatore - che magari cerca di
estrarre a runtime il parallelismo -è quello su cui correntemente
lavora Frigo in Intel.
--
/\ ___ Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____ African word
//--\| | \| | Integralista GNUslamico meaning "I can
\/ e coltivatore diretto not install
di software Debian"
More information about the pluto-help
mailing list