U redu, ChatGPT je upravo otklonio pogreške u mom kodu. Stvarno.

  • Sep 03, 2023

Ne samo da ChatGPT može pisati kod, već može i čitati kod. S jedne strane, to je vrlo korisno. S druge strane, to je zaista zastrašujuće.

otklanjanje pogrešaka
David Gewirtz/ZDNET

Tako. Programiranje. Za ljude koji zarađuju za život od programiranja, to je stalna igra mentalne Jenge: jedna linija koda naslagana na drugu, gradeći kulu od koda za koju se nadate da je dovoljno čvrsta da se ne sruši.

Ali uvijek bude. Kôd nikada ne radi prvi put kada se pokrene. I tako, jedna od ključnih vještina svakog programera je otklanjanje pogrešaka -- umjetnost i znanost pronalaženja zašto se kod ne izvodi ili radi nešto neočekivano ili nepoželjno.

Također:Kako koristiti ChatGPT za pisanje koda

To je poput detektiva, pronalaženja tragova, a zatim otkrivanja što vam ti tragovi pokušavaju reći. To je vrlo frustrirajuće i vrlo zadovoljavajuće, ponekad u točno isto vrijeme.

Puno otklanjam pogreške. Nije samo zato što kôd nikada ne radi prvi put kada se pokrene. To je također zato što koristim otklanjanje pogrešaka da mi kaže kako se kôd izvodi, a zatim ga usput podešavam.

Ali dok dobro otklanjanje pogrešaka zahtijeva vlastiti skup posebnih vještina, to je u konačnici samo programiranje. Jednom kada saznate zašto neki blok koda ne radi, morate smisliti kako napisati nešto što radi.

ChatGPT testiranje u stvarnom svijetu

Ovaj tjedan sam radio na tri zadatka kodiranja za softver koji održavam. Dva su bila ispravci grešaka koje su prijavili korisnici. Jedan je bio novi dio koda za dodavanje nove značajke. Ovo je za mene bio pravi, uobičajen programski posao. Bio je to dio mog redovnog radnog rasporeda.

Također: Kako funkcionira ChatGPT?

To ti govorim jer sam do sada testirao ChatGPT s testnim kodom. Izmislio sam scenarije da vidim koliko bi ChatGPT dobro funkcionirao. Ovaj put je bilo drugačije. Pokušavao sam obaviti pravi posao i odlučio sam vidjeti može li ChatGPT biti koristan alat za obavljanje tog posla.

To je drugačiji način gledanja na ChatGPT. Testni scenariji često su pomalo izmišljeni i pojednostavljeni. Kodiranje u stvarnom svijetu zapravo je izvlačenje još jednog tiketa za korisničku podršku sa hrpe i rad na onome što je korisničko iskustvo otišlo naopako.

Dakle, uz to, pogledajmo te zadatke i vidimo kako se ChatGPT izvodi.

Ponovno pisanje koda regularnog izraza

U kodiranju moramo pronaći mnogo obrazaca u tekstu. Da bismo to učinili, koristimo oblik simboličke matematike koji se zove regularni izrazi. Desetljećima pišem ustaljene izraze, ali još uvijek to ne volim raditi. Zamoran je, sklon pogreškama i tajanstven.

Također:Koristim ChatGPT da mi pomogne brže popraviti kôd, ali po koju cijenu?

Dakle, kada je stiglo izvješće o pogrešci u kojem mi se govori da dio mog koda dopušta samo cijele brojeve kada bi trebao dopuštati dolare i cente (drugim riječima, određeni broj znamenki, nakon kojih možda slijedi točka, a zatim, ako postoji točka, nakon koje slijede još dvije znamenke), znao sam da ću morati upotrijebiti regularni izraz kodiranje.

Budući da mi je to dosadno i dosadno, odlučio sam zatražiti pomoć od ChatGPT-a. Evo što sam pitao:

Snimak zaslona David Gewirtz/ZDNET

A evo vrlo dobro predstavljenog odgovora umjetne inteligencije (kliknite kvadratić za povećanje):

Snimak zaslona David Gewirtz/ZDNET

Ubacio sam ChatGPT kod u svoju funkciju i radio je. Umjesto otprilike 2-4 sata čupanja kose, trebalo je oko pet minuta da se dođe do upita i dobije odgovor od ChatGPT-a.

Ponovno formatiranje niza

Sljedeće je bilo ponovno formatiranje niza. Volim raditi niz kodova, ali to je i zamorno. Pa sam još jednom probao ChatGPT. Totalni promašaj.

Također: Kako natjerati ChatGPT da pruža izvore i citate

Dok sam završio, vjerojatno sam mu dao deset različitih upita. Neki su odgovori izgledali obećavajuće, ali kad sam pokušao pokrenuti kod, došlo je do pogreške. Neki kod se srušio. Neki su kodovi generirali kodove pogrešaka. I neki kod se pokrenuo, ali nije učinio ono što sam želio.

