Ricerca nel sito web

Come usare ChatGPT per scrivere codice e il mio trucco preferito per eseguire il debug di ciò che genera


L'intelligenza artificiale può scrivere codice utile, ma può anche produrre spazzatura inutilizzabile. Ecco i miei consigli su come sfruttare al meglio l'intelligenza artificiale dalle mie numerose avventure nella programmazione.

Una delle scoperte più intriganti su ChatGPT è che può scrivere codice piuttosto buono. L'ho testato per la prima volta nel 2023 quando gli ho chiesto di scrivere un plugin per WordPress che mia moglie potesse utilizzare sul suo sito web. ChatGPT ha fatto un ottimo lavoro, ma è stato un progetto semplice. 

Quindi, come puoi usare ChatGPT per scrivere codice come parte della tua pratica quotidiana di programmazione? Ecco un breve riassunto:

  1. ChatGPT può produrre codice sia utile che inutilizzabile. Per ottenere i migliori risultati, fornisci suggerimenti chiari e dettagliati.
  2. ChatGPT eccelle nell'assistenza con specifiche attività o routine di codifica, piuttosto che creare applicazioni complete da zero.
  3. Usa ChatGPT per trovare e scegliere le librerie di codifica giuste per scopi specifici e partecipa a una discussione interattiva per restringere le tue opzioni.
  4. Fai attenzione a chi possiede il codice generato dall'intelligenza artificiale e verifica sempre l'affidabilità del codice. Non fidarti ciecamente dell'output generato.
  5. Tratta le interazioni con ChatGPT come una conversazione. Perfeziona le tue domande in base alle risposte dell'IA per avvicinarti all'output desiderato.

Ora, esploriamo ChatGPT in modo molto più approfondito.

Quali tipi di codifica può fare bene ChatGPT?

Ci sono due fatti importanti su ChatGPT e la programmazione. Innanzitutto, l'intelligenza artificiale può scrivere codice utile. 

Il secondo è che l'IA può perdersi completamente, cadere in una tana di coniglio, inseguire la coda e produrre spazzatura inutilizzabile.

Ho scoperto questo fatto nel modo più duro. Dopo aver finito il plugin WordPress per mia moglie, ho deciso di vedere fino a che punto poteva spingersi ChatGPT. 

Ho scritto un prompt molto accurato per un'applicazione Mac, che includeva descrizioni dettagliate degli elementi dell'interfaccia utente, delle interazioni, di ciò che sarebbe stato fornito nelle impostazioni, di come avrebbero funzionato e altro ancora. Quindi, ho inviato il prompt a ChatGPT.

ChatGPT ha risposto con una marea di testo e codice. Quindi, si è fermato a metà codice. Quando ho chiesto all'IA di continuare, ha vomitato ancora più codice e testo. Ho chiesto continua dopo continuare, e ha scaricato sempre più codice. Tuttavia, nessuna parte dell'output era utilizzabile. L'intelligenza artificiale non ha identificato dove dovrebbe andare il codice, come costruire il progetto e, quando ho guardato attentamente il codice prodotto, ha tralasciato le operazioni principali che avevo richiesto, lasciando in semplici descrizioni testuali che affermavano "la logica del programma va qui".

Dopo ripetuti test, è diventato chiaro che se chiedi a ChatGPT di fornire un'applicazione completa, lo strumento fallirà. Un corollario a questa osservazione è che se non sai nulla di programmazione e vuoi che ChatGPT costruisca qualcosa, fallirà.

Dove ChatGPT ha successo, e lo fa molto bene, è nell'aiutare qualcuno che sa già programmare a creare routine specifiche e portare a termine le attività. Non chiedere un'app che viene eseguita sulla barra dei menu. Ma se chiedi a ChatGPT una routine per inserire un menu nella barra dei menu e incollarlo nel tuo progetto, lo strumento funzionerà abbastanza bene.

Inoltre, ricorda che, sebbene ChatGPT sembri avere un'enorme quantità di conoscenze specifiche del dominio (e spesso le ha), manca di saggezza. Pertanto, lo strumento potrebbe essere in grado di scrivere codice, ma non sarà in grado di scrivere codice contenente le sfumature per problemi specifici o complessi che richiedono una profonda esperienza.

