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

immagine5.jpg

All'inizio di questa settimana, ti ho mostrato come ChatGPT potesse creare un intero plugin WordPress che rispondeva a una specifica funzionale, seppur piuttosto rudimentale. Ora, sto continuando i miei test su ChatGPT per capire se può essere uno strumento utile - in questo caso, per aiutarmi a ottenere una guida tecnica.

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

Come ho fatto nelle precedenti esplorazioni di ChatGPT, il mio testo è in carattere normale o in grassetto, e le risposte dell'IA sono in corsivo. Prima ti mostrerò le domande e le risposte, poi discuterò le implicazioni.

Comprensione dei cambiamenti del linguaggio di programmazione

Il mio fornitore di hosting sta trasferendo tutti i suoi siti dalla versione molto obsoleta PHP 7.4 a PHP 8. PHP è un linguaggio di programmazione web di cui WordPress e diversi altri strumenti di gestione web dipendono. Avevo un paio di plugin che non erano compatibili con PHP 8 e volevo individuare quali parti del loro codice avrei dovuto cercare e correggere.

Normalmente, mi immergerei nel sito PHP.net, farei un mucchio di ricerche su Google e mi spingerei tra i commenti su StackExchange per scoprire quale lavoro di programmazione dovrei fare. Ma è un processo un po' disordinato e che richiede tempo. Invece, ho posto una domanda dettagliata e diretta a ChatGPT e ho ottenuto una risposta molto utile, compresi dei blocchi di codice illustrativo.

Sto riscontrando problemi con la funzione extract di PHP che genera un errore fatale quando non viene passato un array. In PHP 7.4, non ottenevo l'errore, ma sembra che in PHP 8 succeda. È cambiata la funzione extract in PHP 8?

In PHP 8, il comportamento della funzione extract() è stato modificato per essere più rigoroso. Nelle versioni precedenti di PHP, la funzione extract() restituiva semplicemente false se non veniva passato un array, ma in PHP 8 genererà un errore fatale se non viene passato un array. Questo cambiamento è stato apportato per migliorare la robustezza della funzione e per aiutare a prevenire potenziali bug causati da input imprevisti.

Puoi verificare se la variabile passata alla funzione è un array o meno utilizzando la funzione is_array() prima di chiamare extract().

immagine3.jpg

Puoi anche utilizzare la funzione array_key_exists() per verificare se una variabile passata è un array o meno.

immagine6.jpg

In alternativa, puoi utilizzare l'operatore ... per destrutturare l'array in variabili.

Immagine7.jpg

Come è stato scoperto, la risposta di ChatGPT è stata estremamente utile, e ho risolto quel bug in pochi minuti. Una grande parte di essere in grado di risolvere quel bug è stata sapere dove guardare. ChatGPT ha chiarito come il comportamento è cambiato nella funzione tra le versioni di PHP.

Dato che stavo cercando di rendere il plugin resistente al futuro nella sua interezza mentre stavo passando alla nuova versione, ho anche chiesto questo:

Quali funzioni PHP sono più suscettibili di rompersi durante il passaggio da PHP 7.4 a PHP 8?

Quando si passa da PHP 7.4 a PHP 8, ci sono alcune funzioni e caratteristiche che potrebbero non funzionare correttamente o comportarsi in modo diverso. Ecco alcuni dei cambiamenti più significativi che potrebbero potenzialmente causare problemi:

  • La funzione extract(), come accennato nella risposta precedente, ora genera un errore fatale se non viene passato un array.
  • La funzione each() è stata rimossa in PHP 8.0. È possibile utilizzare foreach oppure array_keys() e current() al suo posto.
  • La funzione create_function() è stata rimossa in PHP 8.0. Si consiglia di utilizzare le funzioni anonime al suo posto.
  • La costruzione list(), quando usata con foreach, ora restituisce la chiave e il valore come variabili separate, anziché un singolo array.
  • La funzione __autoload() è stata rimossa in PHP 8.0. Dovresti utilizzare spl_autoload_register() al suo posto.
  • La variabile $php_errormsg è stata rimossa in PHP 8.0. Dovresti utilizzare la funzione error_get_last() al suo posto.
  • Alcune delle deprecazioni nelle versioni precedenti di PHP sono state rimosse in PHP 8.0. In particolare, le funzioni create_function(), each(), __autoload() e la variabile $php_errormsg sono state rimosse.

Questi sono solo alcuni esempi dei cambiamenti che potrebbero causare problemi durante il passaggio da PHP 7.4 a PHP 8. È una buona idea testare attentamente il tuo codice e le tue applicazioni prima di effettuare l'aggiornamento per assicurarti che tutto funzioni come previsto.

Nota che ChatGPT ha usato la frase "come citato nella risposta precedente". È in grado di tenere traccia delle risposte nella conversazione. Questo è sia "wow" che spaventoso.