Nakon otprilike sat vremena toga, odustao sam i vratio se svojoj normalnoj tehnici kopanja po Githubu i StackExchange da vidim ima li primjera onoga što sam pokušavao učiniti, a zatim sam napisao svoje kodirati.

Do sada je to jedna pobjeda i jedan poraz za ChatGPT iskustvo. Ali sada sam namjeravao prihvatiti izazov.

Zapravo sam pronašao grešku u svom kodu

U redu, ovaj sljedeći dio bit će teško objasniti. Ali razmislite o činjenici da ako vam je teško objasniti (vjerojatno čovjeku, a ne jednom od 50-ak botova koji samo kopiraju i ponovno objavljuju moj rad na prijevarnim, spam web stranicama), još je veći izazov to objasniti AI.

Također: Što je GPT-4? Ovdje je sve što trebate znati

Pisao sam novi kod. Imao sam funkciju koja je uzela dva parametra i pozivnu naredbu koja je poslala dva parametra mom kodu. Funkcije su male crne kutije koje izvode vrlo specifične funkcije i pozivaju se (od njih se traži da učine svoju magiju) iz redaka koda koji se izvode negdje drugdje u programu.

Problem je bio u tome što sam stalno dobivao poruku o pogrešci.

Istaknuti dio te poruke je mjesto gdje u jednom trenutku stoji "1 prošao", au drugom "točno 2 očekivano". Pogledao sam naredbu pozivanja i definiciju funkcije i na oba su mjesta bila dva parametra.

Također:Kako koristiti ChatGPT za sažetak knjige, članka ili znanstvenog rada

W-the-ever-loving-F?

Nakon otprilike petnaest minuta duboke frustracije, odlučio sam to baciti AI-ju da vidim može li pomoći. Dakle, napisao sam sljedeći upit:

Snimak zaslona David Gewirtz/ZDNET

Pokazao sam mu redak koda koji je izvršio poziv, pokazao sam mu samu funkciju i pokazao sam mu rukovatelj, mali dio koda koji šalje pozvanu funkciju iz kuke u mom glavnom programu.

U roku od nekoliko sekundi, ChatGPT je odgovorio ovime (kliknite kvadratić za povećanje):

Snimak zaslona David Gewirtz/ZDNET

Kao što je sugerirano, ažurirao sam četvrti parametar funkcije add_filter() na 2 i uspjelo je!

ChatGPT je uzeo segmente koda, analizirao te segmente i dao mi dijagnozu. Da bude jasno, da bi dao svoju preporuku, morao je razumjeti unutarnje elemente kako WordPress obrađuje kuke (to je ono što funkcija add_filter radi) i kako se ta funkcija prevodi na ponašanje pozivne i izvršne linije koda.

Također: Zamolio sam ChatGPT da napiše dodatak za WordPress koji mi treba. Uspio je to za manje od 5 minuta

Moram to označiti kao nevjerojatno, neporecivo "živjeti u budućnosti" nevjerojatno.

Što to sve znači?

Kao što sam ranije spomenuo, otklanjanje pogrešaka pomalo je umjetnost, a pomalo znanost. Većina dobrih razvojnih okruženja uključuje moćne alate za otklanjanje pogrešaka koji vam omogućuju da vidite tijek podataka kroz program dok se izvodi, a to pomaže kada pokušavate pronaći pogreške.

Također: Ovi se stručnjaci utrkuju kako bi zaštitili AI od hakera

Ali kad ste zapeli, često je teško dobiti pomoć. To je zato što čak ni bliski kolega možda nije upoznat s punim opsegom koda koji ispravljate. Program na kojem radim sastoji se od 153 259 redaka koda u 563 datoteke -- a što se tiče programa, to je malo.

Dakle, da sam želio dobiti pomoć od kolege, možda bih morao konstruirati zahtjev gotovo identično onome kako sam ga poslao ChatGPT-u.

Ali evo nešto o čemu treba razmisliti: sjetio sam se uključiti liniju rukovatelja iako nisam znao da je tu pogreška. Kao test, također sam pokušao zatražiti od ChatGPT-a da dijagnosticira moj problem u upitu gdje nisam uključio liniju rukovatelja, i nije mogao pomoći. Dakle, postoje vrlo jasna ograničenja onoga što ChatGPT može učiniti za otklanjanje pogrešaka upravo sada, 2023. godine.

Također:Najbolji AI chatbotovi koje možete isprobati

U suštini, morate znati kako postaviti prava pitanja na pravi način, a ta pitanja moraju biti dovoljno koncizna da ChatGPT može riješiti cijelu stvar u jednom upitu. To je nešto što zahtijeva stvarno programersko znanje i iskustvo da biste znali kako to učiniti.

Jesam li mogao sam popraviti grešku? Naravno. Nikada nisam imao grešku koju nisam mogao popraviti. Ali je li to trajalo dva sata ili dva dana (plus pizza, vulgarnost i puno kofeina) uz mnogo prekida, to je nešto što ne znam. Mogu vam reći da je ChatGPT to popravio u nekoliko minuta, uštedivši mi gomilu vremena i frustracija.

