Prof. Paolo Ferragina, Lei è autore, assieme a Fabrizio Luccio, del libro Il Pensiero Computazionale: dagli algoritmi al coding edito dal Mulino: cos’è il pensiero computazionale?
Il Pensiero Computazionale: dagli algoritmi al coding, Paolo Ferragina, Fabrizio LuccioAlgoritmo e coding sono due termini entrati prepotentemente nel gergo comune: il primo stabilisce le regole logiche da impiegare nella risoluzione di un problema e la sequenza secondo cui devono essere applicate; il secondo comanda l’esecuzione dei passi di quella sequenza su un particolare dispositivo di calcolo sia esso un PC, uno smart-phone, un televisore o uno smart-watch. Il «pensiero computazionale» è basato sulla comprensione di questi concetti.

In che modo il libro introduce il Pensiero Computazionale ai suoi lettori?
Il libro si rivolge a studenti, docenti, appassionati di problem solving e li conduce nella comprensione e progettazione di algoritmi che risolvono problemi provenienti da diversi campi della scienza e della tecnologia e che hanno un’importanza rilevante nel mondo di oggi: quali motori di ricerca, compressione dati, crittografia, la realizzazione di un torneo, un problema finanziario, e diversi altri.
Abbiamo cercato di strutturare la presentazione in modo che questa sia facilmente accessibile a chiunque abbia cognizioni matematiche elementari, senza rinunciare al rigore necessario per trasformare idee generali in algoritmi eseguibili senza compromessi. Perché il testo sia fruibile nel miglior modo, esso è diviso in capitoli pressoché indipendenti lasciando così al lettore la libertà di scegliere gli argomenti che preferisce. Inoltre i lettori possono esaminare il funzionamento su un calcolatore degli algoritmi descritti nel testo attraverso un sito Web che contiene la loro realizzazione in linguaggio Python e fornisce ogni mezzo per l’esecuzione e l’eventuale costruzione di nuovi esempi.
Crediamo che il testo possa costituire una buona fonte di ispirazione per i professori di matematica e fisica dei licei che possono estrarre da esso alcuni problemi (computazionali) interessanti con cui arricchire il proprio programma ministeriale e sui quali far esercitare le capacità di problem solving dei propri studenti, usando soltanto il gesso e la lavagna, e quindi senza dover necessariamente conoscere nozioni di programmazione Python o andare in laboratorio.

Il coding si è ormai imposto nella nostra cultura tanto che da più parti se ne propone l’insegnamento anche nelle scuole elementari: in futuro saremo tutti programmatori?
Capire il procedimento algoritmico, il suo costo in termini di risorse computazionali utilizzate (tempo e spazio) e la sua utilità sarà sempre più indispensabile non solo per la propria carriera professionale, essendo ogni professione sempre più circondata e incentrata su “dispositivi di calcolo”, ma anche per acquisire la consapevolezza di una logica computazionale e la capacità di problem solving utili anche nelle attività quotidiane e per reagire velocemente ed efficacemente a determinate situazioni.

Quali sono i limiti della capacità risolutiva degli algoritmi?
Questo è un tema che è stato già affrontato dai padri fondatori di questa scienza, fin dai suoi primordi. Tra questi ricordiamo Alan Turing, reso famoso dal recente film sulla decodifica del codice Enigma durante la Seconda Guerra mondiale. Sappiamo che esistono problemi indecidibili, ossia per i quali non esiste un algoritmo di risoluzione, così come conosciamo molti problemi che sarebbero in principio decidibili ma per i quali il tempo di risoluzione è talmente grande da risultare praticamente irrisolubili al crescere dei dati in input. Il nostro testo ne affronta alcuni di questi, per esempio quello della Torre di Hanoi, e dedica un intero capitolo alla questione “P vs NP” inclusa nell’anno 2000 da un’importante istituzione scientifica americana, il Clay Mathematical Institute, tra i sette problemi matematici più importanti che il millennio precedente aveva lasciato aperti e istituì per la soluzione di ciascuno di essi un premio da un milione di dollari. Si tratta di una questione molto sofisticata, ma con il collega Luccio abbiamo cercato di affrontarla nel modo più semplice possibile anche perché questa coinvolge molte attività quotidiane: quando usiamo il nostro bancomat, o spediamo un pacco, oppure pianifichiamo gli orari di una scuola o turni di lavoro.

