fbpx

L’intelligenza artificiale che programma da sola. Ecco la corsa per evitare il prossimo Millennium Bug

Creare software in grado di programmare  in autonomia, o quantomeno di capire in maniera intelligente le intenzioni del programmatore umano, assisterlo, consigliarlo e indirizzarlo. Proponendogli soluzioni, scorciatoie, in generale scrivendo codice al suo posto. Un modo per alleggerire il lavoro, spesso ripetitivo, di chi scrive il codice sorgente, quella sequenza interminabile di istruzioni che fanno funzionare il mondo in cui siamo immersi h24. 

E’ questo uno dei sogni di Bologna Big Code Lab, progetto che sta per nascere al Tecnopolo di Bologna e che si basa su due pilastri: l’intelligenza artificiale (AI) e i big data. I big data, nel caso del Bologna Big Code Lab, sono le miliardi di righe di codice che a breve saranno custodite negli archivi del Tecnopolo, che si trasformerà in un mirror (una copia esatta) del gigantesco archivio francese Software Heritage, progetto che si prefigge di collezionare e conservare il codice sorgente in quanto “patrimonio culturale” dell’umanità, perché “nel software sono contenute conoscenze tecniche e scientifiche da non disperdere”

 L’altro elemento fondamentale di Bologna Big Code lab sarà la messa al lavoro dell’intelligenza artificiale su questa mole incredibile di dati. Quello che si chiama, appunto, “big code”. 

“Data is the new oil”

Data is the new oil, scriveva nel 2017 l’Economist. Come dire: esiste un’enorme ricchezza tutta da trovare ed estrarre. Come il petrolio quindi non basta avere i big data, cosa di per sé non scontata perché questi giacimenti di informazioni bisogna prima crearli. I big data bisogna anche saperli leggere, organizzare, comprendere e, alla fine, riuscire ad estrarne valore. E’ la data economy, un’economia che già domina tant’è che ormai non si parla più delle sette sorelle, locuzione creata dal presidente dell’Eni Enrico Mattei negli anni 50 per indicare le grandi del petrolio, bensì delle Big Five (Amazon, Meta, Alphabet, Microsoft e Apple). Tra queste solo Apple trae una parte importante dei guadagni dall’hardware. Tutti gli altri giganti invece guadagnano raccogliendo e sfruttando dati

Quale sarà il “new oil” di Bologna Big Code Lab è chiaro. E’ il codice immagazzinato dall’Enea nel suo data center che fra pochi mesi sarà installato al Tecnopolo. Un’impresa già di per sé importante perché creerà una replica del progetto Software Heritage, l’archivio mondiale del codice. Ma non basta. Quei dati bisognerà saperli sfruttare. 

A guidare l’impresa, oltre all’Enea, c’è l’Università di Bologna e l’Ifab, l’International Foundation Big Data and Artificial Intelligence for Human Development.

L’intelligenza artificiale al lavoro sul big code

“Usando il machine learning siamo capaci di creare software capaci di estrarre informazioni e operare classificazioni. In breve possiamo avere programmi capaci di distinguere un volto in una foto, oppure trovare da soli ombrelli o automobili su un catalogo enorme di fotografie non classificate”, spiega il Maurizio Gabbrielli, direttore del dipartimento in Computer Science and Engineering dell’Università di Bologna.

Le soluzioni di machine learning esistono da tempo, e sono sempre più utilizzate nei più svariati ambiti. Uno di questi è, appunto, quello della scrittura del codice. Non che l’essere umano non possa farlo da solo, scrivere codice o trovare tutti gli ombrelli presenti in una serie di foto. 

Ma le cose si complicano quando si tratta – ad esempio – di trovare tutti gli ombrelli all’interno di miliardi di foto. Quante persone ci vorrebbero per portare a termine il lavoro? E per quanto tempo dovrebbero applicarsi? Le moderne tecniche di AI tutto questo riescono a farlo da sole, con margini di errore sempre più piccoli.

L’idea di Gabbrielli e del suo team di ricerca è di lavorare nei prossimi anni con un obiettivo: creare software in grado di analizzare, invece che le immagini, i miliardi di righe di codice del Bologna Big Code Lab, e da lì far nascere sistemi automatici capaci di apprendere da soli e aiutare i programmatori

Le tecniche di machine learning possono creare software capaci di capire quel che si deve o non si fare in termine di coding, e aiutare i programmatori durante la scrittura di nuovo codice”. E in futuro magari, chissà, le AI saranno in grado scrivere da sole gran parte del codice sorgente necessario.

Perché farlo? Per rendere più veloce e efficace la produzione di codice. In buona sostanza per evitare gli errori e i bachi nascosti. 

Risolvere il baco del Millennio è costato 600 miliardi di dollari

La sfida dello scrivere codice corretto

Trovare modi per scrivere codice corretto e senza errori è anche una questione economica. L’impatto sul mondo reale dei bug di programmazione può essere enorme. L’autopilota delle auto elettriche intelligenti Tesla è capace di guidare da solo l’automobile a destinazione, ma può sbagliare, e secondo il New York Times è stato responsabile della morte di almeno tre persone. Quando è successo Tesla ha registrato crolli del suo titoli in borsa. Poi c’è la parte finanziaria. 