Pogled prema (možda distopijskoj) budućnosti

Vidim vrlo zanimljivu budućnost, u kojoj će biti moguće nahraniti ChatGPT sa svih 153 tisuće linija koda i tražiti od njega da vam kaže što da popravite. Microsoft (koji posjeduje Github) jest već radi na "copilot" alatu za Github pomoći programerima u izradi koda. Microsoft je također uložio milijarde dolara u OpenAI-u, tvorcima ChatGPT-a.

Iako bi usluga mogla biti ograničena na Microsoftova vlastita razvojna okruženja, vidim budućnost gdje AI ima pristup svom kodu u Githubu, a time i svom kodu u bilo kojem projektu na kojem objavljujete Github.

Također:Zamolio sam ChatGPT da napiše kratku epizodu Zvjezdanih staza. Zapravo je uspjelo

S obzirom na to koliko je ChatGPT dobro identificirao moju pogrešku iz koda koji sam dao, definitivno mogu vidjeti budućnost gdje programeri mogu jednostavno zatražiti od ChatGPT-a (ili ekvivalenta marke Microsoft) da pronađe i popravi pogreške u cijelom projekti.

I evo gdje ovaj razgovor vodim na vrlo mračno mjesto.

Zamislite da možete zatražiti od ChatGPT-a da pogleda vaše Github repozitorij za određeni projekt i zatraži da pronađe i ispravi greške. Jedan od načina mogao bi biti da vam svaku grešku koju pronađe predstavi na odobrenje, tako da možete izvršiti popravke.

Ali što je sa situacijom u kojoj tražite od ChatGPT-a da samo popravi bugove, a vi mu to dopustite bez da se potrudite sami pogledati sav kod? Može li ugraditi nešto gadno u vaš kod?

Također:Bard vs. ChatGPT: Može li vam Bard pomoći kodirati?

A što je sa situacijom u kojoj nevjerojatno sposoban AI ima pristup gotovo svim svjetskim kodovima u Github repozitoriju? Što bi moglo skrivati ​​u svom tom kodu? Kakvo bi opako zlo ta umjetna inteligencija mogla učiniti svjetskoj infrastrukturi ako može pristupiti cijelom našem kodu?

Igrajmo jednostavnu misaonu igru. Što ako je AI dana Asimovljevo prvo pravilo kao ključnu uputu. To je "robot ne smije ozlijediti čovjeka, niti nedjelovanjem dopustiti da čovjek bude ozlijeđen." Zar nije moglo odlučiti da nam sva naša infrastruktura nanosi štetu? Imajući pristup cijelom našem kodu, mogao bi nas jednostavno odlučiti spasiti od nas samih umetanjem stražnjih vrata koja su mu omogućila da, recimo, isključi strujnu mrežu, prizemne ravnine i blokira autoceste.

Potpuno sam svjestan da je gornji scenarij hiperboličan i alarmantan. Ali i to je moguće. Uostalom, iako programeri gledaju svoj kod na Githubu, nije moguće da bilo tko pogleda sve retke u svom kodu.

Također:Kako koristiti ChatGPT za pisanje Excel formula

Što se mene tiče, nastojat ću ne razmišljati previše o tome. Ne želim ostatak 2020-ih provesti u fetalnom položaju ljuljajući se naprijed-natrag na podu. Umjesto toga, koristit ću ChatGPT da mi povremeno pomogne u pisanju i otklanjanju pogrešaka malih rutina, da budem spušten i nadam se da nas buduće umjetne inteligencije neće sve ubiti u njihovom nastojanju da "ne dopuste čovjeku da strada".

Smatrate li da je činjenica da ChatGPT može ispravljati pogreške korisna ili zastrašujuća? Mislite li da će nas umjetna inteligencija ubiti u snu ili mislite da ćemo gledati svoju propast širom otvorenih očiju? Ili ćeš, poput mene, pokušati ne razmišljati previše o tome jer te od toga boli glava? Razgovarajte sa mnom u komentarima ispod. Dok još možete.


Možete pratiti moja svakodnevna ažuriranja projekta na društvenim mrežama. Svakako me pratite na Twitteru na @DavidGewirtz, na Facebooku na Facebook.com/DavidGewirtz, na Instagramu na Instagram.com/DavidGewirtz, i na YouTubeu na YouTube.com/DavidGewirtzTV.

Vidi također

Kako koristiti ChatGPT za pisanje Excel formula
Kako koristiti ChatGPT za pisanje koda
ChatGPT vs. Bing Chat: Koji AI chatbot trebate koristiti?
Kako koristiti ChatGPT za izradu životopisa
Kako funkcionira ChatGPT?
Kako početi koristiti ChatGPT
  • Kako koristiti ChatGPT za pisanje Excel formula
  • Kako koristiti ChatGPT za pisanje koda
  • ChatGPT vs. Bing Chat: Koji AI chatbot trebate koristiti?
  • Kako koristiti ChatGPT za izradu životopisa
  • Kako funkcionira ChatGPT?
  • Kako početi koristiti ChatGPT