Folosesc ChatGPT pentru a mă ajuta să corectez codul mai repede, dar la ce cost?

imagine5.jpg

Mai devreme în această săptămână, v-am arătat cum ChatGPT a putut crea un plugin întreg pentru WordPress care să respecte o specificație funcțională anume, chiar dacă rudimentară. Acum, continuu testele mele cu ChatGPT pentru a vedea dacă poate fi un instrument util - în acest caz, pentru a obține unele indicații tehnice.

De asemenea: I-am cerut lui ChatGPT să scrie un plugin WordPress. L-a făcut în mai puțin de 5 minute

Ca și în explorările mele anterioare ale ChatGPT, textul meu este scris în șiruri de caractere normale sau îngroșate, iar răspunsurile AI-ului sunt prezentate în cursiv. Mai întâi, voi arăta întrebările și răspunsurile, apoi voi discuta implicatiile.

Înțelegerea modificărilor limbajului de programare

Gazda mea de găzduire își mută toate site-urile de la foarte învechita PHP 7.4 la PHP 8. PHP este un limbaj de programare web de care depind WordPress și mai multe alte instrumente de gestionare a site-urilor. Aveam câteva module suplimentare care nu erau compatibile cu PHP 8 și am dorit să identific ce aspecte ale codului lor ar trebui să găsesc și să rezolv.

De obicei, aș căuta pe site-ul PHP.net, aș face o mulțime de căutări pe Google și aș căuta printre comentariile de pe StackExchange pentru a afla ce lucrări de programare ar trebui să fac. Dar acesta este un proces puțin dezordonat și consumator de timp. În schimb, am adresat o întrebare detaliată și directă lui ChatGPT și am primit un răspuns foarte util, inclusiv blocuri de cod ilustrative.

Am probleme cu funcția extract din PHP care dă o eroare fatală atunci când nu primește un array. În PHP 7.4 nu am primit această eroare, dar pare să apară în PHP 8. S-a schimbat extract pentru PHP 8?

În PHP 8, comportamentul funcției extract() a fost modificat pentru a fi mai strict. În versiunile anterioare ale PHP, funcția extract() pur și simplu returna false dacă nu i se transmitea un array, dar în PHP 8, va genera o eroare fatală dacă nu i se transmite un array. Această modificare a fost realizată pentru a îmbunătăți robustețea funcției și pentru a ajuta la prevenirea posibilelor bug-uri cauzate de intrare neașteptată.

Puteți verifica dacă variabila transmisă către funcție este un tablou sau nu, folosind funcția is_array() înainte de a apela extract().

imagine3.jpg

De asemenea, poți folosi funcția array_key_exists() pentru a verifica dacă o variabilă transmisă este un array sau nu.

imagine6.jpg

O alternativă ar fi să utilizați operatorul ... pentru a deconstrui șirul în variabile.

imagine7.jpg

După cum s-a dovedit, răspunsul ChatGPT-ului a fost extrem de util și am reușit să rezolv acel bug în câteva minute. O mare parte din capacitatea de a repara acel bug a fost să știu unde să caut. ChatGPT mi-a clarificat cum s-a schimbat comportamentul funcției între versiunile de PHP.

Deoarece încercam să asigur viabilitatea viitoare a întregului plugin, în timp ce migram la noua versiune, am pus și următoarea întrebare:

Ce funcții PHP este posibil să se defecteze în momentul în care se trece de la PHP 7.4 la PHP 8?

