2015-07-11 8:07 GMT+02:00 Andrea D'Amore <and.dam...@gmail.com>: > [...]
> > >> Qual è la differenza con il caso di stringhe Python e Java, entrambe > >> immutabili? > > > Mi riferivo a tutt'altra cosa, quando parlavo di oggetti immutabili. > > Gli oggetti che git gestisce (e.g. tree, blog, commit) non hanno nulla a > che > > fare con la rappresentazione delle stringhe nei vari linguaggi di > programmazione. > > > Gli oggetti di git sono immutabili nel senso che una volta aggiunto, ad > > esempio, un file (blob) nel repository, questo file non può più essere > modificato. > > L'OP ha spiegato che vuole confrontare due stringhe in Py e Java con > SHA-1, come git. > Tu gli hai risposto che potrebbe non essere il modo migliore per le > stringhe, immediatamente dopo aver evidenziato esplicitamente che nel caso di git gli oggetti trattati sono immutabili. Questa vicinanza > suggerisce che usare SHA-1 nelle stringhe non è il modo migliore > perché non sono immutabili, cosa che non è vera. > > Quello che volevo dire è che se vuoi confrontare due oggetti A e B, fare hash(A) == hash(B) normalmente è conveniente solo se A è immutabile, come accade in git dove A ad esempio è un oggetto blog dentro il repository. In questo caso hash(A) lo devi calcolare solo una volta. Ho usato stringa invece di oggetto perchè l'OP parlava di stringhe. La mia domanda è quale sia la differenza nei due scenari, non mi è > chiara la tua risposta alla mia domanda, mi sembra parli d'altro. > Senza sapere altro sullo scenario dell'OP, cioè se ad esempio deve > confrontare due stringhe al mese o duecentomila al minuto, direi che > se vuole confrontare due stringhe "di grosse dimensioni" (magari dei > testi scritti in linguaggio naturale da un utente umano e non dei > tentativi specifici di avere una collisione) può farlo tranquillamente > con SHA-1. > > Se dovessi confrontare oggetti di grosse dimensioni (non parliamo di stringhe, perchè rappresentano testo mentre qui in generale conviene parlare di bytes) io partirei con farlo nel modo semplice, ossia confrontando i vari chunks di 4kb o 8kb. Se i due oggetti sono su computer diversi, come nel caso dell'OP, questo approccio non diventa più conveniente. Però invece di confontare l'SHA-1 calcolato sugli interi oggetti, io confronterei l'SHA-1 calcolato sui singoli chunks. Il problema di usare una funzione di hash, però, resta quello che hash(A) == hash(B) non garantisce che A == B. > [...] Ciao Manlio
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python