Una storia che è e che sarà sempre più comune: esaminando i lavori presentati dai suoi studenti, un docente di informatica si accorge di qualcosa mai avvenuto in passato.
I suoi allievi hanno cominciato a presentare progetti contraddistinti da un’eccellente qualità del codice: i programmi sviluppati evidenziano l’uso di una sintassi di programmazione moderna, intelligenti approcci funzionali, costrutti fortemente nidificati e modelli interessanti per la risoluzione dei problemi.
“Ho elogiato il codice che stavo vedendo in varie occasioni“, spiega il professor David Humphrey nel suo articolo dal titolo CheatGPT (dove cheat significa “imbroglio”, “truffa”). “Ma poi ho iniziato a notare quanto spesso scrivevo questi stessi commenti positivi. Sebbene ai professori piaccia pensare che con il tempo stiano diventando insegnanti migliori, è difficile immaginare che io sia migliorato così tanto dall’ultimo trimestre o dal trimestre precedente, o da una qualsiasi delle decine di volte in cui ho insegnato per questo stesso corso“.
Il docente ha poi iniziato a fare supposizioni accertando che il codice era stato partorito dal modello generativo di ChatGPT. Alcuni “elaborati” degli utenti mostravano infatti screenshot palesemente tratti dal chatbot ChatGPT.
Non solo gli studenti ma anche sviluppatori professionisti si stanno servendo dei cosiddetti Large Language Models (LLM) per generare codice di programmazione funzionante e immediatamente riutilizzabile nei propri progetti.
Non c’è solo ChatGPT che permette di generare codice in qualunque linguaggio, sia per realizzare programmi compilati o interpretati.
È la scoperta dell’acqua calda: basti pensare che Copilot, portato al debutto da OpenAI (gli stessi autori di ChatGPT) e GitHub (di proprietà Microsoft), viene utilizzato per generare il 46% del codice usato dagli sviluppatori con un picco del 61% tra i programmatori Java.
I risultati della ricerca elaborata da GitHub e pubblicati a febbraio 2023 evidenziano che il 90% degli sviluppatori che si servono di Copilot riferisce di completare le attività più velocemente; il 73% si dichiara entusiasta dello strumento basato sull’intelligenza artificiale riuscendo a concentrare le energie mentali e non perdere “il filo” durante lo sviluppo di una funzione o di una procedura.
Usare ChatGPT, Copilot e altri strumenti basati su modelli generativi può rappresentare un problema?
Che ChatGPT, Copilot e “soci” possano aiutare a risparmiare tempo e risorse preziose è acclarato. Ma come comportarsi con gli studenti, che sono chiamati ad apprendere la programmazione e a dimostrare di essere nelle condizioni di comprendere come risolvere un problema concreto?
Secondo Humphrey gli studenti che imparano a programmare non traggono beneficio da un’intelligenza artificiale che aiuta a “rimuovere la fatica” dello sviluppo. Ad un certo punto è comunque necessario imparare a programmare: e non ci si può arrivare usando scorciatoie.
Il professore racconta che lui stesso era alla ricerca di maggiori informazioni sul funzionamento di un’API: dopo una ricerca con Google ha ottenuto una risposta insoddisfacente. Posta la stessa domanda a ChatGPT, il modello generativo di OpenAI ha prodotto circa 25 righe di codice mostrando che era possibile ricorrere a un modo alternativo per usare l’API in questione.
Unico problema: metà del codice generato da ChatGPT era inventato di sana pianta. Una della chiamate API citata da ChatGPT addirittura non esiste.
La stessa cosa è successa anche a noi: cercavamo informazioni su un’API Google e, dopo diversi tentativi, ChatGPT ci ha descritto il funzionamento di una chiamata a una funzione che è totalmente inesistente e non è supportata, almeno pubblicamente.
Quando abbiamo fatto notare la cosa, il chatbot si è scusato ipotizzando che la funzione in questione potrebbe provenire da documentazione non disponibile al pubblico e ci invitava a evitarne l’uso per non incorrere in problematiche legali. Accidenti! Viene da chiedersi quali sono le fonti delle enormi moli di dati utilizzate per addestrare il modello GPT (Generative Pre-trained Transformer) alla base di ChatGPT…
“Il codice restituito dagli LLM richiede un incredibile livello di discernimento e una scrupolosa analisi“, osserva ancora il professor Humphrey. “Il fatto che a volte puoi copiare/incollare cose direttamente da ChatGPT può indurre le persone a pensare che sia possibile farlo sempre. Non si può, non è possibile“.
Nella didattica, come in altri segmenti, in tanti invitano a non avere paura ad abbracciare l’utilizzo dell’intelligenza artificiale. Invece di proibire l’uso di strumenti come ChatGPT, conclude Humphrey, bisognerebbe iniziare a concentrarsi sugli usi etici e pragmatici. Come cambia la programmazione con l’arrivo di ChatGPT, Copilot e simili? Che aspetto ha il codice prodotto da questi strumenti? Si è in grado di comprenderlo, analizzarlo, correggerlo e integrarlo con spirito critico?
La programmazione informatica è morta secondo la tesi di Matt Welsh, ex docente presso l’Università di Harvard, in passato nelle fila di Google ed Apple. Per questo Welsh consiglia di acquisire consapevolezza, estendere le proprie competenze e agire di conseguenza per trarre il meglio dalla rivoluzione in atto, senza ricusarla ma anzi traendo massimo vantaggio dai suoi benefici. Anche perché chiunque, ormai, può creare un modello generativo con 60 righe di codice ricorrendo eventualmente a software open source come FlexGen e una singola GPU.