In un rapporto del 2017, quindi già di per sé datato, la software testing company Tricentis ha analizzato 606 “software fails” di vari tipi, dai bachi ai buchi di sicurezza, e ha stimato un impatto da 1,7 trilioni di dollari (un trilione è un miliardo di miliardi). Una delle conclusione di Tricentis è stata che le attività di testing dei software sono ancora troppo poco sviluppate, e comunque inadeguate al compito. 

Attraverso l’intelligenza artificiale un team di lavoro potrebbe realizzare da subito un buon software con il minor numero di errori possibile, invece che intervenire a posteriori – quando magari è già tardi – correggendo e testando.

Un esempio di disastro finanziario dovuto a pezzi di codice problematico è il famosissimo Millennium Bug, un baco che ha tenuto per decenni in scacco i programmatori di mezzo mondo, e che ha avuto le sue conseguenze più importanti alla fine dello scorso millennio. Quando un problema noto, l’impossibilità per l’orologio di alcuni sistemi informatici di superare correttamente l’anno 2000. Un baco la cui correzione è costata 600 miliardi di dollari in tutto il mondo

Un elementare esempio di software in grado di applicare tecniche di machine learning.

Come funzionerà un software intelligente capace di programmare?

Il prof Gabbrielli fa un esempio banale, ma che può rendere l’idea di come potrebbero funzionare questi programmi di intelligenza artificiale per la programmazione una volta averli fatti allenare sui big data di Bologna Big Code Lab. “Gli editor attuali correggono errori sintattici – spiega -. Se sbaglio un comando ci può essere una segnalazione o una correzione automatica, esattamente come avviene sugli editori di testo quando ci sfugge una lettera sbagliata. Ma questi editor capiscono la sintassi, non il contesto. Io mi immagino programmi addestrati a riconoscere quel che sta succedendo perché forti di un apprendimento basato su miliardi di esempi, e a quel punto capaci di capire cosa sta scrivendo un programmatore. Sta impostando un algoritmo per ordinare dal più piccolo al più grande dei numeri? Bene, il software lo capirà al volo e gli proporrà una soluzione già scelta tra le tantissime già scritte e testate, e se possibile proporrà la soluzione migliore, la più pulita e performante”.

Il big code come ring di allenamento per l’intelligenza artificiale

Facile a dirsi, complicato a farsi. Il completamente sintattico è guidato da grammatiche e regole tutto sommato semplici, perché strettamente codificate (è il caso dei linguaggi di programmazione). Se scriviamo “Mio cane è intelligente”, un programma potrebbe correggere il refuso e inserire un articolo all’inizio della frase. Con la semantica è tutto più intricato perché si entra nel campo del significato e dell’interpretazione. 

Un programma di AI si chiederà: cosa sta cercando di scrivere il programmatore? Dove vuole arrivare? La risposta arriverà dalla forza bruta, avere cioè analizzato miliardi di file pieni di esempi e averne tratto dei pattern, delle regole, ma anche da algoritmi capaci di apprendere in autonomia quel che sta succedendo. 

C’è una complicazione in più. Non è detto che tutto il codice immagazzinato in Bologna Big Code Lab sia corretto o scritto nel modo migliore. Nel gergo informatico esiste un’espressione che si chiama spaghetti code, e che fa riferimento al codice che magari funziona ma che è scritto male ed difficile da capire (e quindi da mantenere, cioè correggere e aggiornare). 

La differenza tra un pezzo di codice sorgente ben fatto e uno scritto male potrebbe spiegata con un esempio: il buon codice se deve annaffiare le piante del giardino lo fa prendendo sempre lo stesso bagnafiori verde, un bagnafiori con le giuste dimensioni. Il codice cattivo invece il bagnafiori lo costruisce tante volte quante volte bisogna occuparsi delle piante, quindi potenzialmente anche centinaia o migliaia. Con centinaia o migliaia di possibilità che quel bagnafiori prima o poi venga costruito male, abbia dei buchi, sia troppo piccolo o troppo grande. Come faranno i programmi di AI a imparare solo dal codice buono e non da quello cattivo? “Le soluzioni ci sono e le dobbiamo valutare bene. Questa sarà una delle nostre sfide”, dice Gabbrielli. 

Il tema è importante perché le regole che fanno funzionare gli algoritmi di AI non sono tutto. Il machine learning impara sulle informazioni che gli vengono dati in pasto, e se queste sono problematiche il risultato sarà di conseguenza discutibile.

Gabbrielli cita l’esempio molto noto dell’AI che, dopo avere valutato i cv per una posizione di amministratore delegato, sceglieva sempre uomini. “Succedeva così perché i dati del mondo reale, quelli da cui il programma pescava, dicevano al software che gli amministratori delegati erano tutti o quasi uomini. La conclusione, logica ma chiaramente errata, era che i profili migliori per quel posto fossero quasi esclusivamente maschili”. Un problema reale, visto che il 40% degli algoritmi di AI ha quelli che si chiamano in inglese gender bias, pregiudizi di genere

Una buona AI del futuro dovrà essere capace di evitare gli errori del passato, e quando e se si tratterà di scrivere codice in autonomia, dovrà fare in modo di scegliere algoritmi capaci di evitare le discriminazioni. 

Change-Makers è il magazine digitale che racconta idee, storie, protagonisti del cambiamento. Scriviamo di cooperazione e innovazione sociale, ambientale, economica, digitale, organizzativa, etica e filosofica.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Cerca nel sito