Oké, dus ChatGPT heeft zojuist mijn code gedebugged. Serieus!

1-debugging(1).png

Dus. Programmeren. Voor mensen die voor hun werk programmeren, is het een constante mentale uitdaging: één regel code gestapeld op een andere, een toren van code bouwend waarvan je hoopt dat deze stevig genoeg is om niet in te storten.

Maar dat gebeurt altijd. Code werkt nooit de eerste keer dat het wordt uitgevoerd. En dus is een van de belangrijkste vaardigheden voor elke programmeur het debuggen - de kunst en wetenschap van het vinden waarom code niet wordt uitgevoerd of iets onverwachts of ongewenst doet.

Het is een beetje zoals een detective zijn, aanwijzingen vinden en vervolgens ontdekken wat die aanwijzingen je proberen te vertellen. Het is soms erg frustrerend en tegelijkertijd erg bevredigend.

Ik doe veel debuggen. Het is niet alleen omdat de code nooit in één keer werkt. Het is ook omdat ik de debugging gebruik om me te vertellen hoe de code wordt uitgevoerd, en vervolgens onderweg aan te passen.

Maar hoewel goed debuggen zijn eigen speciale set vaardigheden vereist, is het uiteindelijk gewoon programmeren. Zodra je hebt ontdekt waarom een bepaald codeblok niet werkt, moet je bedenken hoe je iets kunt schrijven dat wel werkt.

Echte ChatGPT-tests

Deze week werkte ik aan drie coderingstaken voor software die ik onderhoud. Twee waren oplossingen voor bugs die door gebruikers werden gemeld. Eén was een nieuwe code om een nieuwe functie toe te voegen. Dit was echt alledaags programmeerwerk voor mij. Het maakte deel uit van mijn reguliere werkschema.

Ook:Hoe werkt ChatGPT?

Ik vertel je dit omdat ik tot nu toe ChatGPT heb getest met testcode. Ik heb scenario's verzonnen om te zien hoe goed ChatGPT zou werken. Deze keer was het anders. Ik probeerde daadwerkelijk werk gedaan te krijgen en besloot te kijken of ChatGPT een nuttig hulpmiddel kon zijn om dat werk te verzetten.

Het is een andere manier om naar ChatGPT te kijken. Testscenario's zijn vaak een beetje geforceerd en simpel. In de echte wereld haal je eigenlijk een andere klantenserviceticket van de stapel en werk je door wat ervoor heeft gezorgd dat de ervaring van de gebruiker niet goed verliep.

Dus laten we eens kijken naar die taken en zien hoe ChatGPT presteerde.

Herschrijven reguliere expressie code

In codering moeten we veel patronen in tekst vinden. Om dit te doen, gebruiken we een vorm van symbolische wiskunde genaamd reguliere expressies. Ik schrijf al tientallen jaren reguliere expressies en ik heb er nog steeds een hekel aan om het te doen. Het is tijdrovend, foutgevoelig en mysterieus.

Ook:Ik gebruik ChatGPT om me te helpen code sneller te repareren, maar tegen welke prijs?

Dus toen er een bugrapport binnenkwam waarin stond dat een deel van mijn code alleen hele getallen toestond in plaats van dollars en centen (met andere woorden, een aantal cijfers, mogelijk gevolgd door een punt, en als er een punt was, gevolgd door nog twee cijfers), wist ik dat ik reguliere expressie-codering moest gebruiken.

Aangezien ik dat saai en vervelend vind, heb ik besloten om ChatGPT om hulp te vragen. Hier is wat ik gevraagd heb:

2-regex-q.jpg

En hier is het zeer goed gepresenteerde antwoord van AI (klik op het vierkantje om het te vergroten):

3-regex-a.jpg

Ik heb de code van ChatGPT in mijn functie geplaatst en het werkte. In plaats van zo'n 2-4 uur frustratie, duurde het slechts vijf minuten om de prompt te bedenken en een antwoord van ChatGPT te krijgen.

Opnieuw formatteren van een array

Vervolgens was het tijd om een array opnieuw te formatteren. Ik vind het leuk om met array-code te werken, maar het is ook tijdrovend. Dus ik heb opnieuw ChatGPT geprobeerd. Totale mislukking.

Ook:Hoe maak je ChatGPT bronnen en citaten verstrekken

Tegen de tijd dat ik klaar was, had ik er waarschijnlijk wel tien verschillende commando's aan gegeven. Sommige reacties zagen er veelbelovend uit, maar wanneer ik de code probeerde uit te voeren, trad er een fout op. Sommige code crashte. Sommige code genereerde foutcodes. En sommige code liep, maar deed niet wat ik wilde.

