Prof. Vigna: «Progettare algoritmi è adrenalinico»

Prof. Vigna: «Progettare algoritmi è adrenalinico»

L’algoritmo «xorshift128+» utilizzato da Chrome, Firefox e Safari è stato sviluppato da un professore universitario italiano, il Prof. Vigna. Grazie alla sua disponibilità possiamo sapere direttamente da lui qualche dettaglio in più su quello che attualmente è il generatore di qualità più veloce che esista.

Buongiorno Prof. Vigna, lei insegna informatica all’Università Statale e da qualche settimana il suo nome non è conosciuto solamente dai suoi studenti, ma anche per aver sviluppato l’algoritmo «xorshift128+». Ci spieghi qual è la particolarità di questo algoritmo, perché è stato scelto da questi colossi e come ne sono venuti a conoscenza.
L’algoritmo è un semplice generatore di numeri pseudocasuali. Un generatore di questo tipo è presente in tutti i linguaggi di programmazione, e storicamente sono stati di pessima qualità (anche quello di base di Java, per esempio, è di pessima qualità). xorshift128+ è andato a rimpiazzare il generatore di JavaScript, il linguaggio utilizzato all’interno dei browser.
Di per sé il generatore precedente non avrebbe causato grandi problemi a un browser. Solo che da qualche anno JavaScript viene utilizzato anche nei server, soprattutto per via del framework node.js (https://nodejs.org/en/), che gira sul motore JavaScript V8 di Google. È stata proprio una ditta che occupava di scommesse online e che utilizzava node.js a scoprire il problema. Utilizzavano il generatore di V8 per costruire identificatori unici da attribuire alle scommesse (un po’ come il codice di prenotazione di un biglietto). In teoria, se il generatore fosse stato di qualità ci sarebbero voluti milioni di anni per avere due identificatori uguali. Invece è successo dopo tre giorni, causando degli ovvi problemi. Tutta la storia è stata descritta in dettaglio, e gli ingegneri di Google che lavoravano a V8 hanno deciso di mandare in pensione il vecchio generatore e utilizzarne uno nuovo: xorshift128+ (http://v8project.blogspot.it/2015/12/theres-mathrandom-and-then-theres.html). La scelta è stata dettata essenzialmente dal fatto che tra i generatori di qualità è il più veloce esistente.

La paternità di questo algoritmo non le fa percepire alcun compenso, dato che i suoi codici sono a disposizione di tutti. In ambito informatico non mancano esempi virtuosi, ad esempio sistemi operativi open source, nei quali il profitto non è contemplato. In una società sempre più alla rincorsa del profitto forsennato, è significativo questo andare in «direzione ostinata e contraria», come direbbe Fabrizio De André. Cosa ci può dire a riguardo?
Gli algoritmi sono oggetti astratti. Non ha senso percepire denaro da un algoritmo, non più di quanto abbia senso percepire denaro dal teorema di Pitagora. La legislazione statunitense ha fatto parecchia confusione in questo campo negli ultimi decenni, ma la situazione si sta gradualmente normalizzando.
Dal mio punto di vista è normale: io vengo pagato dallo stato per fare ricerca, e i frutti sono a disposizione di tutti. Oltre a questo algoritmo ho pubblicato molto altro software libero. Trovo molto stimolante il tipo di collaborazione planetaria che si instaura con facilità nel mondo del software.

Gli algoritmi riguardano la nostra vita più di quanto si possa immaginare, essendo alla base di innumerevoli e ormai scontate azioni che quotidianamente eseguiamo già solamente maneggiando uno smartphone. Come ci si sente ad essere parte di questo mondo? Come è nata la sua passione per l’informatica e quando ha deciso di seguire questa passione per farne anche un lavoro?
Progettare algoritmi e implementarli (cioè scrivere il codice corrispondente) è molto divertente. È un’attività ad alto tasso di adrenalina, anche se molti non la immaginano in questo modo. Ho cominciato molti anni fa a programmare computer che si trovavano in esposizione nei negozi (erano gli anni ottanta). Poi un Commodore 64, un Amiga, Linux, Mac e tutto il resto. Sono laureato in matematica, ma ho perseguito un dottorato in informatica per mettere insieme le mie due passioni.

L’informatica è di aiuto all’umanità, facilitando e velocizzato processi altrimenti impraticabili, come ad esempio nel campo della ricerca medico-scientifica. In merito a questo, ho letto che lei fa parte di un team interdisciplinare nel Centro per la Complessità e i Biosistemi della Statale che studia i geni relativi alla diagnosi del cancro. Ci accenna brevemente qual è la parte che la riguarda?
Stiamo collaborando con i biologi e i fisici del centro per trovare nuovi modi di identificare i geni responsabili di vari tipi di cancro. Ci sono ormai molte banche dati di genoma che si prestano a un’analisi basata su tecniche di analisi di reti o di apprendimento computazionale. È un progetto molto aperto e in fase iniziale, ma per me è una nuova avventura e come tale molto stimolante.

Al loro esordio i computer erano appannaggio di pochi, scatole ingombranti, con programmi limitati e da trascrivere a mano, schede grafiche che a pensarci vien tenerezza, e senza collegamenti esterni. Abbiamo assistito ad una rivoluzione che ha portato ad avere letteralmente il mondo in una mano, ma tutto è già servito e ben confezionato. Ci siamo persi qualcosa per strada?
Sì, nessuno sa più programmare. È un peccato, perché è un’attività che abitua a una logica ferrea e a organizzare i propri pensieri e le proprie azioni. Quando ho avuto il mio primo computer, ho dovuto scrivere programmi per qualunque cosa volessi fare. Oggi è già tanto se un utente è in grado di installarlo, un programma, figuriamoci scriverlo…

Un’ultima domanda, il nostro sistema scolastico è inadeguato in ambito informatico? Siamo in ritardo come formazione per quanto riguarda automazione e robotica? Si investe in questo settore? Possibile e, a suo parere, necessario creare anche da noi una Silicon Valley?
Sono domande a cui non so rispondere, perché ho pochi contatti con la scuola che ci precede. Sicuramente non ci arrivano molti ragazzi/ragazze che sanno programmare, ed è un peccato perché esattamente come avviene per i linguaggi naturali (italiano, inglese, ecc., per intenderci) l’apprendimento dei linguaggi artificiali è molto più facile e avviene in modo molto più fruttuoso quanto prima viene effettuato. Quanto alla Silicon Valley… non è che possiamo crearla. Possiamo solo creare le condizioni per farla emergere.

Se ti è piaciuto questo articolo seguici su Twitter e Facebook