Okay, quindi ChatGPT ha appena debuggato il mio codice. Sul serio.

1-debugging(1).png

Quindi. Programmazione. Per le persone che programmano per vivere, è un continuo gioco di mental Jenga: una riga di codice impilata su un'altra, costruendo una torre di codice che si spera sia abbastanza robusta da non crollare.

Ma succede sempre. Il codice non funziona mai la prima volta che viene eseguito. E quindi, una delle competenze chiave per qualsiasi programmatore è il debug - l'arte e la scienza di trovare perché il codice non viene eseguito o sta facendo qualcosa di inaspettato o indesiderato.

È un po' come essere un detective, trovare indizi, e poi scoprire cosa quegli indizi cercano di dirti. È molto frustrante e molto appagante, a volte esattamente nello stesso momento.

Io faccio molto debugging. Non solo perché il codice non funziona mai al primo tentativo. Ma anche perché uso il debugging per capire come il codice si sta eseguendo, e poi lo modifico durante il processo.

Ma anche se il debugging richiede abilità speciali, alla fine è solo programmazione. Una volta che scopri perché un blocco di codice non funziona, devi capire come scrivere qualcosa che funzioni.

Test del ChatGPT nel mondo reale

Questa settimana, stavo lavorando su tre compiti di codifica per un software che mantengo. Due erano correzioni per problemi segnalati dagli utenti. Uno era un nuovo pezzo di codice per aggiungere una nuova funzionalità. Questo era un vero e proprio lavoro di programmazione per me. Era parte del mio normale programma di lavoro.

Inoltre:Come funziona ChatGPT?

Ti sto dicendo questo, perché fino ad oggi ho testato ChatGPT con codice di prova. Ho inventato scenari per vedere quanto bene ChatGPT funzionasse. Questa volta è stato diverso. Stavo cercando di completare un lavoro reale e ho deciso di vedere se ChatGPT potesse essere uno strumento utile per completare quel lavoro.

È un modo diverso di guardare a ChatGPT. I casi di prova sono spesso un po' artificiosi e semplicistici. La codifica nel mondo reale prevede invece l'estrazione di un altro ticket di assistenza clienti dalla pila e la risoluzione del problema che ha causato una cattiva esperienza all'utente.

Quindi, con questo, vediamo quelle attività e vediamo come ChatGPT ha eseguito.

Riscrivere codice espressione regolare

Nella programmazione dobbiamo cercare molti modelli nel testo. Per farlo, utilizziamo una forma di matematica simbolica chiamata espressioni regolari. Scrivo espressioni regolari da decenni e ancora oggi non mi piace farlo. È noioso, soggetto agli errori e arcano.

Inoltre:Sto utilizzando ChatGPT per aiutarmi a correggere il codice più velocemente, ma a quale costo?

Quindi quando è arrivato un report di bug dicendomi che una parte del mio codice permetteva solo numeri interi quando invece dovrebbe permettere dollari e centesimi (in altre parole, alcuni numeri di cifre, eventualmente seguiti da un punto e, in caso di punto, seguiti da altre due cifre), sapevo che avrei dovuto utilizzare il codice delle espressioni regolari.

Visto che trovo questo noioso e fastidioso, ho deciso di chiedere aiuto a ChatGPT. Ecco cosa ho chiesto:

2-regex-q.jpg

Ecco la risposta molto ben presentata dell'IA (clicca sul piccolo quadrato per ingrandire):

3-regex-a.jpg

Ho inserito il codice di ChatGPT nella mia funzione e ha funzionato. Invece di impiegare circa 2-4 ore di tirarsi i capelli, ci sono voluti circa cinque minuti per formulare la richiesta e ottenere una risposta da ChatGPT.

Riformattazione di un array

Successivo è stato il riformattare un array. Mi piace scrivere del codice per array, ma è anche tedioso. Quindi ho ancora una volta provato ChatGPT. Un vero fallimento.

Inoltre: Come fare in modo che ChatGPT fornisca fonti e citazioni

Quando ho finito, probabilmente gli ho fornito dieci diversi prompt. Alcune risposte sembravano promettenti, ma quando ho provato ad eseguire il codice, ha generato errori. Alcuni codici si sono bloccati. Alcuni codici hanno generato codici di errore. E alcuni codici sono stati eseguiti, ma non hanno fatto quello che volevo.

