Le ultime tendenze in materia di AI, proposte da esperti
Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.
Siamo entrati in un'era di codice scritto in collaborazione con le macchine.
Quando ChatGPT di OpenAI ha fatto la sua prima apparizione nel panorama tecnologico, ha dato il via all'era dell'AI generativa, con la generazione di codice come uno dei primi casi d'uso. Sono poi seguiti gli assistenti alla codifica dell'intelligenza artificiale (AI), dal pionieristico GitHub Copilot a prodotti come Amazon Q Developer, Claude Code di Anthropic, Gemini Code Assist di Google, IBM Bob e Mistral Code.
Ma sotto questi strumenti di codifica si nasconde una potente tecnologia: i modelli linguistici di grandi dimensioni (LLM) per il codice. E stanno cambiando il modo in cui viene costruito il software.
Abbiamo parlato con alcuni esperti IBM per scoprire in che modo gli LLM stanno ridefinendo il ruolo dello sviluppatore software e quali sono le loro previsioni per il futuro di questi modelli. A condividere i loro insight sono:
Kaoutar El Maghraoui, Principal Research Scientist
Bridget McGinn, Research Software Engineer, AI for Code
Rameswar Panda, Distinguished Engineer
Fumiko Satoh, Senior Technical Staff Member e Senior Manager, AI for Code and Security
Ricevi insight selezionati sulle notizie più importanti e interessanti sull'AI. Iscriviti alla nostra newsletter settimanale Think. Leggi l'Informativa sulla privacy IBM.
I modelli LLM di coding sono modelli specializzati addestrati sul codice sorgente. Possono essere costruiti da zero o realizzati a partire da un modello pre-addestrato ottimizzato su dataset di codifica. Questi dati di addestramento devono essere di alta qualità e sufficientemente diversificati da garantire che gli LLM in codice siano in grado di gestire vari scenari di codifica in diversi linguaggi di programmazione.
Poiché gli LLM di coding derivano tipicamente da modelli di AI progettati per l'elaborazione del linguaggio naturale (NLP), spesso usano descrizioni in linguaggio naturale come prompt. Sono in grado di svolgere i seguenti compiti a livello di coding:
Assistenza nel debug
Completamento del codice (noto anche come autocompletamento)
Riepilogo del codice
Generazione di documentazione (come commenti inline per frammenti di codice)
Modernizzazione del codice legacy (ad esempio, conversione da COBOL a Java)
Suggerire ottimizzazioni del codice
Traduzione del codice esistente da un linguaggio di programmazione a un altro (ad esempio da Python a JavaScript)
Alcuni esempi popolari di LLM per il coding includono CodeGemma di Google, Code Llama di Meta e Codestral e Devstral di Mistral. Tra i modelli di coding open-source si annoverano DeepSeek Coder, IBM Granite Code e Qwen3 Coder.
Altri LLM non esclusivamente dedicati alla programmazione, ma comunque ottimizzati per il coding, includono Claude Sonnet e Opus di Anthropic e Gemini Pro di Google.
Questi LLM democratizzano l'accesso alla creazione di software, supportando i programmatori non professionisti, gli esperti di settore e altri sviluppatori non tradizionali che non possiedono una formazione o un'istruzione formale in informatica. Permettono una prototipazione rapida, cicli di iterazione più veloci e un onboarding più rapido per i nuovi ingegneri del software.
Oltre a rimodellare lo sviluppo software, questi LLM stanno ridefinendo il ruolo degli sviluppatori software.
Secondo El Maghraoui, gli ingegneri del software si stanno evolvendo da produttori di codice a curatori di codice. "Sebbene il codice rimanga essenziale, l'enfasi si sta spostando sull'ingegneria prompt. Come possiamo inquadrare le query giuste nel contesto di questi LLM? E anziché scrivere ogni singola riga di codice, gli sviluppatori stanno sempre più orchestrando codice generato dall'AI, cucendo insieme i pezzi."
Questa evoluzione, tuttavia, è solo la punta dell'iceberg. El Maghraoui ritiene che i ruoli di sviluppatore progrediranno in quella che lei chiama "ingegneria basata sull'intento". L'idea è di allontanarsi dalla sintassi e di concentrarsi sulla struttura, di abbandonare i dettagli più fini e di ingrandire il quadro generale, di passare dal cosa al perché, evidenziando gli obiettivi, i risultati e l'impatto.
Per McGinn, gli LLM possono essere trattati come librerie importate in un programma. "I problemi possono essere risolti più rapidamente, allo stesso modo in cui le librerie ci aiutano, come ingegneri, a utilizzare funzionalità già esistenti senza dover reinventare la ruota."
Questa visione si allinea con l'informatica generativa. In questo framework, un modello di codice viene integrato nei sistemi come componente e gestito come un'interfaccia programmabile. In quanto tale, può astrarre i compiti di basso livello e gli sviluppatori possono dirigere i loro sforzi verso la risoluzione di problemi di ordine superiore.
"Devono considerare il design thinking piuttosto che la scrittura di codice", afferma Satoh. "Abbiamo bisogno di ingegneri di livello superiore in grado di creare l'architettura di un sistema."
È un ruolo che sta diventando sempre più multidisciplinare, che incorpora non solo design e architettura ma anche altre dimensioni come etica e sicurezza. "È meno manuale e c'è più automazione, ma è più strategico", dice El Maghraoui. "Stai combinando l'ingegneria del software con il pensiero a livello di sistema, il pensiero di prodotto e il ragionamento etico. Ora non siamo solo alfabetizzati a livello di codice: stiamo diventando ingegneri alfabetizzati in AI e AI-first."
Ciò apre la strada a un miglioramento delle competenze in quei compiti di livello superiore, soprattutto per gli sviluppatori junior. "Gli obiettivi di molti benchmark devono essere la funzionalità di uno sviluppatore junior. Quindi, se questa è una metrica a cui puntiamo, l'idea è di non averne bisogno", afferma McGinn. "Abbiamo bisogno di persone con un livello di competenza superiore a quello di uno sviluppatore junior, oppure, se necessario, non è più indispensabile che abbiano ricoperto il ruolo di sviluppatore junior per comprendere il lavoro di uno sviluppatore senior."
Panda osserva che, come qualsiasi modello linguistico di grandi dimensioni, gli LLM per il codice hanno i loro svantaggi. Suggerisce cautela quando si tratta di copyright, bias e sicurezza, soprattutto quando si lavora su applicazioni cruciali in settori come la finanza e la sanità.
"Non puoi fare affidamento ciecamente su di loro", afferma Panda. "Bisogna sempre prendere il codice generato con le pinze."
Questo scetticismo deve essere abbinato anche a meccanismi di ottimizzazione delle prestazioni e misure di validazione per verificare la solidità e l'accuratezza. "Vuoi comunque assicurarti di scrivere casi di test e di controllare il codice con la stessa attenzione che faresti se fosse stato scritto manualmente", afferma McGinnis.
El Maghraoui enfatizza il supporto piuttosto che la dipendenza dagli LLM di coding. "Se li utilizziamo come supporto didattico, come programmatori in coppia o come generatori di idee, possono potenziare il nostro apprendimento, la creatività e la produttività. Ma se li usiamo come una stampella, senza introspezione, senza convalida, possono erodere il nostro giudizio e la nostra responsabilità."
La validazione è possibile solo se gli sviluppatori comprendono i principi informatici sottostanti. Dopotutto, se non comprendi i fondamenti della programmazione, come puoi confermare la validità del codice generato da questi modelli?
"È una codifica veloce, ma non è sempre robusta, corretta o sicura", afferma El Maghraoui. Aggiunge che usare il codice generato così com'è può essere pericoloso. "Potrebbe causare fragilità nelle basi di codice. Se ti affidi eccessivamente a questi modelli o ti fidi eccessivamente dei loro output, questo può propagare bug sottili o inefficienze, soprattutto nei sistemi critici. Ecco perché è importante capire cosa sta succedendo.”
È qui che entra in gioco una profonda competenza, resa possibile dai concetti cardine dello sviluppo software.
"Nelle scuole insegniamo ancora a fare le divisioni lunghe a mano, ma a cosa serve se poi useranno una calcolatrice?" È simile al codice. Quali sono gli elementi fondamentali che riteniamo importanti per capire cosa sta succedendo?" sostiene McGinn.
Alcuni di questi fondamenti tecnici possono includere compilatori, architettura dei computer, database, gestione della memoria e sistemi operativi. "Gli sviluppatori potrebbero iniziare a saltare l'apprendimento profondo di questi concetti perché gli LLM per il codice li stanno astraendo", afferma El Maghraoui. Tuttavia, è essenziale comprendere il funzionamento interno dello sviluppo software a causa delle sue implicazioni sulla funzionalità e sulle prestazioni del codice sorgente, aggiunge.
E mentre i LLM per il codice possono ridurre il sovraccarico cognitivo attraverso l'automazione di compiti ripetitivi, hanno anche il potenziale di aumentare l'"atrofia cognitiva", come la chiama El Maghraoui. Lo paragona al crescente utilizzo del GPS, che sta erodendo il nostro naturale senso dell'orientamento. "Se gli sviluppatori si affidano molto ai suggerimenti di codice, saranno meno fluidi nel debug. I codici LLM possono indebolire la nostra capacità di pensare in modo algoritmico se non li bilanciamo con la pratica o le conoscenze di base."
Man mano che gli LLM per il codice avanzano, sveleranno nuove caratteristiche e persino nuovi casi d'uso, come dimostrato dalla tendenza del vibe coding. Cosa riserva dunque il futuro a questi modelli? I nostri esperti presentano le loro previsioni.
Nel mondo si parla di agenti AI che trasformeranno il futuro del lavoro in quasi tutti i settori, compreso lo sviluppo di software.
"Vedo un passaggio verso questi sistemi di codifica multiagente con codebase auto-riparanti", afferma El Maghraoui. Questi sistemi agentic AI stanno già prendendo forma. Ad esempio, gli agenti di ingegneria del software (SWE ) di IBM possono risolvere autonomamente i problemi di GitHub prima "localizzando" dove si trovano i bug in una base di codice e poi modificando quelle righe di codice per risolverli.
McGinn auspica una strategia più efficiente dal punto di vista energetico, "in cui non tutto venga svolto dal modello più grande, ma si possa risparmiare energia con un approccio basato su agenti più piccoli", che prevede l'impiego di diversi agenti per svolgere compiti di programmazione specifici.
Analogamente, Panda è entusiasta di rendere disponibili modelli di linguaggio di piccole dimensioni (SLM) come Granite Code su dispositivi con risorse limitate, quali laptop e dispositivi edge . "Allo stesso tempo, ci sono alcune cose che gli SLM sono in grado di risolvere, ma con difficoltà, ed è in questi casi che entrano in gioco i modelli Granite più grandi. Si tratta di un equilibrio tra modelli multipli, non di un singolo modello in grado di risolvere tutto."
L'integrazione della memoria contestuale e del ragionamento nei codici LLM è un altro miglioramento a cui prestare attenzione, osserva El Maghraoui. "Possono ricordare l'intera storia del progetto e come si è evoluto. Ciò consente di formulare suggerimenti migliori per il futuro."
La componente di ragionamento aiuta nelle "attività a lungo termine", come la definisce Panda. "I Code LLM interagiranno con i repository di codice per intraprendere molte azioni in sequenza, non solo un'azione unica. Solo se il tuo codice LLM è forte nel ragionamento può svolgere queste attività."
Gli ambienti di sviluppo integrati (IDE) odierni incorporano modelli di codice e assistenti di codifica come servizi o plug-in. Ma gli IDE di domani potrebbero spingersi verso ambienti di sviluppo AI-nativi. "Vedremo questi IDE essere riprogettati con LLM per il codice da zero, non solo come plug-in ma come parte del loro core", afferma El Maghraoui.
Ritiene inoltre che la crescente diffusione di implementazioni di LLM per il codice in infrastrutture private rappresenti una tendenza in aumento. Ad esempio, l'assistente AI di Mistral Code, alimentato da Codestral e Devstral, supporta l'implementazione in loco.
"Le implementazioni private per questi LLM per il codice sono accelerate da problemi di prestazioni, costi e privacy", afferma El Maghraoui. "Le aziende vogliono evitare di inviare codice proprietario ad API di terze parti. Le implementazioni private garantiscono che il loro codice sorgente, le librerie interne e le tracce dello stack non escano mai dalla rete interna aziendale. Ci sono anche questioni di conformità alle normative, soprattutto nel settore finanziario o sanitario, e il costo dell'esecuzione di casi d'uso ad alto rendimento in-house può essere più conveniente su larga scala."
La scrittura di codice e la creazione di test sono parti distinte del processo di sviluppo del software. Satoh prevede che gli LLM per il codice aiutino a collegare perfettamente queste due fasi, aiutando sia la generazione di codice che la generazione di test.
"Dovremmo collegarli allo stesso modello per creare un prodotto perfetto", afferma. Satoh si spinge ancora oltre, prevedendo modelli di codice "che supportino l'intero ciclo di vita dello sviluppo del software", comprese le fasi precedenti come la specifica dei requisiti e la progettazione.
Ma a prescindere da dove ci porterà questa crescente era di codice scritto in collaborazione con le macchine, El Maghraoui rimane cauta ma ottimista. "Sono due facce della stessa medaglia. Potrebbe essere qualcosa che ci danneggia come sviluppatori o qualcosa che ci aiuta. Quindi è davvero importante capire come utilizzare correttamente questi LLM per il codice in modo da non perdere l'edge ma diventare più creativi." E quelli che probabilmente avranno successo secondo lei, saranno "gli sviluppatori e le aziende che abbracciano questi workflow e trattano l'AI non solo come uno strumento, ma come un partner".
Accelera la distribuzione del software con Bob, il tuo partner AI per uno sviluppo sicuro e consapevole degli intenti.
Ottimizza le attività di sviluppo del software con strumenti affidabili basati su AI che riducono al minimo il tempo dedicato alla scrittura, al debug, al refactoring o al completamento del codice, lasciando più spazio all'innovazione.
Reinventa i workflow e le operazioni critiche aggiungendo l'AI per massimizzare le esperienze, il processo decisionale in tempo reale e il valore di business.