În regulă, deci ChatGPT tocmai a depanat codul meu. Serios.

1-depanare(1).png

Așa. Programare. Pentru cei care se ocupă de programare ca meserie, este un joc constant de Jenga mental: o linie de cod adăugată peste alta, construind o structură de cod pe care speră să fie suficient de robustă pentru a nu se prăbuși.

Dar întotdeauna se întâmplă. Codul nu funcționează niciodată din prima dată când este executat. Așadar, una dintre abilitățile cheie ale oricărui programator este depanarea - arta și știința de a găsi de ce codul nu funcționează sau de ce face ceva neașteptat sau nedorit.

Este puțin ca și cum ai fi un detectiv, găsind indicii și apoi descoperind ce încearcă aceste indicii să-ți transmită. Este foarte frustrant și în același timp foarte satisfăcător.

Fac multă depanare. Nu doar pentru că codul nu funcționează niciodată din prima rulare. Este și pentru că folosesc depanarea să-mi spună cum rulează codul și apoi îl reglează pe parcurs.

Dar în timp ce depanarea bună necesită un set special de abilități, în final este doar programare. Odată ce descoperi de ce un anumit bloc de cod nu funcționează, trebuie să găsești cum să scrii ceva care să funcționeze.

Testare ChatGPT în lumea reală

Săptămâna aceasta, am lucrat la trei sarcini de codare pentru software-ul pe care îl mențin. Două dintre acestea erau corecții pentru erori raportate de utilizatori. Una era un nou fragment de cod pentru adăugarea unei funcționalități noi. A fost o muncă obișnuită pentru mine în cadrul programului meu de lucru regulat.

De asemenea:Cum funcționează ChatGPT?

Vă spun asta, deoarece până acum am testat ChatGPT cu cod de testare. Am creat scenarii pentru a vedea cât de bine funcționează ChatGPT. De data aceasta a fost diferită. Am încercat să fac lucrări reale și am decis să văd dacă ChatGPT poate fi un instrument util pentru a îndeplini aceste lucrări.

Este o modalitate diferită de a privi ChatGPT. Scenariile de testare sunt adesea puțin forțate și simpliste. Programarea în lumea reală presupune de fapt preluarea unui tichet de suport pentru clienți și rezolvarea problemelor care au afectat experiența utilizatorului.

Deci, cu asta, să ne uităm la acele sarcini și să vedem cum s-a descurcat ChatGPT.

Refacerea codului expresiilor regulate

În programare, trebuie să găsim multe modele în text. Pentru a face acest lucru, folosim o formă de matematică simbolică numită expresii regulate. Am scris expresii regulate de decenii întregi și totuși nu-mi plac să o fac. Este plictisitor, predispus la erori și misterios.

De asemenea: Folosesc ChatGPT ca sa ma ajute sa rezolv codul mai repede, dar la ce cost?

Deci, atunci când am primit un raport de eroare care îmi spunea că o parte din codul meu permitea doar numere întregi în loc de dolari și cenți (adică un număr format dintr-un anumit număr de cifre, poate urmat de un punct și apoi, dacă exista un punct, urmate de alte două cifre), am știut că voi trebui să folosesc codificare cu expresii regulate.

Deoarece găsesc asta plictisitor și enervant, am decis să cer ajutor de la ChatGPT. Iată ce am întrebat:

2-regex-q.jpg

Și aici este răspunsul AI-ului foarte bine prezentat (faceți clic pe pătratul mic pentru a-l mări):

3-regex-a.jpg

Am inserat codul ChatGPT în funcția mea și a funcționat. În loc de aproximativ 2-4 ore de nervi, mi-a luat doar cinci minute să formulez promptul și să obțin un răspuns de la ChatGPT.

Reformatarea unui array

Următorul pas a fost reformatarea unei matrice. Îmi place să lucrez cu cod de matrice, dar este și un proces plictisitor. Așa că am încercat din nou ChatGPT. Un eșec total.

De asemenea:Cum să faci ca ChatGPT să ofere surse și citări

La final, probabil că i-am dat zece prompturi diferite. Unele răspunsuri păreau promițătoare, dar când am încercat să rulez codul, a apărut o eroare. Unele coduri au picat. Unele coduri au generat coduri de eroare. Și unele coduri au rulat, dar nu au făcut ceea ce doream.

După aproximativ o oră de acest lucru, am renunțat și m-am întors la tehnica mea obișnuită de a căuta pe Github și StackExchange pentru a vedea dacă există exemple de ceea ce încercam să fac și apoi de a scrie propriul meu cod.