Nel codice che stavo revisionando, è emerso che lo sviluppatore originale (che è ormai da tempo fuori dall'immagine) ha utilizzato molto create_function. Non mi ero reso conto che fosse stato deprecato. Ma con l'utile elenco sopra, ho semplicemente cercato nel codice e ho trovato ciò che doveva essere aggiornato e riscritto. Quindi ho chiesto a ChatGPT di mostrarmi modi per sostituire quella funzione.

Cosa posso fare per riscrivere del codice usando create_function in PHP? Puoi darmi un esempio usando create_function, e poi uno usando l'attuale meccanismo corretto?

create_function è una funzione deprecata in PHP che veniva utilizzata per creare funzioni anonime. Non è più consigliato utilizzare questa funzione in quanto è stata rimossa in PHP 8.0. Invece, le funzioni anonime, anche conosciute come closures, possono essere create utilizzando la parola chiave function.

Ecco un esempio di utilizzo di create_function:

immagine2.jpg

E qui c'è il codice equivalente utilizzando una funzione anonima:

immagine8.jpg

Inoltre, puoi utilizzare la parola chiave use per passare variabili nella chiusura.

immagine1.jpg

In generale, si consiglia di utilizzare le funzioni anonime al posto di create_function in quanto hanno prestazioni migliorate e una migliore leggibilità.

Come si è scoperto, quella è stata una spiegazione molto chiara e sono stato in grado di riscrivere rapidamente il codice in modo appropriato. Quel plugin sta ora funzionando nell'ambiente PHP 8 del mio provider di hosting senza problemi.

Supporto tecnico MacOS

Mentre stavo facendo delle ricerche per il mio articolo sui pericoli di Optimize Mac Storage, mi sono anche sorti alcune domande. Come mostrato nel mio articolo, ho effettuato alcuni test per convalidare alcune delle mie preoccupazioni. Ma come un modo rapido per restringere la mia ricerca, ho chiesto a ChatGPT questo:

Se si utilizza la funzione di ottimizzazione dello spazio di archiviazione Mac, Time Machine effettuerà backup incompleti perché alcuni file sono rappresentati solo come stub sulla macchina locale?

La funzione "Ottimizza archiviazione Mac" in macOS utilizza iCloud per spostare i file usati raramente dal tuo Mac al cloud, mantenendo un file "stub" sulla tua macchina locale per rappresentare il file originale. Ciò può risparmiare spazio sull'hard disk del tuo Mac.

Quando Time Machine è configurato per effettuare il backup, effettuerà il backup di tutti i file, inclusi quelli che sono stati scaricati utilizzando "Ottimizza archiviazione Mac". Tuttavia, i file di supporto che rappresentano i file scaricati saranno copiati al posto dei file originali.

Ciò significa che se ripristini il tuo Mac da un backup di Time Machine che è stato creato mentre "Ottimizza archiviazione Mac" era abilitato, tutti i file spostati non saranno inclusi nel ripristino e dovranno essere scaricati nuovamente da iCloud.

E' importante notare che se hai molti file che sono trasferiti in remoto, il backup di Time Machine potrebbe occupare più spazio rispetto all'opzione di Non Usare Ottimizza Archiviazione Mac perché Time Machine effettuerà il backup dei file stub, che occupano meno spazio ma vengono considerati da Time Machine come i file originali.

Mi preoccupa. Con Google, almeno gli autori hanno la possibilità che il motore di ricerca invii traffico all'articolo in cambio della condivisione di informazioni. Ma con un chatbot come ChatGPT, il filo originale si perde. Certo, ho ottenuto il vantaggio di una risposta rapida. Ma qualcuno là fuori ha perso l'attribuzione per il suo lavoro?

Rimani sintonizzato. Questa ondata di intelligenza artificiale generativa sta facendo grandi onde. Resta con me e ZDNET mentre cerchiamo di capire cosa significa per tutti noi.

ChatGPT, quando rispondi a una domanda, stai prendendo conoscenze che altri hanno contribuito e stai togliendo lavoro e merito alle fonti umane originali?

Come modello di intelligenza artificiale creato da OpenAI, non ho opinioni personali o pensieri. Tuttavia, posso dirti che le informazioni che utilizzo per generare le mie risposte si basano sui dati su cui sono stato addestrato, che consistono in un'enorme quantità di testo proveniente da internet. Questo testo è stato scritto da molte persone e fonti diverse, e non ho la capacità di attribuire il merito a individui specifici per le informazioni che presento. Il mio obiettivo è fornire informazioni utili e accurate per aiutare gli utenti a trovare le risposte che stanno cercando. È importante ricordare che le mie risposte sono generate sulla base di modelli nei dati su cui sono stato addestrato e potrebbero non essere sempre completamente accurate o aggiornate.

Quindi, sì. Quello. "Enormi quantità di testo da internet". Continuate pure. Non c'è niente da vedere qui.

Quindi, in breve, Time Machine farà backup incompleti se si utilizza la funzione "Ottimizza archiviazione Mac", in quanto farà backup solo dei file stub invece dei file originali che sono stati scaricati su cloud.

Questa è stata una risposta corretta.

Implicazioni

Bene, ci ha sicuramente risparmiato tempo. Di solito, programmare su internet implica una danza tra l'ambiente di codifica e di debug, e una serie di ricerche web incrementali in cui si seguono indizi e si leggono discussioni e commenti.

Non fraintendetemi. Quel processo può essere molto informativo e ci sono molte tradizioni sepolte in quei commenti che non otterrai mai da un chatbot. Ma non è un uso efficiente del tempo quando hai fretta o una scadenza critica. Chiedere quelle domande di codifica a ChatGPT si è rivelato molto efficiente.

Come con qualsiasi altra cosa legata all'Intelligenza Artificiale, devi essere consapevole che ci sono delle lacune nella conoscenza dell'AI e che potresti ottenere risposte completamente errate. Ma utilizzare ChatGPT come uno strumento semplice e diretto, come qualsiasi altro strumento nel mio arsenale, si è dimostrato piuttosto produttivo.

Mi chiedo davvero da dove abbia tratto queste informazioni. Esiste un autore là fuori come me che ha scritto un articolo approfondito sull'estrazione o creazione di funzioni il cui contenuto viene "rilavorato" in una risposta di ChatGPT senza riconoscimento o monetizzazione? La conoscenza di qualcuno, ottenuta con fatica, viene utilizzata come materiale di origine non accreditato per quelle risposte?

Articoli correlati

Mostra di più >>

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