Usiamo i cookie per migliorare la tua esperienza di fruizione

Cliccando su qualsiasi link in questa pagina fornisci il tuo consenso all'uso dei cookie

Stampa questa pagina
L’intelligenza artificiale ha imparato a programmare, quali conseguenze per le aziende? - AIIC (Associazione Italiana esperti in Infrastrutture critiche)

L’intelligenza artificiale ha imparato a programmare, quali conseguenze per le aziende? - AIIC (Associazione Italiana esperti in Infrastrutture critiche)

MAGGIO 2022

Dopo aver imparato a parlare e a scrivere, l’intelligenza artificiale (IA) ora sta imparando a programmare. L’automazione avanzata sta facendo passi da gigante nelle mansioni che potremmo definire di concetto: se poco tempo fa ci si stupiva per un sistema IA che risolveva un ticket o che sosteneva correttamente una conversazione al telefono, oggi osserviamo come l’asticella si va alzando inesorabilmente sempre più in alto. Le stesse tecnologie alla base della comprensione del linguaggio vengono ora usate per conferire ai sistemi IA la capacità di scrivere righe di codice.
L’anno scorso OpenAI, l’azienda di San Francisco che pochi anni fa rilascio un importante modello di comprensione e generazione del linguaggio chiamato GPT-3, ha lanciato un prodotto chiamato GitHub Copilot, sviluppato in collaborazione con GitHub di Microsoft. Copilot affianca lo sviluppatore umano generando suggerimenti di completamento per il programma che si sta modificando, basandosi sia sui commenti all’interno del file, sia sul codice scritto in precedenza. Cio significa, in sostanza, che quando un programmatore inizia a scrivere codice, dopo un po’ Copilot “capisce” cosa sta cercando di fare l’essere umano e inizia a suggerire diversi modi per completare il codice. Il meccanismo funziona piu o meno allo stesso modo in cui diversi software di comunicazione ci suggeriscono quale parola scrivere quando iniziamo a digitare le prime lettere.
Il sistema e molto potente, perche addestrato su miliardi di codici pubblici ospitati su GitHub. Ma Copilot, come suggerisce il nome, non mira a rimpiazzare lo sviluppatore umano, bensì ad assisterlo come un fedele co-pilota. Il sistema IA non e in grado di scrivere programmi interamente da solo, non quando la qualita del codice o semplicemente il corretto funzionamento del programma sono fattori importanti. Le sue funzioni sono utili per aiutare gli sviluppatori a superare passaggi tediosi o per suggerire soluzioni a cui non avevano pensato. Bisogna poi essere consci di alcune sue limitazioni. Ad esempio, poiche il modello e stato addestrato con repository pubblici, potrebbe suggerire frammenti di codice provenienti da vecchi moduli o da vecchie librerie, rischiando così di inserire codice obsoleto nel programma.
Per diversi mesi GitHub Copilot e stato l’unico software di questo tipo. Poi qualche settimana fa anche DeepMind (che fa parte della galassia Google) e scesa in campo con il suo sistema in grado di scrivere codice. AlphaCode, questo il nome del modello IA, e stato addirittura in grado di posizionarsi a meta classifica in una competizione di programmazione, risolvendo problemi che necessitavano di logica, generazione di algoritmi, pensiero critico, comprensione del linguaggio naturale e ovviamente sviluppo di codice. Non facciamoci ingannare dalla posizione a meta classifica: si tratta di un grande successo per un sistema al suo esordio, in particolare in un ramo dell’intelligenza artificiale finora scarsamente battuto.
Fin qui le notizie. Ora però non possiamo fare a meno di pensare a come cambieranno le cose per gli sviluppatori che lavorano nelle nostre aziende e per i programmi che girano nei nostri sistemi, anche mission critical. Anzitutto, nel breve termine i potenziamenti derivanti dall’intelligenza artificiale saranno d’aiuto a chi oggi sviluppa codice, vuoi per velocizzare alcuni passaggi tediosi, vuoi per trovare soluzioni a problemi dove da soli non si riusciva a venirne a capo. Il risultato è che gli attuali sviluppatori avranno una funzione in più su cui poter contare.
Dal lato dell’azienda, tuttavia, è innegabile che se per realizzare lo stesso software in futuro serviranno sette persone anziché dieci, potremo prevedere una contrazione dei team di sviluppo, in particolare per quello che riguarda gli sviluppatori entry-level, quelli cioè alle prime armi e indirizzati dai colleghi a occuparsi dei compiti più tediosi e ripetitivi.
Sul piano del codice prodotto dall’IA, attualmente gli sviluppatori più esperti esprimono perplessità sulla capacità di programmazione dell’intelligenza artificiale, trovando talvolta codice inadeguato,
proveniente magari da librerie obsolete, inutilmente gonfiato e, in alcune occasioni, con bug. Si tratta però delle stesse obiezioni che qualche anno fa venivano mosse ai sistemi IA di scrittura, che oggi hanno invece raggiunto livelli estremamente sofisticati. È probabile che in pochi anni anche i sistemi IA di programmazione raggiungeranno velocemente livelli avanzati, producendo codice in linea con gli standard richiesti dalle aziende. A quel punto si procederà alla stessa trasformazione che abbiamo visto, ad esempio, nel mondo delle traduzioni, dove il lavoro umano si sta spostando via dalla prima stesura la traduzione vera e propria – per finire nel proofreading, ovvero nel passaggio successivo dove si controlla e si migliora il lavoro svolto dalle macchine.
In ogni caso sarà assolutamente necessario che le aziende impegnate nella realizzazione di software per le infrastrutture critiche (IC), oltre che le stesse IC, siano al corrente di questi nuovi sviluppi e che osservino con attenzione come viene creato il codice dei programmi che andranno a far funzionare i loro sistemi critici. Non sarà possibile, oltre che futile, cercare di prevenire o limitare l’uso dell’IA generatrice di codice, ma sarebbe opportuno chiedere e ottenere trasparenza su quali porzioni di codice sono state realizzate da un sistema di intelligenza artificiale, effettuando magari verifiche addizionali su quei passaggi.

Luca Sambucci

(Newletter AIIC n. 4 (2022))