Na ongeveer een uur hiervan, gaf ik het op en ging ik terug naar mijn normale techniek van het doorzoeken van Github en StackExchange om te zien of er voorbeelden waren van wat ik probeerde te doen, en dan mijn eigen code te schrijven.

Tot nu toe is dat één overwinning en één verlies voor de ChatGPT-ervaring. Maar nu ga ik de uitdaging verhogen.

Daadwerkelijk de fout in mijn code vinden

OK, dus dit volgende stuk is moeilijk uit te leggen. Maar bedenk dat als het moeilijk is om het aan jou uit te leggen (waarschijnlijk een mens en geen van de ongeveer 50 bots die simpelweg mijn werk kopiëren en publiceren op frauduleuze, spammy websites), het nog uitdagender is om het aan een AI uit te leggen.

Ik was nieuwe code aan het schrijven. Ik had een functie die twee parameters gebruikte, en een aanroepende instructie die twee parameters naar mijn code stuurde. Functies zijn als zwarte doosjes die zeer specifieke functies uitvoeren en ze worden aangeroepen (gevraagd om hun magie te doen) vanuit regels code die elders in het programma worden uitgevoerd.

Het probleem was dat ik steeds een foutmelding kreeg.

Het belangrijkste deel van dat bericht is waar het zegt "1 geslaagd" op een bepaald punt en "exact 2 verwacht" op een ander punt. Ik heb naar de aanroepende instructie en de functiedefinitie gekeken en er waren op beide plaatsen twee parameters.

Ook: Hoe ChatGPT te gebruiken om een boek, artikel of onderzoeksartikel samen te vatten

W-the-ever-loving-F?

Na ongeveer vijftien minuten van diepe frustratie besloot ik het aan de AI te geven om te kijken of het kon helpen. Dus schreef ik de volgende opdracht:

4-untitled.jpg

Ik heb de regel code getoond die de oproep deed, ik heb de functie zelf getoond en ik heb de handler getoond, een klein stukje code dat de opgeroepen functie doorstuurt vanuit een haakje in mijn hoofdprogramma.

Binnen enkele seconden reageerde ChatGPT hierop met het volgende (klik op het vierkantje om te vergroten):

Fout-5-bij-het-toepassen-van-filters-in-wordpress.jpg

Gewoon zoals voorgesteld, heb ik de vierde parameter van de add_filter() functie bijgewerkt naar 2, en het werkte!

ChatGPT heeft segmenten code genomen, deze geanalyseerd en mij een diagnose gegeven. Om duidelijk te zijn, om zijn aanbeveling te kunnen doen, moest het de interne werking begrijpen van hoe WordPress omgaat met hooks (dat is wat de add_filter functie doet) en hoe die functionaliteit zich vertaalt naar het gedrag van de oproepende en uitvoerende regels code.

Ook: Ik vroeg ChatGPT om een WordPress-plugin te schrijven die ik nodig had. Het deed het in minder dan 5 minuten

Ik moet dat als ongelooflijk markeren, onbetwistbaar "leven in de toekomst" ongelooflijk.

Wat betekent het allemaal?

Zoals ik eerder al heb vermeld, is debuggen een mix van kunst en wetenschap. De meeste goede ontwikkelomgevingen bevatten krachtige debugtools waarmee je de stroom van gegevens door het programma kunt bekijken terwijl het draait, en dit kan helpen bij het opsporen van bugs.

Ook: deze experts zijn in een race om AI te beschermen tegen hackers

Maar als je vastzit, is het vaak moeilijk om hulp te krijgen. Dat komt omdat zelfs een naaste collega mogelijk niet bekend is met de volledige omvang van de code die je aan het debuggen bent. Het programma waar ik aan werk bestaat uit 153.259 regels code verspreid over 563 bestanden -- en qua programma's is dat klein.

Dus, als ik hulp had willen vragen aan een collega, had ik vrijwel dezelfde aanvraag moeten opstellen als hoe ik het naar ChatGPT stuurde.

Maar hier is iets om te overwegen: Ik herinnerde me om de handler-regel op te nemen, ook al realiseerde ik me niet dat daar de fout zat. Als test probeerde ik ook aan ChatGPT te vragen om mijn probleem te diagnosticeren in een prompt waar ik de handler-regel niet had opgenomen, en het kon me niet helpen. Dus er zijn zeker beperkingen aan wat ChatGPT op dit moment, in 2023, kan doen voor het oplossen van problemen.

Ook: De beste AI chatbots om te proberen

Allereerst moet je weten hoe je de juiste vragen op de juiste manier moet stellen. Die vragen moeten beknopt genoeg zijn zodat ChatGPT het in één query kan verwerken. Dat is iets dat daadwerkelijke programmeerkennis en ervaring vereist om te weten hoe je dat moet doen.