Usa ChatGPT per dimostrare tecniche, scrivere piccoli algoritmi e produrre subroutine. Puoi anche chiedere a ChatGPT di aiutarti a suddividere un progetto più grande in blocchi, quindi puoi chiedergli di aiutarti a codificare quei blocchi.

Quindi, con questo in mente, diamo un'occhiata ad alcuni passaggi specifici su come ChatGPT può aiutarti a scrivere codice.

Come usare ChatGPT per scrivere codice

1. Restringi e affina la tua richiesta

Questo primo passo è decidere cosa chiederai a ChatGPT, ma non chiedergli ancora nulla. Decidi cosa vuoi che la tua funzione o routine esegua o cosa vuoi imparare a incorporare nel tuo codice. Decidi i parametri che passerai al tuo codice e cosa vuoi ottenere. E poi guarda come lo descriverai.

Immagina di pagare un programmatore umano per svolgere questo compito. Stai fornendo a quella persona informazioni sufficienti per poter svolgere il tuo incarico? O sei troppo vago e la persona che stai pagando è più propensa a fare domande o a consegnare qualcosa di completamente estraneo a ciò che desideri?

Ecco un esempio. Diciamo che voglio essere in grado di riassumere qualsiasi pagina web. Voglio dare in pasto all'IA questo articolo e ottenere un riassunto ben ponderato e appropriato. Come input, specificherò l'URL di una pagina web. Come output, è un blocco di testo con un riassunto.

2. Usa ChatGPT per esplorare librerie e risorse

Continuando con l'esempio precedente, un modo vecchio stile di estrarre i dati delle pagine web era quello di trovare il testo tra i tag di paragrafo HTML.

