L’apprendimento automatico è sul punto di rendere la programmazione più affidabile, efficiente e sicura
Ogni anno si spendono miliardi di euro per correggere i difetti dei software, molti dei quali scaturiscono da un codice difettoso. Ciò che occorre sono software più affidabili, efficienti e sicuri. La sfida, tuttavia, risiede nel fatto che creare questo tipo di software risulti difficile, per non dire impossibile, utilizzando le tecniche tradizionali. È qui che entra in gioco il progetto BIGCODE, finanziato dall’UE, che combina i linguaggi di programmazione e l’apprendimento automatico per costruire nuovi tipi di motori di programmazione capaci di fornire soluzioni statisticamente probabili a problemi altrimenti impossibili. «Il progetto ha realizzato nuovi tipi di modelli di apprendimento automatico che è possibile addestrare sui codici informatici», afferma Martin Vechev(si apre in una nuova finestra), responsabile del laboratorio per sistemi sicuri, affidabili e intelligenti(si apre in una nuova finestra) (SRI) presso il Politecnico federale di Zurigo(si apre in una nuova finestra) (ETH Zürich), nonché coordinatore del progetto BIGCODE. «L’obiettivo consiste nell’impiego di questi modelli per l’esecuzione di diverse attività rilevanti, quali la generazione automatica di un nuovo codice, il rilevamento di violazioni della sicurezza nel codice esistente e la traduzione tra linguaggi di programmazione, solo per citarne alcuni.»
Nuovi tipi di modelli di apprendimento automatico
Il risultato principale del progetto, sostenuto dal Consiglio europeo della ricerca(si apre in una nuova finestra), è rappresentato dallo sviluppo di nuovi tipi di modelli fondamentali di apprendimento automatico. «Ciò che rende così unici questi modelli è il fatto di poterli addestrare sul codice, nonché la loro capacità di superare sfide che in passato erano impossibili», spiega Vechev. «Inoltre, i nostri modelli sono interpretabili, vale a dire che le decisioni che prendono possono essere comprese ed esaminate da esseri umani.» Durante la realizzazione di modelli di apprendimento automatico, i ricercatori si sono resi conto che i programmi informatici si avvalgono di semantiche complesse e formali. Al fine di effettuare l’estrazione di queste semantiche, l’addestramento ben riuscito sui codici deve dimostrarsi in grado di integrare i metodi simbolici nel processo. Secondo Vechev, ciò va ben oltre ai metodi impiegati per addestrare i modelli basati sui linguaggi naturali o sulle immagini. «Come tali, i progressi che abbiamo compiuto hanno rivelato un valore concettuale che si spinge oltre al codice, ad esempio, nella sintesi di programmi rumorosi, nell’elaborazione del linguaggio naturale e nella scoperta di nuovi tipi di grammatiche formali», osserva Vechev. «In un certo senso, il lavoro nel settore del codice è stato proficuo alla luce dello sviluppo di nuovi metodi che è possibile generalizzare facilmente.»
Software di affidabilità e sicurezza superiori
I modelli realizzati durante il progetto BIGCODE, che Vechev chiama «AI for Code» (IA per il codice), sono già utilizzati da centinaia di migliaia di programmatori, comportando così l’affermarsi di software più affidabili e sicuri. Sulla base del lavoro svolto durante il progetto, i ricercatori hanno inoltre avviato una start-up di successo dal nome DeepCode(si apre in una nuova finestra). Da allora la start-up è stata acquisita da Snyk(si apre in una nuova finestra), una grande azienda che si occupa di sicurezza informatica che ha integrato DeepCode in molte delle sue attività. «Il progetto BIGCODE ha dimostrato che è possibile non solo fare progredire le nostre conoscenze e contribuire a forgiare nuovi ambiti di ricerca, ma anche sfruttare questi stessi progressi per l’istituzione di aziende di tecnologia avanzata di successo dotate di un enorme valore economico», conclude Vechev.