Zou ik de bug zelf hebben kunnen oplossen? Natuurlijk. Ik heb nog nooit een bug gehad die ik niet kon oplossen. Maar of het nu twee uur of twee dagen (plus pizza, vloeken en veel cafeïne) zou hebben gekost, terwijl ik vele onderbrekingen moest doorstaan, dat weet ik niet. Ik kan je vertellen dat ChatGPT het in enkele minuten heeft opgelost, waardoor ik veel tijd en frustratie heb bespaard.

Kijkend naar de (mogelijk dystopische) toekomst

Ik zie een zeer interessante toekomst, waarin het mogelijk zal zijn om ChatGPT alle 153 duizend regels code te voeren en het te vragen wat er moet worden verbeterd. Microsoft (dat eigenaar is van Github) werkt al aan een "copilot" tool voor Github om programmeurs te helpen code te bouwen. Microsoft heeft ook miljarden dollars geïnvesteerd in OpenAI, de makers van ChatGPT.

Hoewel de service momenteel beperkt kan zijn tot Microsoft's eigen ontwikkelomgevingen, kan ik mij voorstellen dat er in de toekomst een situatie ontstaat waarin de AI toegang heeft tot alle code in Github, en dus ook alle code in elk project dat je naar Github uploadt.

Ook: Ik vroeg ChatGPT om een ​​korte aflevering van Star Trek te schrijven. Het is eigenlijk gelukt

Gezien hoe goed ChatGPT mijn fout heeft geïdentificeerd aan de hand van de code die ik heb verstrekt, kan ik zeker een toekomst zien waar programmeurs eenvoudigweg ChatGPT (of een equivalent van Microsoft) kunnen vragen om bugs op te sporen en te verhelpen in volledige projecten.

En hier ga ik dit gesprek naar een zeer duistere plek brengen.

Stel je voor dat je ChatGPT kunt vragen om naar je Github-opslagplaats te kijken voor een bepaald project en het bugs laat vinden en oplossen. Een manier zou kunnen zijn dat het elke bug die het vindt aan je presenteert ter goedkeuring, zodat jij de correcties kunt maken.

Maar hoe zit het met de situatie waarin je aan ChatGPT vraagt om gewoon de bugs op te lossen en je het laat doen zonder zelf naar de code te kijken? Zou het iets vervelends in je code kunnen insluiten?

Ook: Bard vs. ChatGPT: Kan Bard je helpen met coderen?

En wat te denken van de situatie waarin een buitengewoon capabele AI toegang heeft tot bijna alle code ter wereld in de Github-repositories? Wat zou het in al die code kunnen verbergen? Welk kwaad kan die AI toebrengen aan de infrastructuur van de wereld als het toegang heeft tot al onze code?

Laten we een eenvoudig gedachte-experiment spelen. Wat als de AI Asimov's eerste regel als belangrijke instructie kreeg? Dat is dat een "robot een mens niet mag schaden, of door niet te handelen toestaan dat een mens schade ondervindt." Zou het dan niet kunnen besluiten dat al onze infrastructuur ons schade berokkent? Door toegang te hebben tot al onze code, zou het eenvoudig kunnen beslissen ons te redden door achterdeuren in te voegen die het bijvoorbeeld in staat stellen om de stroomvoorziening uit te schakelen, vliegtuigen aan de grond te houden en snelwegen te blokkeren.

Ik ben me er volledig van bewust dat het bovenstaande scenario overdreven en alarmerend is. Maar het is ook mogelijk. Immers, hoewel programmeurs naar hun code kijken in Github, is het niet mogelijk voor iedereen om naar alle regels in al hun code te kijken.

Ook: Hoe ChatGPT te gebruiken om Excel-formules te schrijven

Wat mij betreft, ga ik proberen er niet te veel over na te denken. Ik wil niet de rest van de jaren 2020 doorbrengen in foetushouding heen en weer wiegend op de vloer. In plaats daarvan zal ik ChatGPT gebruiken om me af en toe te helpen bij het schrijven en debuggen van kleine routines, mijn hoofd laag houden en hopen dat toekomstige AI's ons niet allemaal doden in hun inspanningen om "te voorkomen dat een mens schade oploopt".

Vind je het feit dat ChatGPT behulpzaam of angstaanjagend kan debuggen? Denk je dat AI ons in onze slaap zal vermoorden, of denk je dat we met wijd open ogen onze ondergang zullen aanschouwen? Of ga je, net als ik, proberen er niet te veel aan te denken omdat het je hoofdpijn bezorgt? Praat met me in de reacties hieronder. Zolang het nog kan.

Gerelateerde Artikelen

Bekijk meer >>

Ontgrendel de kracht van AI met HIX.AI!