
Un gruppo di ricercatori ha appena pubblicato una mappa completa delle sfide che l'intelligenza artificiale (IA) deve affrontare nel campo dello sviluppo software e ha proposto una tabella di marcia per la ricerca al fine di far progredire ulteriormente il settore.
Immaginate un futuro in cui l'intelligenza artificiale si occupi silenziosamente dei compiti più noiosi dello sviluppo software: refactoring di codice complesso, migrazione di sistemi legacy e tracciamento di bug legati alle condizioni di gara, in modo che gli ingegneri del software possano concentrarsi interamente sull'architettura del sistema, sulla progettazione e sulla risoluzione di problemi creativi che le macchine non sono ancora in grado di affrontare. I recenti progressi nel campo dell'IA sembrano aver avvicinato notevolmente questa visione.
Tuttavia, un nuovo studio condotto da scienziati del Computer Science and Artificial Intelligence Laboratory (CSAIL) del MIT e da istituti di ricerca partner ha dimostrato che, per realizzare quel futuro, dobbiamo prima affrontare le sfide concrete del presente.
"Molti sostengono che i programmatori non siano più necessari perché l'intelligenza artificiale ha automatizzato tutto", ha affermato il professor Armando Solar-Lezama, docente di ingegneria elettrica e informatica al MIT, ricercatore senior presso il CSAIL e autore principale dello studio. "In realtà, abbiamo fatto progressi significativi. Gli strumenti di cui disponiamo oggi sono molto più potenti di prima. Ma per raggiungere il pieno potenziale dell'automazione, c'è ancora molta strada da fare."
Il professor Armando Solar-Lezama sostiene che la concezione attualmente prevalente semplifica l'ingegneria del software riducendola a un compito simile a un esercizio di programmazione per studenti: ricevere una piccola funzione da implementare e scrivere il codice necessario, oppure svolgere un esercizio in stile LeetCode. La realtà, tuttavia, è ben più complessa: si va dal refactoring del codice per ottimizzare la progettazione, alle migrazioni su larga scala di milioni di righe di codice da COBOL a Java, che modificano radicalmente la piattaforma tecnologica di un'azienda.
La misurazione e la comunicazione rimangono problemi complessi.
L'ottimizzazione del codice su scala industriale, come ad esempio la messa a punto dei core GPU o i miglioramenti multilivello in Chrome V8, rimane difficile da valutare. I benchmark attuali si concentrano principalmente su piccoli problemi impacchettati. La metrica più pratica attualmente disponibile, SWE-Bench, richiede semplicemente a un modello di intelligenza artificiale di correggere un bug su GitHub, equivalente a un esercizio di programmazione di basso livello, che coinvolge poche centinaia di righe di codice, con il potenziale rischio di fughe di dati, e ignora una serie di altri scenari reali come il refactoring assistito dall'IA, la programmazione uomo-macchina o la riscrittura di sistemi ad alte prestazioni con milioni di righe di codice. Finché i benchmark non saranno estesi per includere scenari a rischio più elevato, misurare i progressi – e quindi promuoverli – rimarrà una sfida aperta.
Inoltre, la comunicazione uomo-macchina rappresenta un ostacolo importante. L'autore principale, Alex Gu, uno studente di dottorato, ha affermato che attualmente interagire con l'IA è come "un filo sottile di comunicazione". Quando chiede all'IA di generare codice, spesso riceve file di grandi dimensioni e non strutturati, insieme a pochi casi di test semplici e rudimentali. Questa lacuna è evidente anche nell'incapacità dell'IA di utilizzare efficacemente strumenti software familiari agli esseri umani, come debugger e analizzatori statici.
Un appello all'azione da parte della comunità.
Gli autori sostengono che non esiste una soluzione miracolosa a questi problemi e auspicano sforzi a livello di comunità: la creazione di dati che riflettano l'effettivo processo di sviluppo dei programmatori (quale codice viene mantenuto, quale viene scartato, come il codice viene rifattorizzato nel tempo, ecc.), strumenti di valutazione comuni per la qualità del refactoring, la durabilità delle patch e l'accuratezza nelle transizioni di sistema; e la creazione di strumenti trasparenti che consentano all'IA di esprimere incertezza e di invitare all'intervento umano.
Lo studente di dottorato Alex Gu vede questo come un "invito all'azione" per le comunità open source su larga scala, un obiettivo che nessun singolo laboratorio può raggiungere. Solar-Lezama immagina che il progresso derivi da piccoli passi che si rafforzano a vicenda – "risultati della ricerca che affrontano sequenzialmente parti del problema" – trasformando così l'IA da "strumento di raccomandazione del codice" in un vero e proprio partner ingegneristico.
“Perché è importante? Il software è ormai alla base della finanza, dei trasporti, della sanità e di ogni attività quotidiana. Ma gli sforzi umani per costruirlo e mantenerlo in modo sicuro stanno diventando un collo di bottiglia”, ha spiegato Gu. “Un'intelligenza artificiale in grado di gestire il lavoro più gravoso senza creare errori nascosti permetterebbe ai programmatori di concentrarsi su creatività, strategia ed etica. Ma per raggiungere questo obiettivo, dobbiamo capire che completare un pezzo di codice è solo la parte facile: la parte difficile sta in tutto il resto.”
(Adattato da MIT News)
Fonte: https://vietnamnet.vn/hanh-trinh-dai-cua-ai-trong-ky-thuat-phan-mem-tu-dong-hoa-2426456.html








Commento (0)