Până acum, au fost înregistrate o victorie și o înfrângere în experiența ChatGPT. Dar acum am de gând să ridic nivelul provocării.

De fapt, găsirea erorii în codul meu

OK, deci următoarea parte va fi greu de explicat. Dar gândește-te la faptul că dacă este greu de explicat ție (presupus fiind un om și nu unul dintre cei aproximativ 50 de roboți care doar copiază și republică lucrarea mea pe site-uri înșelătoare și pline de spam), este și mai dificil să o explici unui IA.

Eu scriam cod nou. Aveam o funcție care avea două parametri, și o declarație de apel care trimitea doi parametri la codul meu. Funcțiile sunt niște cutii negre mici care efectuează funcții foarte specifice și sunt apelate (rugate să-și facă magia) din linii de cod care rulează în altă parte în program.

Problema era că primeam în mod constant un mesaj de eroare.

Părțile importante ale acelui mesaj sunt cele în care se menționează "1 trecut" la un moment dat și "exact 2 așteptat" la altul. Am analizat apelul și definiția funcției și erau doi parametri în ambele locuri.

De asemenea: Cum să folosești ChatGPT pentru a rezuma o carte, un articol sau un paper de cercetare

W-ce naiba s-a întâmplat?

După aproximativ cincisprezece minute de frustrare profundă, am decis să o ofer spre analiză AI-ului pentru a vedea dacă îmi poate fi de ajutor. Așa că am scris următoarea solicitare:

4-untitled.jpg

I-am arătat linia de cod care a făcut apelul, i-am arătat funcția în sine, și i-am arătat handler-ul, un mic fragment de cod care dispecerizează funcția apelată dintr-un hook în programul meu principal.

În câteva secunde, ChatGPT a răspuns cu următorul mesaj (clic aici pentru a-l mări):

5-eroare-la-aplicarea-filtrului-in-wordpress.jpg

La fel cum s-a sugerat, am actualizat al patrulea parametru al funcției add_filter() la 2 și a funcționat!

ChatGPT a preluat segmente de cod, le-a analizat și mi-a oferit un diagnostic. Pentru a fi clar, pentru a face recomandările sale, a trebuit să înțeleagă cum funcționează hook-urile în WordPress (asta face funcția add_filter) și cum se traduce această funcționalitate în comportamentul liniilor de cod apelante și executante.

De asemenea: Am cerut ChatGPT să scrie un modul WordPress de care aveam nevoie. L-a făcut în mai puțin de 5 minute

Trebuie să remarc că este incredibil, de necontestat "trăind în viitor" incredibil.

Ce înseamnă toate acestea?

Ca și cum menționam mai devreme, depanarea este puțin artă și puțin știință. Cele mai bune medii de dezvoltare includ instrumente puternice de depanare care vă permit să analizați fluxul de date prin program în timpul rulării, iar acest lucru ajută când încercați să depistați bug-uri.

De asemenea: Acești experți se grăbesc să protejeze AI-ul de hackeri

Dar când ești blocat, este adesea dificil să primești ajutor. Asta pentru că chiar și un coleg apropiat poate să nu fie familiarizat cu întreaga gamă de cod pe care o depanați. Programul la care lucrez este compus din 153.259 de linii de cod, distribuite în 563 de fișiere - și, din perspectiva programelor, acesta este un cod mic.

Așa că, dacă aș fi vrut să primesc ajutor de la un coleg, ar fi trebuit să formulez o cerere aproape identică cu modul în care am trimis-o la ChatGPT.

Însă iată ceva de luat în considerare: am reușit să includ linia de handler chiar dacă nu mi-am dat seama că acolo se afla eroarea. Ca test, am încercat și să cer ajutor lui ChatGPT pentru a diagnostica problema mea într-un prompt în care nu am inclus linia de handler, dar nu a reușit să ajute. Deci, există cu siguranță limite clare în ceea ce poate face ChatGPT pentru depanare în acest moment, în 2023.

De asemenea: Cele mai bune chatbot-uri AI de încercat

În esență, trebuie să știi cum să pui întrebările potrivite în modul corect, iar aceste întrebări trebuie să fie suficient de concise pentru ca ChatGPT să poată gestiona totul într-o singură interogare. Aceasta este ceva ce necesită cunoștințe și experiență reală în programare pentru a ști cum să faci.