Tuttavia, con l'ascesa degli strumenti di intelligenza artificiale, è possibile utilizzare una libreria di intelligenza artificiale per eseguire un'estrazione e un riepilogo intelligenti. Uno dei punti in cui ChatGPT eccelle (ed è anche un'area che puoi facilmente verificare per evitare il suo modello di comportamento autorevole ma sbagliato) è trovare librerie e risorse. 

OpenAI (il produttore di ChatGPT) vende l'accesso API ai suoi LLM per fare esattamente ciò che vogliamo. Ma nel caso di questo esempio, supponiamo di non voler pagare le commissioni di transazione.

Quindi, diamo un'occhiata all'interazione con ChatGPT per capire come utilizzare uno strumento del genere, gratuitamente, con un progetto che gira in PHP.

Ho iniziato con un prompt per ottenere informazioni su quali librerie avrebbero fornito la funzionalità desiderata. Una libreria (per coloro che leggono e non sono programmatori) è un corpo di codice a cui un programmatore può accedere e che fa gran parte del lavoro pesante per uno scopo specifico. Una parte importante della programmazione moderna consiste nel trovare e scegliere le librerie giuste, quindi questo è un buon punto di partenza.

In questo caso, sto guardando blocchi di codice scritti da altre persone che riassumeranno il testo. Ecco il mio primo suggerimento:

Descrivi dieci diverse librerie di intelligenza artificiale open source (e i linguaggi con cui lavorano) che posso utilizzare per generare un riepilogo dei principali contenuti principali di qualsiasi pagina web, ignorando eventuali annunci o materiali incorporati.

Questo prompt mi ha dato esattamente quello che volevo, inclusa una menzione delle offerte di OpenAI. Penso che OpenAI andrebbe benissimo qui, ma per questo ipotetico progetto, non voglio preventivare le tariffe API. Quindi, restringo la domanda:

Qualcuno di questi è gratuito?

ChatGPT ha coperto le sue scommesse con la sua risposta: "Sì, tutte e dieci queste librerie di intelligenza artificiale sono open source e gratuite. Tuttavia, alcuni di essi potrebbero avere limiti di utilizzo o richiedere un pagamento per l'accesso a funzionalità o risorse aggiuntive". Quindi, sulla base di quella risposta, ho chiarito la mia domanda:

Quali di queste librerie non hanno limiti di utilizzo e non richiedono alcun pagamento o licenza aggiuntiva?

Notate come questa sia una conversazione. Non devo rifare la domanda originale. Sto solo approfondendo come farei se avessi un esperto accanto a me. Questa volta, ChatGPT mi ha dato otto scelte di librerie, ma nessuna menzionava il linguaggio PHP che avevo intenzione di utilizzare per programmare. Quindi, ecco il prossimo prompt:

Di queste 8 librerie, posso usarne qualcuna con PHP?

Ha restituito tre librerie, ma non ero sicuro di cosa facesse ciascuna. Quindi, un'altra domanda:

Qual è la differenza tra Sumy, Gensim e NLTK?

Non ero ancora sicuro, quindi ho chiarito il mio piano di utilizzo e poi ho chiesto:

Se voglio creare riassunti di articoli di notizie di pagine web, quale libreria funzionerebbe meglio?

La risposta è stata chiara e promettente: "Sumy è stato progettato specificamente per il riassunto del testo, che è il compito di creare un riassunto che catturi le informazioni più importanti da un pezzo di testo". Quindi, era il momento di vedere cosa comportava l'utilizzo di Sumy con PHP. Ho posto la mia ultima domanda per questa parte del progetto:

Puoi spiegare come usare Sumy da PHP?

Sentiti libero di giocare sul tuo computer e incollare queste istruzioni in ChatGPT. Si noti che, nel primo passaggio, ho deciso su quale modulo del programma ottenere aiuto. Poi, in questa fase, ho avuto una conversazione con ChatGPT per decidere quale libreria utilizzare e come integrarla nel mio progetto.

Questo approccio potrebbe non sembrare una programmazione, ma vi assicuro che lo è. La programmazione non consiste solo nell'inserire righe di codice in una pagina. La programmazione consiste nel capire come integrare tutte le varie risorse e sistemi e come comunicare con tutti i componenti della soluzione. Qui, ChatGPT mi ha aiutato a fare quell'analisi di integrazione.

A proposito, ero curioso di sapere se l'intelligenza artificiale Gemini di Google potesse aiutare in modo simile. Gemini ha fornito alcune informazioni in più sull'aspetto della pianificazione della programmazione rispetto alle risposte di ChatGPT. 

Quindi, non esitare a utilizzare più strumenti per triangolare le tue risposte. Ecco quella storia: Gemini vs. ChatGPT: Gemini può aiutarti a programmare? Da quando ho scritto quell'articolo, Google ha aggiunto alcune funzionalità di codifica a Gemini, ma non sono poi così eccezionali. Puoi leggere di questa funzionalità qui: Ho testato le nuove competenze di programmazione di Google Gemini. Non è andata bene. E ancora più recentemente, ho approfondito Gemini Advanced. L'IA non sta ancora superando molti test.

La codifica è la prossima. 

3. Chiedi a ChatGPT di scrivere un codice di esempio

OK, fermiamoci qui. Questo articolo si intitola "Come utilizzare ChatGPT per scrivere codice". E lo farà. Ma quello che stiamo facendo in realtà è chiedere a ChatGPT di scrivere un codice di esempio.

Facciamo chiarezza. A meno che tu non stia scrivendo una piccola funzione (come l'ordinatore/randomizzatore di riga che ChatGPT ha scritto per mia moglie), ChatGPT non può scrivere il tuo codice finale. Innanzitutto, dovrai mantenerlo. ChatGPT è terribile nel modificare il codice già scritto. Terribile, nel senso che non lo fa. Quindi, per ottenere un nuovo codice, devi chiedere a ChatGPT di generare qualcosa di nuovo. Come ho scoperto in precedenza, anche se il tuo prompt è praticamente identico, ChatGPT potrebbe cambiare inaspettatamente ciò che ti offre.

Quindi, in conclusione: ChatGPT non può mantenere il tuo codice, o addirittura modificarlo.

Questa limitazione significa che devi fare il lavoro di gambe da solo. Come sappiamo, la prima bozza di un pezzo di codice è raramente il codice finale. Quindi, anche se ti aspetti che ChatGPT generi il codice finale, sarebbe un punto di partenza e uno in cui devi portarlo a termine, integrarlo nel tuo progetto più grande, testarlo, perfezionarlo, eseguirne il debug e così via.

Ma questo problema non significa che il codice di esempio sia inutile, tutt'altro. Diamo un'occhiata a un prompt che ho scritto in base al progetto che ho descritto in precedenza. Ecco la prima parte:

Wite una funzione PHP chiamata summarize_article.

Come input, summarize_article verrà passato un URL a un articolo su un sito relativo alle notizie come ZDNET.com o Reuters.com.

Sto dicendo a ChatGPT il linguaggio di programmazione che dovrebbe usare. Sto anche dicendo all'intelligenza artificiale l'input e fornendo due siti come esempi per aiutare ChatGPT a capire lo stile dell'articolo. Onestamente, non sono sicuro che ChatGPT non abbia ignorato quella guida. Successivamente, gli dirò come fare la maggior parte del lavoro:

All'interno summarize_article, recupera il contenuto della pagina web all'URL fornito. Utilizzando la libreria Sumy all'interno di PHP e qualsiasi altra libreria necessaria, estrai il corpo principale dell'articolo, ignorando eventuali annunci o materiali incorporati, e riassumilo in circa 50 parole. Assicurati che il riassunto sia composto da frasi complete. Se necessario, puoi superare le 50 parole per finire l'ultima frase.

Questo approccio è molto simile a quello che istruirei a un dipendente. Vorrei che quella persona sapesse che non erano limitati solo a Sumy. Se avevano bisogno di un altro strumento, volevo che lo usassero. 

Ho anche specificato un numero approssimativo di parole per creare dei limiti per ciò che volevo come riassunto. Una versione successiva della routine potrebbe accettare quel numero come parametro. Ho poi concluso dicendo quello che volevo come risultato:

Una volta completata l'elaborazione, il codice summarize_article in modo da restituire il riepilogo in testo normale.

Il codice risultante è piuttosto semplice. ChatGPT ha chiamato un'altra libreria (Goose) per recuperare il contenuto dell'articolo. Ha poi passato quel riassunto a Sumy con un limite di 50 parole e ha restituito il risultato. Ma una volta scritte le basi, è una mera questione di programmazione tornare indietro e aggiungere modifiche, personalizzare ciò che viene passato alle due librerie e fornire i risultati:

Un punto interessante da notare. Quando ho provato per la prima volta questo test all'inizio del 2023, ChatGPT ha creato una chiamata di esempio alla routine che ha scritto, utilizzando un URL successivo al 2021. A quel tempo, nel marzo 2023, il set di dati di ChatGPT è arrivato solo al 2021. Ora, la knowledge base di ChatGPT si estende fino alla fine di giugno 2024 e può effettuare ricerche sul web. Ma il mio punto è che ChatGPT ha creato un link di esempio di cui non poteva essere a conoscenza:

https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites-2022-03-18/

Ho controllato quell'URL con il sito di Reuters e la Wayback Machine, e non esiste. Non dare mai per scontato che ChatGPT sia accurato. Ricontrolla sempre tutto ciò che ti offre.

4. Eseguire il debug e perfezionare il codice generato

Ti ho mostrato alcuni modi in cui ChatGPT commette errori o ha allucinazioni. Tutti i programmatori commettono errori, anche quelli dell'intelligenza artificiale.

Tuttavia, è possibile eseguire diverse operazioni per perfezionare il codice, eseguire il debug dei problemi e anticipare gli errori che potrebbero verificarsi. Il mio nuovo trucco preferito abilitato all'intelligenza artificiale è quello di inviare il codice a un'altra sessione di ChatGPT (o a un chatbot completamente diverso) e chiedere: "Cosa c'è di sbagliato in questo codice?"

Inevitabilmente, succede qualcosa. L'intelligenza artificiale a volte identifica casi limite o controlli degli errori che dovrebbero essere aggiunti al codice, o situazioni che potrebbero interrompersi se si verificasse una confluenza di eventi improbabili. Ho quindi codificato queste condizioni di errore, rendendo il codice più robusto.

Domande frequenti

ChatGPT sostituisce i programmatori? 

Non ora - o, almeno, non ancora. ChatGPT si programma al livello di uno studente di programmazione del primo anno di talento, ma è pigro (come quello studente del primo anno). Lo strumento potrebbe ridurre la necessità di programmatori entry-level. 

Tuttavia, al suo livello attuale, penso che l'intelligenza artificiale renderà la vita più facile ai programmatori entry-level (e anche ai programmatori con più esperienza) per scrivere codice e cercare informazioni. È un risparmio di tempo, ma l'intelligenza artificiale non può svolgere molte attività di programmazione da sola, almeno ora. Nel 2030? Chissà.

Come ottengo le risposte di codifica in ChatGPT?

Basta chiederlo. Hai visto sopra come ho usato un dialogo di discussione interattivo per restringere le risposte. Non aspettarti che una domanda faccia tutto il tuo lavoro magicamente. Ma usa l'intelligenza artificiale come aiuto e risorsa e ti darà molte informazioni utili. 

Naturalmente, verifica queste informazioni perché, come ha detto John Schulman, co-fondatore di OpenAI: "La nostra più grande preoccupazione riguardava la fattualità, perché al modello piace fabbricare le cose".

È garantito che il codice generato da ChatGPT sia privo di errori?

Cavolo no! Ma non ci si può nemmeno fidare del codice scritto dai programmatori umani. Di certo non mi fido del codice che scrivo. Il codice esce dal processo di creazione del codice incredibilmente imperfetto. Ci sono sempre bug. Prima di effettuare la spedizione, è necessario testare, testare e riprovare. Quindi, test alfa con alcune vittime scelte. Quindi esegui il beta test con la tua community di utenti più ampia. 

Anche dopo tutto questo lavoro, ci saranno dei bug. Solo perché un'intelligenza artificiale gioca a questa cosa della codifica non significa che possa fare codice senza bug. Non fidatevi. Verifica sempre. E non avrai ancora un output completamente privo di bug. Questa è la natura dell'universo.

Cosa devo fare se il codice che ricevo è sbagliato?

Consiglio di considerare il chatbot come uno studente o un dipendente subordinato leggermente poco collaborativo. Cosa faresti se quella persona ti restituisse un codice che non funziona? Li rimandeste indietro con le istruzioni per farlo di nuovo e farlo bene. Questo è più o meno quello che dovresti fare con ChatGPT (l'ho testato con ChatGPT 4 e 4o). Quando le cose non funzionano, dico: "Non ha funzionato. Si prega di riprovare."

L'intelligenza artificiale fa proprio questo. Spesso mi restituisce diverse variazioni sullo stesso problema. Ho ripetuto questo processo quattro o cinque volte a volte fino a quando non ho ottenuto una risposta funzionante. A volte, però, l'IA è a corto di idee. Altre volte, la risposta di riprova è completamente (e intendo completamente) scollegata da ciò che hai richiesto. 

Quando diventa evidente che hai raggiunto il limite della capacità dell'IA di rimanere sana di mente sul problema, dovrai allacciarti le cinture e codificarlo da solo. Ma 9 volte su 10, soprattutto con le sfide di codifica di base o di scrittura dell'interfaccia, l'intelligenza artificiale fa il suo lavoro con successo.

Quanto deve essere dettagliata la mia descrizione di un problema di programmazione quando chiedo a ChatGPT?

Dettagliato. Più lasci aperta l'interpretazione, più l'IA andrà per la sua strada. Quando do istruzioni a ChatGPT per aiutarmi durante la programmazione, immagino di assegnare un compito di programmazione a uno dei miei studenti o a qualcuno che lavora per me. 

Ho fornito a quella persona abbastanza dettagli per creare una prima bozza o quella persona dovrà farmi ulteriori domande? Peggio ancora, quella persona avrà così poca guida da andare nella direzione completamente sbagliata? Non essere pigro qui. ChatGPT può farti risparmiare ore o addirittura giorni di programmazione (per me lo ha fatto), ma solo se gli dai istruzioni utili per cominciare.

Se uso ChatGPT per scrivere il mio codice, chi lo possiede?

A quanto pare, non c'è ancora molta giurisprudenza per rispondere a questa domanda. Gli Stati Uniti, il Canada e il Regno Unito richiedono che qualcosa di protetto da copyright sia stato creato da mani umane, quindi il codice generato da uno strumento di intelligenza artificiale potrebbe non essere protetto da copyright. Ci sono anche problemi di responsabilità basati sulla provenienza del codice di addestramento e su come viene utilizzato il codice risultante. 

ZDNET ha approfondito questo argomento, ha parlato con esperti legali e ha prodotto tre articoli. Se sei preoccupato per questo problema (e se stai utilizzando l'intelligenza artificiale per aiutare con il codice, dovresti esserlo), ti consiglio di leggerli:

  • Chi possiede il codice? Se l'intelligenza artificiale di ChatGPT ti aiuta a scrivere la tua app, ti appartiene ancora?
  • Se utilizzi codice generato dall'intelligenza artificiale, qual è la tua esposizione alla responsabilità?
  • Una domanda spinosa: chi possiede il codice, le immagini e le narrazioni generate dall'intelligenza artificiale?

Quali linguaggi di programmazione conosce ChatGPT?

La risposta è la maggior parte dei linguaggi. Ho testato i linguaggi moderni più comuni, come PHP, Python, Java, Kotlin, Swift, C# e altri. Ma poi ho fatto scrivere codice allo strumento in oscuri linguaggi dell'età oscura come COBOL, Fortran, Forth, LISP, ALGOL, RPG (il generatore di programmi di report, non il gioco di ruolo) e persino il linguaggio assembly IBM/360. 

Come ciliegina sulla torta, gli ho dato questo suggerimento:

Scrivere una sequenza che visualizzi 'Hello, world' in luci lampeggianti ascii sul pannello frontale di un PDP 8/e

Il PDP 8/e è stato il mio primo computer e ChatGPT mi ha fornito le istruzioni per attivare un programma utilizzando gli interruttori del pannello frontale. Ero impressionato, gioioso e un po' spaventato.

ChatGPT può aiutarmi con le attività di analisi e visualizzazione dei dati?

Sì, e molto può essere fatto senza codice. Dai un'occhiata al mio intero articolo su questo argomento: Il momento in cui ho capito che ChatGPT Plus è stato un punto di svolta per la mia attività.

Ho anche fatto un pezzo sui grafici e le tabelle generati: Come usare ChatGPT per creare grafici e tabelle.

Ma è qui che si fa divertente. Nell'articolo sopra, ho chiesto a ChatGPT Plus: "Crea un grafico a barre delle prime cinque città del mondo per popolazione" e lo ha fatto. Ma vuoi il codice? Prova a chiedere:

Crea un grafico a barre delle prime cinque città del mondo per popolazione in Swift. Estrai i dati sulla popolazione online. Assicurati di includere tutte le librerie necessarie.

Aggiungendo "in Swift" si specifica il linguaggio di programmazione. Specificando da dove provengono i dati e costringendo ChatGPT Plus a includere le librerie, l'intelligenza artificiale introduce le altre risorse di cui il programma ha bisogno. Ecco perché, fondamentalmente, la programmazione con l'aiuto di un'intelligenza artificiale richiede che tu sappia cose sulla programmazione. Ma se lo fai, è fantastico, perché tre frasi possono farti ottenere un pezzo di codice annotato. Bello, eh?  

In che modo ChatGPT gestisce le differenze tra dialetti e implementazioni?

Non abbiamo dettagli esatti su questo problema da OpenAI, ma la nostra comprensione di come viene addestrato ChatGPT può far luce su questa domanda. Ricordate che i dialetti e le implementazioni dei linguaggi di programmazione (e le loro piccole stranezze) cambiano molto più rapidamente del linguaggio completo. Questa realtà rende più difficile per ChatGPT (e per molti professionisti della programmazione) tenere il passo.

Pertanto, lavorerei su queste due ipotesi:

  1. Più recente è il cambiamento dialettico, meno è probabile che ChatGPT ne sia a conoscenza, e
  2. Più una lingua è popolare, più dati di addestramento vengono appresi e, quindi, più accurati saranno.

Qual è la linea di fondo? ChatGPT può essere uno strumento utile. Basta non attribuirgli superpoteri. Ancora.