2015-03-22 13:12 GMT+00:00 Manlio Perillo <manlio.peri...@gmail.com>:
> 2015-03-21 21:48 GMT+01:00 enrico franchi <enrico.fran...@gmail.com>: > >> >> 2015-03-21 19:55 GMT+00:00 Manlio Perillo <manlio.peri...@gmail.com>: >> >>> Perchè, C te la da? >>> >>> http://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_languages >>> >> >> Il fatto che un linguaggio nato 40 anni fa non prestasse attenzione a >> questo aspetto, quando non era particolarmente critico (mentre saltare un >> branch di computazione lo era) mi da da pensare molto meno rispetto al >> fatto che un linguaggio nato negli ultimi anni non ci presti attenzione. >> > > Ok, però se hai letto la pagina di wikipedia vedi che Algol è antecedente > a C ed offriva entrambe le scelte; Fortran è antecedente al C e lasciava la > scelta al compilatore; Pascal è antecedente al C ed in una successiva > revisione dello standard ha aggiunto supporto per entrambe le scelte. > Si, sono d'accordo. Pero' dobbiamo considerare che i programmatori C sono sempre stati maestri nel trovare binary tricks che funzionano e che sono zozzerie finche' vuoi: ma i programmatori C scrivono cosi'. Tipo se vuoi forzare l'ordine di valutazione fai qualcosa come (a=f()), (b=g()), a && b Se invece quello che ti interessa e' proprio solo un coso che funziona come &&, puoi usare *. In teoria non funziona (ovvero, l'aritmetica unsigned in C funziona su un anello che *non* e' un dominio di integrita', il che ti rompe la proprieta' di cui sopra). Pero' nella pratica se a e b sono i classici 1 e 0 interi che le funzioni C ti ritornano per fare finta di essere booleane funziona tutto a meraviglia. E il caso in cui la cosa non funziona e' quando i vari operandi se moltiplicati ti danno un multiplo della caratteristica dell'anello. Come dire, fa schifo, ma ci si gira intorno e non e' nemmeno la porcata piu' grossa che vedo fare in C. > > Ci sono anche 40 anni di binary tricks che in C funzionano eh... dopo di >> che, effettivamente, quando mi dicevi che le costanti in Go meritano un po' >> di attenzione ti ho dato retta: e' vero... e secondo me se uno comincia a >> fare i tricks per girare intorno allo short circuit prima o poi ci resta >> impiccato. Piu' prima che poi. >> > > Il trick è scriverti il codice in assembler :) > A Go, infatti, manca proprio un assembler di alto livello come C--, IMHO. > Ha... interesting point. -- . ..: -enrico-
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python