Are Large Language Models Robust in Understanding Code Against Semantics-Preserving Mutations?

Questo lavoro valuta la robustezza dei modelli linguistici su larga scala all'avanguardia nella comprensione del codice applicando mutazioni che preservano la semantica, rivelando che, nonostante l'alta accuratezza predittiva, tali modelli spesso si basano su ragionamenti difettosi e mostrano un'instabilità significativa di fronte a variazioni sintattiche.

Autori originali: Pedro Orvalho, Marta Kwiatkowska

Pubblicato 2026-05-08
📖 5 min di lettura🧠 Approfondimento

Autori originali: Pedro Orvalho, Marta Kwiatkowska

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Each language version is independently generated for its own context, not a direct translation.

Immagina di avere un assistente robotico molto avanzato in grado di leggere il codice informatico e dirti cosa farà quel codice. Gli chiedi: "Se eseguo questo programma con questi numeri, cosa succederà?" Il robot ti dà una risposta, e di solito è corretta. Ma ecco la grande domanda: il robot comprende davvero il codice, o è semplicemente molto bravo a indovinare in base a come appare il codice?

Questo articolo dell'Università di Oxford pone esattamente questa domanda. I ricercatori volevano sapere se questi modelli di intelligenza artificiale (chiamati Modelli Linguistici di Grande Dimensione, o LLM) comprendono davvero la logica della programmazione, o se stanno semplicemente memorizzando schemi come un pappagallo che ripete parole senza conoscerne il significato.

Il test del "Trucco Magico"

Per scoprirlo, i ricercatori hanno giocato con l'IA una partita di "trova le differenze". Hanno preso un pezzo di codice e apportato piccole modifiche che non cambiavano ciò che il codice faceva effettivamente, ma ne alteravano l'aspetto.

Pensala così: immagina di avere una ricetta per una torta.

  • Originale: "Mescola farina, zucchero e uova."
  • La Modifica: "Mescola zucchero, farina e uova." (L'ordine è diverso, ma la torta è la stessa.)
  • Un'altra Modifica: "Unisci prima gli ingredienti secchi, poi aggiungi quelli liquidi." (I passaggi sono riorganizzati, ma il risultato è identico.)

Se uno chef comprende davvero la cucina, dovrebbe sapere che la torta viene fuori allo stesso modo, indipendentemente da come scrivi la ricetta. Ma se sta solo memorizzando le parole specifiche "Mescola farina, zucchero e uova", cambiare l'ordine potrebbe confonderlo.

I ricercatori hanno applicato questo metodo con cinque specifici "trucchetti magici" sul codice:

  1. Rinominare le Variabili: Cambiare my_list in x7z9. (Come cambiare "farina" in "polvere" nella ricetta).
  2. Ribaltare le Comparazioni: Cambiare if x > 5 in if 5 < x. (Dire la stessa cosa al contrario).
  3. Scambiare la Logica: Sostituire "Se questo, allora fai A" con "Se non questo, allora fai B".
  4. Conversione dei Cicli: Cambiare un ciclo "for" (contare i passaggi) in un ciclo "while" (continuare finché non è soddisfatta una condizione).
  5. Srotolamento dei Cicli: Invece di dire "ripeti questo 10 volte", il codice scrive esplicitamente l'azione 10 volte.

Cosa è successo?

I risultati sono stati sorprendenti e un po' preoccupanti per chiunque si affidi a questi strumenti di IA.

1. Il problema della "Risposta Giusta, Ragione Sbagliata"
Anche quando l'IA otteneva la risposta corretta, spesso ci arrivava per le ragioni sbagliate.

  • L'Analogia: Immagina uno studente che sostiene un test di matematica. Ottiene la risposta "5" corretta, ma il suo lavoro mostra che ha sommato 2 + 2 e poi ha indovinato l'ultima cifra. Ha ottenuto il punto, ma non conosce davvero la matematica.
  • La Scoperta: I ricercatori hanno scoperto che tra il 10% e il 50% delle volte, l'IA produceva l'output corretto basandosi su un "ragionamento difettoso". Stava essenzialmente indovinando o seguendo uno schema che casualmente funzionava, invece di tracciare logicamente il codice.

2. I Super-Modelli "Fragili"
I modelli di IA più potenti e costosi (come GPT-5.2 e Gemini-3) erano i migliori nel dare la risposta corretta sul codice originale. Erano come gli studenti migliori della classe.

  • Tuttavia: Quando i ricercatori applicavano i "trucchetti magici" (le mutazioni del codice), questi modelli top crollavano. Le loro prestazioni calavano fino al 70%.
  • L'Analogia: È come uno studente che può superare un test a pieni voti se le domande sono scritte in un font e un ordine specifici. Ma se cambi il font o mescoli le frasi, improvvisamente fallisce, anche se le domande sono esattamente le stesse. Questo dimostra che non stanno davvero comprendendo il significato; stanno solo reagendo all'aspetto.

3. La Sensibilità ai "Nomi delle Variabili"
Uno dei risultati più interessanti è stato quanto l'IA tenesse ai nomi delle variabili.

  • L'Analogia: Se dici a un umano: "Prendi la palla rossa e mettila nella scatola", lui capisce. Se dici: "Prendi lo Zog e mettilo nella scatola", potrebbe esitare, ma lo capirà.
  • La Scoperta: I modelli di IA si sono confusi significativamente solo rinominando le variabili (ad esempio, cambiando total in eAJMfVcq). Anche se il codice faceva esattamente la stessa cosa, la fiducia e l'accuratezza dell'IA sono diminuite. Questo suggerisce che sono molto sensibili alle specifiche "parole" usate nel codice, piuttosto che alla logica sottostante.

La Conclusione

L'articolo conclude che, sebbene questi modelli di IA siano incredibilmente bravi nel riconoscimento di schemi (imitando ciò che il codice appare essere), non sono ancora abbastanza robusti per comprendere davvero la semantica (ciò che il codice significa).

  • Sono fragili: Piccoli, innocui cambiamenti al codice possono rompere la loro comprensione.
  • Indovinano: Spesso arrivano alla risposta corretta attraverso una logica difettosa.
  • Non sono pronti per la scena principale (ancora): Affidarsi a loro per compiti software critici senza verificare il loro ragionamento è rischioso, perché potrebbero fallire silenziosamente quando il codice appare leggermente diverso da quello che hanno visto prima.

I ricercatori suggeriscono che per rendere questi strumenti davvero affidabili, dobbiamo combinarli con controlli logici formali più rigorosi—come una rete di sicurezza che assicuri che l'IA non stia solo indovinando, ma che comprenda effettivamente le regole del gioco.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →