Ci sono alcuni argomenti che è indispensabile conoscere, come ad esempio i fondamenti della programmazione, o alcuni concetti di matematica, magari sotto forma di
equazioni, ma a volte non è chiaro se sia indispensabile, utile o produttivo (in senso ampio, ovvero capace di portare frutti) conoscere per davvero un argomento, averne sentito parlare, o semplicemente fare sì con la testa al momento giusto.
Probabilmente gli aspetti divertenti o insoliti di un linguaggio, come ad esempio Java, potrebbero rientrare agevolmente nella prima categoria, e non ci si dovrebbe limitare a usarli come argomento folkloristico o di propaganda in favore del linguaggio stesso, anche se non è detto che l'utilità pratica debba necessariamente saltar fuori in una situazione reale.
Per esempio, pare che esistano
sequenze casuali o
random più regolari di altre, o almeno così sembra considerando il risultato di questa istruzione:
Random random = new Random(441287210);
for(int i=0;i<10;i++)
{ System.out.print(random.nextInt(10)+" ");
}
Provare per credere: il passaggio al costruttore del numero 441287210 produce una sequenza di dieci cifre
1, cosa che non accade se si sostituisse ad esempio l'ultimo 0 con un 9. Dunque, parafrasando
Orwell, "tutti i casuali sono uguali, ma alcuni sono più uguali degli altri". Cercando con Google, si troveranno in Rete alcuni nomi e facce di chi ha ripreso la
fonte originaria di questa curiosità. Peccato, personalmente avrei preferito trovare la prossima cinquina sulla ruota nazionale.
Qualcosa di analogo succede se si usa, nella stessa situazione, il numero
-6732303926L: in questo caso, succede che vengano stampate le cifre da 0 a 9, ovviamente in ordine crescente. Chissà se è possibile invertire l'ordinamento, in che modo, e come si arriva a trovare questi numeri magici, che portano, nell'ultima segnalazione, a costruire addirittura, sempre usando la classe
Random, una stringa (pseudo) casuale, che ricorda molto da vicino quella che si trova nelle prime pagine dello storico
manuale di
Kernighan e
Ritchie.
La segnalazione si chiude con una breve
sitografia, nella quale sono menzionate le
fonti di queste segnalazioni, all'interno delle quali si trova anche una motivazione, credo valida, per non arrendersi alla logica del
cosa serve: capire il funzionamento del linguaggio aiuta a scrivere codice più semplice e veloce. Il caso in questione riguarda una linea di codice piuttosto astrusa, e il numero intero che ne deriva:
int i = (byte) + (char) - (int) + (long) - 1;
Lascio la
risposta alla curiosità dei lettori.