|
|
|
![]() |
|
Strumenti |
![]() |
#21 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Il discorso si sposta su che cosa voglia dire "risolvere il problema dato": a me e' sembrato che nel tuo caso risolvere il problema significhi anche risparmiare quei colpi di clock per mezzo di una codifica meno leggibile. Bene, nella formulazione del problema non era richiesto risparmiare quei cicli di clock, per questo ho affermato che la tua soluzione e' "peggiore". C'e' un criterio ben preciso di valutazione dei costi: la tua soluzione guadagna in termini di prestazioni e costa in termini di leggibilita'. E' chiaro perche' nulla e' gratuito, se guadagni da qualche parte, perdi da qualche altra parte. Resta solo da valutare quanto il costo della tua ottimizzazione sia giustificato dal guadagno prestazionale. Direi che e' semplice da valutare: riesci nel problema proposto ad accorgerti del guadagno prestazionale? fornisce un vantaggio misurabile al cliente (qui uso un linguaggio piu' formale per capirci meglio)? fornisce una soluzione migliore misurabile in termini prestazionali? La risposta a tutte queste domande in questo esempio e' ovviamente no (non e' sempre cosi' in tutti i casi). Di contro rimane il costo in termini di leggibilita', che viene sottolineato dal fatto che l'utente che ha proposto il problema ti ha chiesto una spiegazione su quella riga di codice, mostrando che non e' riuscito a comprenderla, e non e' una sua colpa perche' anch'io che programmo da 15 anni ho impiegato almeno una decina di secondi a leggere una riga di codice che in una versione alternativa mi avrebbe tenuto impegnato solo qualche decimo di secondo. Per concludere: da una parte abbiamo un guadagno prestazionale non misurabile, dall'altra abbiamo una perdita in termini di leggibilita' misurabile e misurata. In questo caso (e non in assoluto ovviamente) una versione piu' leggibile del codice sarebbe sicuramente preferibile. edit: vari errori di battitura
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 12-10-2004 alle 12:27. |
|
![]() |
![]() |
![]() |
#22 | |||
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Quote:
![]() Quote:
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|||
![]() |
![]() |
![]() |
#23 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 14:47. |
![]() |
![]() |
![]() |
#24 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 14:46. |
![]() |
![]() |
![]() |
#25 | ||||
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Quote:
Il mio e' un discorso assolutamente pragmatico, frutto dell'esperienza nel campo e che trova conforto negli studi teorici nel campo, e cerca di capire in questo esempio quale codice e' migliore. Non ho fatto alcuna affermazione assoluta: per favore non metterla sul personale perche' non e' davvero il caso. Possiamo da questo discorso, pero', tirare fuori un paio di considerazioni generali e dire che di solito (e non in tutte le situazione) e' meglio privilegiare la leggibilita' del codice e l'architettura piuttosto che ottimizzare prematuramente, e lasciare l'ottimizzazione quando e dove i risultati di un profiler lo richiedano. Direi che e' un suggerimento molto pragmatico. Infine, esistono pratiche consolidate nella costruzione del software, che hanno dimostrato la loro efficacia nell'arco di diversi progetti anche (e soprattutto) di grosse dimensioni e tutte sconsigliano di scrivere codice come hai suggerito tu qui. La letteratura e' piena di casi di studio su progetti concreti che ne parlano. Quote:
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 12-10-2004 alle 14:09. |
||||
![]() |
![]() |
![]() |
#26 |
Member
Iscritto dal: Oct 2001
Messaggi: 56
|
Scusate ragazzi...non volevo generare una "querelle" tra ingegneri del software e programmatori pragmatici
![]() In ogni caso...ho capito molto bene i discorsi che avete fatto (un po' meno alcune righe di codice), pero non posso pretendere troppo: programmo in C da ben.....3 giorni! ![]() Edit: mia personale convinzione: tutto è relativo al contesto nel quale devi sviluppare il codice. Se stai lavorando per un'azienda che ti richiede il programma piu efficente, veloce, compatibile, che spreca meno risorse e da svilupparsi nel minor tempo possibile è ovvio che devi usare qualsiasi mezzo per ottenere il risultato per il quale sei pagato. Non te ne frega nulla delle leggibilita o altri aspetti. Conta i risultato!! Se invece devi aiutare una persona niubba come me allora è ovvio che la leggibilità conta di piu rispetto ad un'ottimizzazione prestazionale che su un programma cosi banale non è nemmeno palpabile. In ogni caso...ho fatto solo 2 o 3 lezioni di C all'universita, ma una cosa mi è entrata in testa: devo abituarmi a programmare senza sprechi inutili (ottimizzare penso sia un'altra cosa)....per sprechi intendo usare 10 cicli if che possono essere raggruppati in uno solo. Questo perche se mi abituo a programmare in questo modo...finche si tratta di programmini semplici fila tutto liscio su un Athlon Xp 3200. Quando pero iniziano ad essere programmi con qualche migliaio di linea di codice......beh le cose cambiano ovviamente. Ultima modifica di Steve85 : 12-10-2004 alle 18:45. |
![]() |
![]() |
![]() |
#27 | |
Member
Iscritto dal: Oct 2001
Messaggi: 56
|
Quote:
Forse ha espresso giudizi un po' affrettati o fatto considerazioni precoci su di te senza conoscerti fino in fondo. Almeno questa è la mia interpretazione, del tutto soggettiva (specifico per evitare che mi saltino addosso ![]() Cmq apprezzo molto questo stile filosofeggiante di repne scasb. Non so....sono quelle frasi che stanno a meta tra la massima assoluta e il luogo comune, pero fanno un grande effetto ![]() "Il dubbio nel ragionamento e' la base al "miglioramento" del ragionamento stesso." ------> Mi sa molto di Karl Popper ![]() |
|
![]() |
![]() |
![]() |
#28 | |||
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Quote:
Perchè dici "non ti sara' chiaro cio' che dico", metti in dubbio le mie capacità intellettive? ![]() ![]() ![]() Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|||
![]() |
![]() |
![]() |
#29 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Se un'azienda avesse quelle richieste, scomparirebbe dal mercato in brevissimo tempo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#30 |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
scusate tanto il totale OT, ma colgo il thread per porre una domanda a repne scasb; ho consultato il reference Intel dei P4 e ho visto il significato dell'istruzione repne scasb (che oltrettutto hai messo anche in firma in forma esadecimale
![]() |
![]() |
![]() |
![]() |
#31 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 14:46. |
![]() |
![]() |
![]() |
#32 | |
Member
Iscritto dal: Oct 2001
Messaggi: 56
|
Quote:
|
|
![]() |
![]() |
![]() |
#33 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
![]() Esistono svariate metodologie di sviluppo per raggiungere questi obiettivi, ed in genere si applicano in situazioni diverse. Tutte pero' tendono a minimizzare i difetti e ad incrementare la qualita' del design e del codice, perche' secondo i dati che si sono raccolti su progetti reali, il costo di sviluppo e', in genere, proporzionale a al numero di difetti ed inversamente proporzionale alla qualita' del codice. Nella costruzione del software, quindi, per minimizzare i costi di sviluppo si deve sempre tendere a diminuire il numero di difetti (bug) ed incrementare la qualita' del codice (coerenza del design e dell'architettura, leggibilita' e manutenibilita' del codice). In sintesi, e' provato che progettando un'architettura coerente e pulita, avendo un design coerente con l'architettura, scrivendo codice pulito e leggibile, alla fine ci si ritrova con un'applicazione che risolve il problema dato ottimizzando le risorse e, se richiesto, nella maniera piu' ottimizzata possibile, scritta nel minor tempo possibile. Purtroppo non e' facile scrivere codice pulito e richiede ottimi programmatori ![]() L'ottimo programmatore non e' colui che conosce i trucchetti sporchi del linguaggio e scrive codice complicato e difficile da comprendere, al contrario, e' colui che scrive il codice piu' semplice possibile (e non e' facile), piu' chiaro, con meno difetti e che risolve il problema. Per raggiungere questo stato d'"illuminazione" ci vogliono anni ed, in genere, si passa per diverse fasi fra le quali "risparmia ovunque ogni ciclo di clock possibile".
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#34 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Iniziare col C a 16 anni e' ottimo, complimenti ![]() Ed hai tantissime possibilita' di migliorare, basta concentrarti nello scrivere nella maniera piu' semplice possibile. Un consiglio: quando qualcosa che hai scritto "non ti sembra elegante", hai come un pensiero che ti dice che non va bene anche se fa quello che vuoi, riscrivila meglio. Vedrai che con gli anni quell'istinto migliorera' con l'esperienza e scriverai codice sempre migliori. Non aver paura di riscrivere quello che hai gia' scritto: lo fanno i migliori programmatori al mondo ed e' per questo che sono i migliori. 16 anni e' piu' o meno la stessa eta' alla quale ho iniziato io.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#35 | |
Bannato
Iscritto dal: Oct 2004
Città: Roma
Messaggi: 124
|
Quote:
![]() ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#36 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() Grazie cmq a tutti che continuate ad incoraggiare e consigliare i giovani come me. Siete mitici! bye, jmc
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:00.