Come è possibile trarre valore dai Big Data?
In questi ultimi anni abbiamo assistito a una crescita prorompente del volume e varietà dei dati digitali disponibili. Se a questo aggiungiamo la disponibilità di calcolatori sempre più potenti e di algoritmi sempre più efficienti e sofisticati, ecco che ci possiamo spiegare l’attenzione della ricerca, delle aziende e della società a quel mondo di risultati, strumenti e metodologie che prende più genericamente il nome di “Big Data”. Questo trittico costituisce un abilitatore incredibile alla possibilità presente e futura di (es)trarre, come lei dice, valore dai Big Data. In questo, comunque, la creatività e la capacità dei progettisti di algoritmi, sempre più efficienti ed efficaci, risulta imprescindibile. Ciò spiega il grande interesse di società quali Google, Facebook, Amazon, ecc. ad assumere giovani e brillanti informatici, matematici, linguisti (computazionali)… disposti a cimentarsi su questi temi.

La crittografia è un elemento imprescindibile del web di cui facciamo uso quotidiano: su quali meccanismi si basa?
Il libro dedica un capitolo a questo tema, accompagnando il lettore in un excursus storico che va da Cesare, discutendo dei primi cifrari molto semplici ma sorprendenti per l’epoca, ai cifrari più moderni cosiddetti a chiave pubblica (come il famoso RSA), su cui si fondano gli scambi sicuri delle informazioni di oggi su Internet. Il taglio divulgativo del nostro testo non ci ha permesso di addentrarci nelle questioni più avanzate, quali quelle legate alle blockchain o alla crittografia quantistica o quella basata sulle curve ellittiche. In particolare queste ultime cercano di ovviare ad alcuni inconvenienti legati all’efficienza dei cifrari a chiave pubblica, oggi più incombenti per il progressivo aumento della lunghezza della chiave richiesta per garantire un utilizzo sicuro dei cifrari fino al 2030. Ciò nonostante il capitolo suddetto può costituire una buona introduzione alla crittografia con spunti matematici interessanti e, per gli studenti, credo anche sorprendenti.

Quali innovazioni comprendono le nuove generazioni di motori di ricerca, su cui si è concentrata la Sua ricerca degli ultimi anni?
Utilizziamo, secondo alcuni, la quarta generazione di motori di ricerca basata sull’uso di Grafi della Conoscenza (in inglese, Knowledge Graph), ossia strutture dati che connettono tra loro entità (persone, luoghi, enti, fatti, e più in generale “concetti”) in base a legami di vario tipo che ne catturano relazioni estratte da eventi o basate sulla natura degli stessi. Un semplice esempio di questi grafi è Wikipedia ove le pagine descrivono le entità di questa base di conoscenza e gli hyperlink le relazioni tra esse. I motori di ricerca moderni usano questi grafi, la cui dimensione supera i miliardi di entità e le decine di miliardi di relazioni tra essi, per offrire risposte sempre più precise e sorprendentemente pertinenti dal punto di vista semantico alle interrogazioni formulate dagli utenti. Nel prossimo futuro ci aspettiamo algoritmi sempre più efficienti ed efficaci sia nella costruzione di questi grafi, al fine di ampliare la loro dimensione e arricchire le relazioni tra le entità, sia nella loro capacità di esplorare le relazioni così da potenziare il “ragionamento” svolto da questi algoritmi. Il fine ultimo sarà sempre quello di rispondere al meglio alle interrogazioni formulate degli utenti, possibilmente avvantaggiandosi di interazioni vocali, quali quelle già oggi offerte da strumenti quali Siri, Cortana, Alexa, ecc.. I lettori del nostro libro potranno trovare una trattazione di questi temi in un capitolo a essi dedicato, nel quale spiegheremo con un certo dettaglio alcuni moduli software dei motori di ricerca: credo si tratti di una lezione interessante per gli studenti che spesso ne fanno oggi un uso inconsapevole, disconoscendo quanto di sofisticato accade “dietro le quinte” dopo l’invio di una interrogazione.

Come funzionano gli algoritmi di compressione dei testi, anche questo argomento della Sua ricerca degli ultimi anni?
Esistono tre principali famiglie di compressori: statistici, basati su dizionario e basati su ordinamento. Il libro dedica a questi un capitolo impegnativo, la cui complessità cresce man mano che si procede nella sua lettura. Ritengo in ogni caso lo sforzo fatto dal lettore appagante se questi decidesse di conoscere un po’ più a fondo il funzionamento dei compressori gzip e bzip, che sono oggi alla base di molti scambi di documenti sul Web. I Big Data, l’Internet of Things, il Cloud e le richieste sempre più pressanti di utenti e aziende nell’uso (ottimale) di questi dati e strumenti stanno ponendo obiettivi sempre più ambiziosi al progetto di compressori efficienti ed efficaci qualunque siano i dati processati e il contesto d’uso. A Pisa da più di un decennio stiamo conducendo ricerche in questo contesto con risultati molto interessanti e speriamo d’uso comune nel prossimo futuro.