[Python] Filtrare un carattere.

enrico franchi enrico.franchi a gmail.com
Dom 22 Mar 2015 16:58:37 CET


2015-03-22 13:12 GMT+00:00 Manlio Perillo <manlio.perillo a gmail.com>:

> 2015-03-21 21:48 GMT+01:00 enrico franchi <enrico.franchi a gmail.com>:
>
>>
>> 2015-03-21 19:55 GMT+00:00 Manlio Perillo <manlio.perillo a 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-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150322/a6644ca5/attachment.html>


Maggiori informazioni sulla lista Python