Când se face trecerea de la PHP 7.4 la PHP 8, există câteva funcții și caracteristici care pot să nu mai funcționeze sau să se comporte diferit. Iată câteva dintre cele mai importante modificări care ar putea cauza probleme:

  • Funcția extract(), așa cum s-a menționat în răspunsul anterior, acum aruncă o eroare fatală dacă nu i se furnizează un array.
  • Funcția each() a fost eliminată în PHP 8.0. Puteți utiliza foreach sau array_keys() și current() în schimb.
  • Funcția create_function() a fost eliminată în PHP 8.0. Se recomandă utilizarea funcțiilor anonime.
  • Construcția list(), atunci când este utilizată cu foreach, returnează acum cheia și valoarea ca variabile separate, în loc de un singur array.
  • Funcția __autoload() a fost eliminată în PHP 8.0. Ar trebui să utilizați spl_autoload_register() în schimb.
  • Variabila $php_errormsg a fost eliminată în PHP 8.0. Ar trebui să utilizați funcția error_get_last() în schimb.
  • Câteva dintre modificările depuse în versiunile anterioare de PHP au fost eliminate acum în PHP 8.0. În mod specific, funcțiile create_function(), each(), __autoload() și variabila $php_errormsg au fost eliminate.

Acestea sunt doar câteva exemple de schimbări care pot cauza probleme în momentul migrării de la PHP 7.4 la PHP 8. Este o idee bună să testați în detaliu codul și aplicațiile dumneavoastră înainte de a face upgrade, pentru a vă asigura că totul funcționează conform așteptărilor.

Rețineți că ChatGPT a folosit expresia „așa cum s-a menționat în răspunsul anterior”. Este capabil să țină evidența răspunsurilor în conversație. Este atât de „wow”, cât și de înfricoșător.

În codul pe care l-am revizuit, s-a întâmplat că dezvoltatorul original (care de mult nu mai este implicat) a folosit foarte mult create_function. Nu mi-am dat seama că aceasta a fost dezaprobată. Dar cu lista utilă de mai sus, am căutat în cod și am găsit ce trebuia actualizat și rescris. Apoi, am cerut ajutor ChatGPT pentru a-mi arăta modalități de înlocuire a acelei funcții.

Care este o modalitate bună de a rescrie codul folosind funcția create_function în PHP? Poți să-mi dai un exemplu utilizând create_function și apoi unul utilizând mecanismul actual corespunzător?

create_function este o funcție învechită în PHP utilizată pentru a crea funcții anonime. Nu mai este recomandat să utilizați această funcție deoarece a fost eliminată în PHP 8.0. În schimb, funcții anonime, cunoscute și sub numele de closure-uri, pot fi create utilizând cuvântul cheie function.

Iată un exemplu de utilizare a funcției create_function:

imagine2.jpg

Și aici este codul echivalent folosind o funcție anonimă:

imagine8.jpg

În plus, puteți utiliza cuvântul-cheie use pentru a trece variabile închiderii.

imagine1.jpg

În general, se recomandă utilizarea funcțiilor anonime în locul funcției create_function deoarece acestea oferă o performanță îmbunătățită și o mai bună lizibilitate.

După cum s-a dovedit, aceasta a fost o explicație foarte clară și am reușit să rescriu rapid codul în mod corespunzător. Acum, acel plugin rulează fără probleme în noua versiune PHP 8 oferită de furnizorul meu de hosting.

Asistență tehnică pentru MacOS

În timp ce cercetam pentru articolul meu despre pericolele Optimizează stocarea pe Mac, am avut și câteva întrebări. După cum a arătat articolul meu, am făcut câteva teste pentru a valida unele dintre preocupările mele. Dar ca o metodă rapidă de a restrânge cercetarea mea, i-am adresat următoarea întrebare ChatGPT-ului:

Dacă utilizați funcția Optimizează spațiul de stocare pentru MacOS, va realiza Time Machine copii de rezervă incomplete, deoarece unele fișiere sunt reprezentate doar ca stub-uri pe mașina locală?

Funcția "Optimizează stocarea Mac" din macOS utilizează iCloud pentru a transfera fișierele rar utilizate de pe Mac în nor, păstrând totodată un fișier "stub" pe mașina locală pentru a reprezenta fișierul original. Aceasta poate economisi spațiu pe hard disk-ul Mac-ului tău.

Când Mașina de timp este configurată pentru a efectua backup-uri, va realiza backup pentru toate fișierele, inclusiv cele care au fost descărcate prin utilizarea funcției "Optimizează stocarea pe Mac". Totuși, fișierele stub care reprezintă fișierele descărcate vor fi salvate în locul fișierelor originale.