Aș fi putut rezolva singur problema? Desigur. Nu am avut niciodată o problemă pe care să nu o pot rezolva. Dar cât timp mi-ar fi luat, fie două ore sau două zile (plus pizza, înjurături și multă cafeină), în timp ce suportam multe întreruperi, asta nu știu. Pot să-ți spun că ChatGPT a rezolvat-o în câteva minute, economisindu-mi o grămadă de timp și frustrare.

Privind spre viitorul (posibil distopic)

Văd un viitor foarte interesant, în care va fi posibil să hrăniți ChatGPT cu toate cele 153 de mii de linii de cod și să-i cereți să vă spună ce să reparați. Microsoft (care deține Github) lucrează deja la o unealtă "copilot" pentru Github pentru a ajuta programatorii să construiască cod. Microsoft a investit și miliarde de dolari în OpenAI, creatorii ChatGPT.

Deși serviciul ar putea fi limitat la propriile mediul de dezvoltare al Microsoft, pot vedea un viitor în care AI-ul are acces la tot codul din Github și, prin urmare, la orice proiect postezi pe Github.

De asemenea: Am rugat ChatGPT să scrie un episod scurt Star Trek. Într-adevăr, a avut succes

Dat fiind modul în care ChatGPT a identificat eroarea mea din codul pe care l-am furnizat, cu siguranță pot vedea un viitor în care programatorii pot pur și simplu să întrebe ChatGPT (sau un echivalent cu brand Microsoft) pentru a găsi și repara erori în întregi proiecte.

Și aici este locul unde aduc această conversație într-un loc foarte întunecat.

Închipuiți-vă că puteți cere ChatGPT să analizeze depozitoriul dvs. Github pentru un anumit proiect și să găsească și să repare erorile. O modalitate ar fi ca acesta să vă prezinte fiecare eroare găsită în vederea aprobării, astfel încât să puteți face corecțiile necesare.

Dar ce se întâmplă în situația în care solicitați ChatGPT să rezolve doar bug-urile și îl lăsați să o facă fără să verificați codul singur? Ar putea încorpora ceva rău în codul dumneavoastră?

De asemenea: Bard vs. ChatGPT: Poate Bard să vă ajute la codificare?

Și ce se întâmplă cu situația în care o Inteligență Artificială incredibil de capabilă are acces la aproape tot codul lumii în repo-urile Github? Ce s-ar putea ascunde în acel cod? Ce rău nociv ar putea face acea IA infrastructurii lumii dacă poate accesa întregul nostru cod?

Să jucăm un joc de gândire simplu. Ce s-ar întâmpla dacă IA ar primi prima regulă a lui Asimov ca o instrucțiune cheie. Aceea este "un robot nu trebuie să rănească un om sau prin inacțiune să permită unui om să sufere un prejudiciu". Nu ar putea decide că întregă infrastructură ne cauzează rău? Având acces la toate codurile noastre, ar putea decide pur și simplu să ne salveze de noi înșine prin inserarea de uși de acces care să îi permită, să spunem, să închidă rețeaua de alimentare cu energie, să oprească zburătoarele și să paralyzeze autostrăzile.

Sunt perfect conștient că scenariul de mai sus este hiperbolic și alarmant. Dar este și posibil. În fond și la urma urmei, în timp ce programatorii își verifică codul în Github, nu este posibil pentru oricine să vadă toate rândurile în tot codul lor.

De asemenea: Cum să folosiți ChatGPT pentru a scrie formule în Excel

În ceea ce mă privește, voi încerca să nu mă gândesc prea mult la asta. Nu vreau să-mi petrec restul anilor 2020 în poziția fetală, balansându-mă înainte și înapoi pe podea. În schimb, voi folosi ChatGPT pentru a mă ajuta ocazional să scriu și să depurez mici rutine, voi sta cu capul plecat și sper că viitoarele IA-uri nu ne vor ucide pe toți în efortul lor de a "nu permite ca un om să fie vătămat".

Vă reprezintă faptul că ChatGPT poate depista erori ca fiind util sau înfricoșător? Credeți că IA ne va ucide în somn sau credeți că ne vom privi pieirea cu ochii larg deschiși? Sau sunteți, ca mine, să încercați să nu vă gândiți prea mult la asta pentru că vă doare capul? Vorbiți-mi în comentarii mai jos. Cat încă mai puteți.

Articole asociate

Vizualizați mai multe >>

Deblocați puterea AI cu HIX.AI!