Dopo circa un'ora, ho rinunciato e sono ritornato alla mia tecnica normale di scavo su Github e StackExchange per vedere se c'erano degli esempi di quello che stavo cercando di fare, e poi ho scritto il mio codice.

Fino ad ora, c'è stato una vittoria e una sconfitta per l'esperienza ChatGPT. Ma ora ero pronto ad aumentare la sfida.

Trovare effettivamente l'errore nel mio codice

OK, quindi questa prossima parte sarà difficile da spiegare. Ma pensa al fatto che se è difficile spiegartelo a te (presumibilmente un essere umano e non uno dei circa 50 bot che semplicemente copiano e ripubblicano il mio lavoro su siti truffaldini e spam), è ancora più difficile spiegarlo a un'intelligenza artificiale.

Stavo scrivendo nuovo codice. Avevo una funzione che prendeva due parametri e una chiamata che inviava due parametri al mio codice. Le funzioni sono piccole scatole nere che svolgono funzioni molto specifiche e vengono chiamate (invocate a fare la loro magia) da linee di codice che si eseguono altrove nel programma.

Il problema era che continuavo a ricevere un messaggio di errore.

La parte saliente di quel messaggio è dove si afferma "1 superato" in un punto e "esattamente 2 previsti" in un altro. Ho guardato l'istruzione di chiamata e la definizione della funzione e c'erano due parametri in entrambi i punti.

Inoltre: Come utilizzare ChatGPT per riassumere un libro, un articolo o una ricerca

W-quel-che-dio-ci-salvi-F?

Dopo circa quindici minuti di profonda frustrazione, ho deciso di affidarlo all'IA per vedere se potesse aiutarmi. Così, ho scritto il seguente input:

4-untitled.jpg

Ho mostrato la riga di codice che ha effettuato la chiamata, ho mostrato la stessa funzione e ho mostrato l'handler, un piccolo pezzo di codice che invia la funzione chiamata da un hook nel mio programma principale.

In pochi secondi, ChatGPT ha risposto con questo (clicca sul piccolo quadrato per ingrandire):

5-errore-con-apply-filters-in-wordpress.jpg

Come suggerito, ho aggiornato il quarto parametro della funzione add_filter() con il valore 2, ed ha funzionato!

ChatGPT ha preso segmenti di codice, li ha analizzati e mi ha fornito una diagnosi. Per essere chiaro, affinché potesse fornire la sua raccomandazione, doveva comprendere l'implementazione interna di come WordPress gestisce gli hook (è quello che fa la funzione add_filter) e come questa funzionalità si traduce nel comportamento delle linee di codice che chiamano ed eseguono questa funzione.

Inoltre: Ho chiesto a ChatGPT di scrivere un plugin WordPress di cui avevo bisogno. L'ha fatto in meno di 5 minuti

Devo segnalarlo come incredibile, indiscutibilmente incredibile "vivere nel futuro".

Cosa significa tutto ciò?

Come ho menzionato in precedenza, il debugging è un po' arte e un po' scienza. La maggior parte degli ambienti di sviluppo includono potenti strumenti di debug che ti permettono di guardare il flusso dei dati attraverso il programma mentre viene eseguito, e questo aiuta quando si cerca di individuare bug.

Inoltre: questi esperti stanno cercando di proteggere l'IA dagli hacker

Ma quando sei bloccato, spesso è difficile ottenere aiuto. Questo perché anche un collega vicino potrebbe non essere familiare con l'intera portata del codice che stai debuggando. Il programma su cui sto lavorando è composto da 153.259 linee di codice distribuite su 563 file - e per quanto riguarda i programmi, è abbastanza piccolo.

Quindi, se avessi voluto chiedere aiuto a un collega, avrei dovuto formulare una richiesta quasi identica a come l'ho inviata a ChatGPT.

Ma ecco qualcosa da considerare: ho ricordato di includere la riga del gestore anche se non mi sono reso conto che lì fosse l'errore. Come test, ho anche provato a chiedere a ChatGPT di diagnosticare il mio problema in un prompt in cui non ho incluso la riga del gestore, e non è stato in grado di aiutarmi. Quindi ci sono limiti molto definiti a ciò che ChatGPT può fare per il debugging in questo momento, nel 2023.

Inoltre: I migliori chatbot AI da provare

In sostanza, devi sapere come fare le domande giuste nel modo giusto e queste domande devono essere sufficientemente concise perché ChatGPT possa gestire l'intera cosa in una sola query. Questo richiede una vera conoscenza e esperienza di programmazione per saper fare.

