Il 5 maggio di quest’anno Ibm ha annunciato Project CodeNet, la più grande raccolta mai realizzata di software informatici arricchiti da annotazioni che ne descrivono il funzionamento.
Il progetto è nato da un’idea simile a quella di ImageNet, un enorme archivio di dati di immagini che ha ricoperto un ruolo centrale per il progresso del riconoscimento di oggetti tramite visione artificiale. Con un dataset composto da 14 milioni di campioni di codice in 50 diversi linguaggi di programmazione (destinati a risolvere 4mila problemi di codifica), CodeNet cercherà di fare nel campo della programmazione informatica ciò che ImageNet ha fatto con le immagini: al posto di fotografie, ci saranno quindi istruzioni e righe di codice.
L’obiettivo è ispirare i ricercatori nello sviluppo di strumenti per l’analisi automatica dei programmi, sulla base di tecniche di apprendimento automatico “trasmesse” al computer: ciò rappresenta un fondamentale passo avanti nel progresso del cosiddetto deep learning.
Deep learning e linguaggio naturale
Con deep learning si intende quella branca degli studi sull’intelligenza artificiale che sfrutta algoritmi ispirati alla struttura del cervello umano. In sintesi, questa tecnologia si può definire come l’apprendimento del comportamento dell’uomo da parte di un computer attraverso l’applicazione di algoritmi particolarmente complessi (prevalentemente di calcolo statistico). Le architetture di deep learning stanno alla base, per esempio, dei software di riconoscimento automatico della lingua parlata (come Siri e Cortana), ma anche di elaborazione del “linguaggio naturale”.
La programmazione in linguaggio naturale viene chiamata natural language coding (Nlc). Con questa tecnologia, il linguaggio spontaneo dell’utente (per esempio l’inglese) viene interpretato e convertito in linguaggio di programmazione: ciò significa che, scrivendo semplici frasi di istruzioni, il sistema sarà in grado di tradurle in righe di codice C++, Phyton o Java.
Recentemente, alcune compagnie statunitensi hanno accelerato sul fronte dello sviluppo di tecnologie di elaborazione del natural language coding: lo hanno fatto sviluppando programmi basati sull’apprendimento automatico ideati per “intercettare” e imitare al meglio il linguaggio naturale degli esseri umani, anche con la traduzione di lingue diverse.
Tra queste c’è OpenAI (tra i cui fondatori figura Elon Musk), società che conduce ricerche con il dichiarato obiettivo di promuovere e sviluppare un’intelligenza artificiale «amichevole», in modo da «avvantaggiare l’umanità nel suo insieme» (il prototipo attuale si chiama Gpt-3). Anche Google, con la sussidiaria DeepMind, si sta muovendo in questa direzione, così come Microsoft che – in collaborazione con Nvidia – ha recentemente realizzato la rete neurale Mt-Lng, forte di 530 miliardi di diversi parametri per l’imitazione dei ragionamenti umani.
Futuro vicino o lontano?
La standardizzazione di sistemi di natural language coding e l’abbassamento delle barriere d’accesso alla programmazione avrebbero implicazioni enormi: improvvisamente, pressoché chiunque sarebbe in grado di realizzare software, senza bisogno di possedere competenze di coding informatico.
Una svolta simile avrebbe ripercussioni anche sulla ricerca scientifica: discipline come la fisica computazionale si affidano sempre più a programmi informatici personalizzati per elaborare i dati. Rendere accessibile a qualsiasi studioso la realizzazione di questo genere di programmi amplierebbe notevolmente lo spettro di possibilità per la ricerca.
Ma attenzione a farsi prendere dall’entusiasmo con troppa fretta: come spiega Giuseppe Attardi, professore di Informatica presso l’Università di Pisa e membro del gruppo di esperti per la “Strategia italiana per l’Intelligenza Artificiale” redatta dal ministero dello Sviluppo Economico, il percorso è ancora lungo: «nel software engineering si è tentata la strada delle specifiche formali, ossia si esprimono con delle formule logiche quali sono le caratteristiche del risultato da ottenere. Purtroppo, per la maggior parte dei casi di programmi non banali, formulare le specifiche in “modo informale” a volte è più difficile che scrivere un programma».
CodeNet rappresenta un esperimento importante proprio sul fronte del software engineering, ma è lontano dall’essere un reale mezzo di programmazione assistita: «Il suo dataset potrà essere utilizzato per la costruzione di strumenti di analisi e trattamento di programmi più sofisticati di quelli forniti dalle attuali tecniche. Tuttavia, non mi aspetto che saremo in grado di avere macchine che scrivono programmi per noi, poiché noi stessi non siamo in grado di specificare cosa vorremmo che facesse un programma. Quasi sempre, lo sviluppo di un software è un processo iterativo, in cui l’obiettivo da raggiungere non è precisato interamente. La fase di test, in cui si verifica se il programma fa ciò che ci si attende, rimane tuttora un passaggio cruciale: spesso ciò rivela casi o situazioni non previste, che obbligano a rivedere o raffinare il programma».
Vedremo mai, quindi, una intelligenza artificiale capace di assistere al 100 per cento un utente privo di competenze informatiche? «Le capacità dei sistemi di intelligenza artificiale cresceranno rapidamente nei prossimi anni, con la costruzione di modelli la cui dimensione si avvicinerà a quella del cervello umano. Ogni giorno vengono pubblicati oltre 200 nuovi articoli di ricerca in questo campo, quindi mi aspetto rapidi progressi. Ma non starei a trattenere il respiro fino a che questo avvenga».
Anche se non nel breve periodo, il futuro di questa tecnologia resta promettente. Occhio però ai rischi: lo sviluppo di un’intelligenza artificiale che comprenda fluentemente il natural language coding richiede enormi investimenti economici. È probabile che, in prospettiva futura, questo settore verrà monopolizzato dai grandi conglomerati tech che si sono mossi in anticipo e che sono già al lavoro su questo fronte.
«Il settore dell’Ia in generale, non solo quello del coding automatico, è a rischio», prosegue Attardi. «I recenti modelli di transformer richiedono risorse di calcolo che solo pochi si possono permettere: per esempio, per Gpt-3 (la “creatura” di Open Ai, ndr) si stima siano servite un migliaio di Gpu con un costo di circa 20 milioni di dollari. Tra le aziende più avanti sull’Ia ci sono Google, Facebook, Amazon e OpenAI (con dentro Microsoft), oltre ai cinesi Tencent e Alibaba. Se ne dovrebbe parlare a lungo, perché i rischi di colonizzazione da parte di poche grandi aziende sono molto preoccupanti».