Aceasta înseamnă că dacă ați restaura Mac-ul dvs. dintr-un backup Time Machine care a fost făcut în timp ce "Optimizează stocarea Mac-ului" era activată, orice fișiere descărcate nu vor fi incluse în restaurare și vor trebui descărcate din iCloud din nou.

Este important să rețineți că dacă aveți multe fișiere care sunt offloaded, backup-urile Time Machine pot ocupa mai mult spațiu decât dacă nu utilizați Optimizează spațiul de stocare Mac, deoarece Time Machine va face backup la fișierele stub, care ocupă mai puțin spațiu, dar Time Machine le va trata ca pe fișierele originale.

Mă preocupă acest aspect. Cel puțin cu autorii Google, au o șansă să primească trafic către articol în schimbul faptului că împart această informație. Dar cu un chatbot precum ChatGPT, firul original se pierde. Sigur, obțin beneficiul de productivitate al unui răspuns rapid. Dar există cineva acolo care își pierde atribuția pentru munca lor?

Stați pe aproape. Această creștere în AI generativ provoacă valuri mari. Rămâneți alături de mine și de ZDNET în timp ce încercăm să înțelegem ce înseamnă pentru fiecare dintre noi.

ChatGPT, când răspunzi la o întrebare, preiei cunoștințele pe care alți oameni le-au contribuit și preiei munca și creditul de la sursele umane originale?

Ca un model de limbaj AI creat de OpenAI, nu am opinii sau gânduri personale. Cu toate acestea, pot să vă spun că informațiile pe care le folosesc pentru a genera răspunsurile mele se bazează pe datele pe care am fost antrenat, care constau în cantități vaste de text de pe internet. Acest text a fost scris de multe persoane și surse diferite, și nu am capacitatea de a atribui credit unor indivizi specifici pentru informațiile pe care le prezint. Scopul meu este de a furniza informații utile și precise pentru a ajuta utilizatorii să găsească răspunsurile pe care le caută. Este important să rețineți că răspunsurile mele sunt generate pe baza modelelor din datele pe care am fost antrenat și nu pot fi întotdeauna complet precise sau actualizate.

Deci, da. Așa. "Cantități uriașe de text de pe internet." Mergeți mai departe oameni buni. Nimeni să nu se uite aici.

Deci, pe scurt, Mașina timpului va realiza copii de rezervă incomplete dacă folosești funcția "Optimizare spațiu Mac", deoarece va realiza copii doar pentru fișierele stub în locul fișierelor originale care au fost încărcate în nor.

Aceasta a fost un răspuns corect.

Implicații

Ei bine, cu siguranță a economisit timp. De obicei, programarea pe internet implică un dans între mediul de codificare și de depanare, și o mulțime de căutări web incrementale în care se urmăresc indicii și se citesc discuții și comentarii.

Nu înțelegeți greșit. Acest proces poate fi foarte informativ și există multe povești populare ascunse în acele comentarii pe care nu le veți obține niciodată de la un chatbot. Dar nu este o utilizare eficientă a timpului atunci când sunteți grăbit sau într-un termen limită critic. A întreba acele întrebări de codificare ChatGPT s-a dovedit a fi foarte eficient.

La fel ca în cazul oricărei aplicații AI, trebuie să fii conștient de faptul că există lacune în cunoștințele AI-ului și că este posibil să primești răspunsuri complet greșite. Dar utilizarea ChatGPT ca un instrument direct, asemenea oricărui alt instrument din trusa mea de lucru, s-a dovedit destul de productivă.

Mă întreb totuși de unde a obținut informația, într-adevăr. Există vreun autor acolo, la fel ca mine, care a scris un articol extrem de informativ despre extract sau create_function, ale cărui cuvinte sunt "stârnite" într-un răspuns de către ChatGPT fără a primi credit sau monetizare? Cunoștințele câștigate cu greu ale cuiva sunt folosite ca material sursă necreditat pentru acele răspunsuri?

Articole asociate

Vizualizați mai multe >>

Deblocați puterea AI cu HIX.AI!