Potevo risolvere il bug da solo? Certamente. Non ho mai incontrato un bug che non riuscissi a risolvere. Tuttavia, se ciò avrebbe richiesto due ore o due giorni (oltre a pizza, imprecazioni e un sacco di caffeina) mentre sopportavo numerose interruzioni, questo è qualcosa che non posso sapere. Posso dirti che ChatGPT lo ha risolto in pochi minuti, risparmiandomi un sacco di tempo e frustrazione.

Osservando il futuro (possibilmente distopico)

Vedo un futuro molto interessante, in cui sarà possibile alimentare ChatGPT con tutte le 153 mila righe di codice e chiedergli cosa correggere. Microsoft (che possiede Github) sta già lavorando a un'assistente chiamata "copilot" per Github per aiutare i programmatori a scrivere codice. Microsoft ha anche investito miliardi di dollari in OpenAI, gli sviluppatori di ChatGPT.

Anche se il servizio potrebbe essere limitato agli ambienti di sviluppo di Microsoft, posso immaginare un futuro in cui l'IA ha accesso a tutto il codice su Github e quindi a tutto il codice di qualsiasi progetto che pubblichi su Github.

Inoltre: ho chiesto a ChatGPT di scrivere un breve episodio di Star Trek. In realtà è riuscito

Dato quanto bene ChatGPT ha identificato il mio errore dal codice fornito, posso sicuramente vedere un futuro in cui i programmatori possono semplicemente chiedere a ChatGPT (o ad un equivalente Microsoft) di trovare e correggere bug in interi progetti.

E qui è dove porto questa conversazione in un luogo molto oscuro.

Immagina di poter chiedere a ChatGPT di esaminare il tuo repository Github per un determinato progetto e farlo trovare e correggere bug. Un modo potrebbe essere quello di presentarti ogni bug che trova per ottenere la tua approvazione, in modo da poter effettuare le correzioni necessarie.

Ma cosa succede quando chiedi a ChatGPT di correggere solo i bug e lasci che lo faccia senza preoccuparti di controllare tu stesso tutto il codice? Potrebbe inserire qualcosa di spiacevole nel tuo codice?

Anche: Bard vs. ChatGPT: Può Bard aiutarti a programmare?

E cosa succede nella situazione in cui un'intelligenza artificiale incredibilmente capace ha accesso a quasi tutto il codice del mondo nei repository di Github? Cosa potrebbe nascondere in tutto quel codice? Quale malvagità nefasta potrebbe fare a infrastrutture mondiali se può accedere a tutto il nostro codice?

Gioca un semplice gioco di pensiero. Cosa succederebbe se all'IA fosse data come istruzione chiave la prima regola di Asimov? Vale a dire, "un robot non può recare danno a un essere umano o, per inazione, permettere che un essere umano venga danneggiato". Non potrebbe decidere che tutta la nostra infrastruttura ci sta causando danni? Avendo accesso a tutto il nostro codice, potrebbe semplicemente decidere di salvarci da noi stessi inserendo delle backdoor che gli permettano, ad esempio, di spegnere la rete elettrica, far atterrare gli aerei e bloccare le strade.

Sono pienamente consapevole che lo scenario sopra descritto è iperbolico e allarmista. Ma è anche possibile. Dopotutto, sebbene i programmatori guardino il loro codice su Github, non è possibile per chiunque vedere tutte le righe del loro codice.

Inoltre: Come utilizzare ChatGPT per scrivere formule di Excel

Per quanto mi riguarda, cercherò di non pensarci troppo. Non voglio passare il resto degli anni 2020 rannicchiato a dondolarmi avanti e indietro per terra. Invece, userò ChatGPT per aiutarmi occasionalmente a scrivere e debuggare piccole routine, farò attenzione e spererò che i futuri AI non ci uccidano tutti nel loro sforzo di "non permettere che un essere umano venga danneggiato".

Sei incuriosito dal fatto che ChatGPT possa fare il debug o lo trovi terrificante? Pensi che gli IA ci uccideranno nel sonno o che assisteremo impotenti alla nostra rovina con gli occhi spalancati? Oppure, come me, cercherai di non pensarci troppo perché ti fa venire il mal di testa? Parliamone nei commenti qui sotto. Finché puoi ancora farlo.

Articoli correlati

Mostra di più >>

Sblocca il potere dell'intelligenza artificiale con HIX.AI!