Vai al contenuto

L’intelligenza artificiale sta rendendo stupido il nostro codice?

Il codice generato dall’intelligenza artificiale ha trasformato per sempre lo sviluppo del software. Non è necessariamente un bene. Strumenti di codifica come GitHub Copilot possono aiutare gli sviluppatori a scrivere codice il 55% più velocemente, secondo GitHub. Vero? Forse no.

GitClear ha condotto un’analisi su 153 milioni di righe di codice per comprendere l’impatto dell’uso di strumenti basati su intelligenza artificiale, come GitHub Copilot, sulla qualità del codice e sulla produttività degli sviluppatori.

Principali Risultati Dell’Analisi:

  1. Diminuzione della Qualità del Codice: uno dei risultati principali è che il codice generato o suggerito da strumenti di intelligenza artificiale tende a essere meno ottimizzato e, in molti casi, presenta una qualità inferiore rispetto al codice scritto manualmente da sviluppatori esperti. Questo può includere problemi come la ridondanza, l’inefficienza o l’uso di pratiche non ottimali.
  2. Aumento della Quantità di Codice: gli strumenti di IA possono portare a un aumento della quantità di codice scritto, spesso senza una proporzionale crescita del valore o della funzionalità aggiunta. Questo potrebbe significare che gli sviluppatori accettano rapidamente i suggerimenti dell’IA, senza riflettere profondamente su di essi, portando a un “gonfiamento” del codice.
  3. Erosione delle Competenze degli Sviluppatori: un’altra preoccupazione emersa è che l’eccessivo affidamento su strumenti di IA potrebbe portare a una diminuzione delle competenze degli sviluppatori. Se gli sviluppatori si abituano a seguire i suggerimenti dell’IA senza comprendere a fondo il codice, potrebbero perdere la capacità di risolvere problemi complessi autonomamente.
  4. Effetti sulla Produttività: l’analisi suggerisce che, sebbene la produttività percepita possa aumentare grazie alla velocità con cui l’IA può generare codice, questa non sempre si traduce in un reale miglioramento della produttività a lungo termine. Il codice di bassa qualità potrebbe richiedere più tempo per essere mantenuto e corretto in futuro, vanificando i guadagni di produttività iniziali.

Bert Hubert, un noto sviluppatore e ricercatore, ha evidenziato i rischi associati al “codice gonfio” (o “code bloat”), che si verifica quando il codice diventa inutilmente prolisso o complicato, spesso a causa dell’uso eccessivo di strumenti automatici come quelli basati su intelligenza artificiale. Questo fenomeno non solo può causare problemi di manutenzione e inefficienza, ma rappresenta anche un rischio significativo per la sicurezza.

Più codice significa più punti potenziali di vulnerabilità. Ogni linea di codice aggiunta può introdurre bug o falle di sicurezza, aumentando la superficie d’attacco del software. Questo è particolarmente preoccupante quando il codice viene generato automaticamente e non viene esaminato attentamente. Un codice più voluminoso è più difficile da revisionare, tende a essere più difficile da comprendere e mantenere, il che aumenta la probabilità che vulnerabilità e difetti passino inosservati. Quando il codice è eccessivamente complesso, è più facile introdurre errori, sia durante lo sviluppo iniziale che durante le future modifiche. Questo può portare a vulnerabilità che non sono immediatamente evidenti.

Oltre ciò, il codice gonfio può influenzare negativamente le performance del software portando a rallentamenti o a un consumo eccessivo di risorse, che a loro volta possono essere sfruttati da attaccanti per condurre attacchi DoS (Denial of Service) o per trovare punti deboli nel sistema.

Strumenti come quelli basati sull’IA possono generare codice in modo rapido, ma non garantiscono che questo codice sia sicuro. Gli sviluppatori potrebbero cadere nella trappola di fidarsi troppo delle soluzioni automatiche senza effettuare le necessarie verifiche, portando a una falsa sensazione di sicurezza. Questo non significa che gli sviluppatori non dovrebbero usare assistenti AI. Piuttosto, è un’indicazione affinchè facciano attenzione a garantire che un eccessivo uso dell’AI non renda troppo “stupide” le nostre macchine e il codice che le esegue.

Simon Willison, il creatore di Datasette, ha osservato che l’adozione di tecnologie avanzate basate sull’intelligenza artificiale, porta con sé sia opportunità che sfide. In questo contesto, ha commentato il rapido sviluppo e l’adozione dei modelli di linguaggio su larga scala, come quelli utilizzati nei chatbot e negli assistenti virtuali, affermando che “negli ultimi 24-36 mesi la nostra specie ha scoperto che è possibile prendere un corpus gigante di testo, eseguirlo attraverso una pila di GPU e usarlo per creare un nuovo affascinante tipo di software.” Questo riferimento si riferisce ovviamente ai modelli di linguaggio di grandi dimensioni (Large Language Models, LLMs), come GPT (Generative Pre-trained Transformer), che sono stati al centro di una rivoluzione nell’IA.

Nella sua riflessione tuttavia, fa riferimento al rischio che queste tecnologie possano “deragliare” o “allucinare” quando vengono utilizzate per generare contenuti, specialmente quando si combinano tecniche come la Generazione Aumentata dal Recupero (RAG).

  • Il termine “allucinazione” si riferisce a una problematica comune nei modelli di linguaggio di grandi dimensioni, dove l’IA può generare informazioni che sembrano plausibili ma che in realtà sono false o inesatte. Queste allucinazioni possono essere particolarmente problematiche in applicazioni critiche, dove l’accuratezza è essenziale.
  • La Generazione Aumentata dal Recupero è una tecnica che combina la capacità di generazione del linguaggio naturale con un sistema di recupero di informazioni. In pratica, il modello può cercare dati rilevanti da fonti esterne (come documenti o database) per migliorare la precisione delle sue risposte. Tuttavia, anche con RAG, esiste il rischio che l’IA possa recuperare e combinare informazioni in modi inaspettati o erronei, portando a risposte che “deragliano” dalla verità o dal contesto appropriato.

L’uso di tecniche avanzate come RAG mira a migliorare l’affidabilità delle risposte generate, ma se il modello “deraglia” generando contenuti inaffidabili, può minare la fiducia degli utenti in questi sistemi. Le allucinazioni possono creare situazioni in cui le informazioni fornite sono fuorvianti o addirittura dannose. In contesti dove l’accuratezza è cruciale, come nella sanità, nel diritto, o nell’educazione, l’allucinazione di un modello può avere conseguenze gravi. Un modello che deraglia potrebbe generare diagnosi errate, consigli legali sbagliati o informazioni didattiche imprecise.

Willison sottolinea l’importanza di lavorare continuamente per migliorare questi sistemi, implementando meccanismi di verifica e supervisione umana per mitigare i rischi. Mentre possono essere affascinanti e aprire nuove strade nell’informatica, portano con sé anche rischi significativi che devono essere attentamente gestiti. L’approccio responsabile all’adozione di queste tecnologie richiede una considerazione equilibrata dei benefici e dei potenziali pericoli, nonché un impegno costante per migliorare la sicurezza, l’etica e la trasparenza nel loro utilizzo.