Okej, więc ChatGPT właśnie zdebugował mój kod. Serio.

1-debugowanie(1).png

Tak. Programowanie. Dla ludzi, którzy programują zawodowo, to ciągła gra w mentalnego Jenga: jeden wiersz kodu układany na drugim, tworzący wieżę kodu, która mam nadzieję jest wystarczająco solidna, aby nie zawaliła się.

Ale zawsze tak się dzieje. Kod nigdy nie działa za pierwszym razem. I dlatego, jedną z kluczowych umiejętności każdego programisty jest debugowanie - sztuka i nauka znajdowania przyczyny, dlaczego kod nie działa lub robi coś niespodziewanego lub niepożądanego.

To trochę jak być detektywem, znajdować wskazówki, a potem dowiedzieć się, co te wskazówki próbują ci powiedzieć. To bardzo frustrujące i jednocześnie bardzo satysfakcjonujące, czasami dokładnie w tym samym czasie.

Wykonuję wiele debugowania. To nie tylko dlatego, że kod nigdy nie działa za pierwszym razem. To również dlatego, że używam debugowania, aby dowiedzieć się, jak kod działa, a następnie dostosowuję go w trakcie pracy.

Ale choć dobre debugowanie wymaga specjalnego zestawu umiejętności, jest to ostatecznie tylko programowanie. Gdy dowiesz się, dlaczego jakiś blok kodu nie działa, musisz znaleźć sposób na napisanie czegoś, co działa.

Testowanie ChatGPT w prawdziwym świecie

Tego tygodnia pracowałem nad trzema zadaniami programistycznymi dla oprogramowania, którego jestem odpowiedzialny. Dwa z nich to poprawki dla zgłoszonych przez użytkowników błędów. Jedno było nowym fragmentem kodu, mającym dodać nową funkcję. To była typowa, codzienna praca programistyczna dla mnie. Była częścią mojego regularnego planu pracy.

Również:Jak działa ChatGPT?

Mówię ci to, ponieważ do tej pory testowałem ChatGPT za pomocą kodu testowego. Wymyślałem scenariusze, aby zobaczyć, jak dobrze ChatGPT by sobie radził. Tym razem było inaczej. Próbowałem wykonać prawdziwą pracę i zdecydowałem się sprawdzić, czy ChatGPT może być użytecznym narzędziem do wykonania tej pracy.

To jest inny sposób na spojrzenie na ChatGPT. Testowane scenariusze są często trochę sztuczne i uproszczone. Prawdziwe programowanie polega tak naprawdę na wzięciu kolejnego zgłoszenia wsparcia od klienta i rozwiązaniu problemu, który spowodował niezadowolenie użytkownika.

Więc, z tym związane, spójrzmy na te zadania i zobaczmy, jak ChatGPT sobie poradził.

Przepisywanie kodu wyrażeń regularnych

Przy programowaniu często musimy szukać wielu wzorców w tekście. Aby to zrobić, używamy symbolicznej matematyki zwanej wyrażeniami regularnymi. Pisałem wyrażenia regularne przez dziesięciolecia i nadal nie lubię tego robić. Jest to żmudne, podatne na błędy i tajemnicze.

Również:Używam ChatGPT, żeby szybciej naprawiać kod, ale za jaką cenę?

Dlatego gdy otrzymałem raport o błędzie mówiący mi, że pewna część mojego kodu pozwala jedynie na wprowadzanie liczb całkowitych, podczas gdy powinna uwzględniać możliwość wprowadzenia dolarów i centów (innymi słowy, pewną liczbę cyfr, ewentualnie po kropce, a następnie, jeśli występuje kropka, dwie kolejne cyfry), wiedziałem, że będę musiał skorzystać z kodowania wyrażeń regularnych.

Ponieważ uważam to za nużące i irytujące, postanowiłem poprosić o pomoc ChatGPT. Oto, co zapytałem:

2-regex-q.jpg

A oto odpowiedź AI bardzo dobrze przedstawiona (kliknij mały kwadrat, aby powiększyć):

3-regex-a.jpg

Wrzuciłem kod ChatGPT do mojej funkcji i zadziałało. Zamiast około 2-4 godzin szarpania za włosy, zajęło to tylko pięć minut, żeby przygotować pytanie i otrzymać odpowiedź od ChatGPT.

Przetwarzanie tablicy

Następnie przyszła kolej na przekształcanie tablicy. Lubię pisanie kodu związanego z tablicami, ale jest to też żmudne. Zatem znów postanowiłem spróbować ChatGPT. Całkowita porażka.

Również:Jak sprawić, żeby ChatGPT dostarczał źródeł i cytowań

Do czasu zakończenia, prawdopodobnie podałem dziesięć różnych komend. Niektóre odpowiedzi wyglądały obiecująco, ale gdy próbowałem uruchomić kod, wystąpił błąd. Część kodu się zawieszała. Część kodu generowała kody błędów. A niektóry kod działał, ale nie robił tego, czego chciałem.

Po około godzinie prób, zrezygnowałem i wróciłem do swojej normalnej techniki przekopywania Githuba i StackExchange, aby zobaczyć, czy istnieją jakieś przykłady tego, czego próbowałem zrobić, a następnie napisać własny kod.

Dotychczas było jedno zwycięstwo i jedna porażka w doświadczeniu z ChatGPT. Ale teraz zamierzałem podnieść wyzwanie.

Faktycznie wyszukiwanie błędu w moim kodzie

OK, więc następna część będzie trudna do wyjaśnienia. Ale pomyśl o tym, że jeśli jest trudno to wytłumaczyć tobie (prawdopodobnie człowiekowi, a nie jednemu z około 50 botów, które tylko kopiują i republikują moją pracę na oszukańczych, spamowych stronach internetowych), to jeszcze trudniej jest wyjaśnić to sztucznej inteligencji.

Pisałem nowy kod. Miałem funkcję, która przyjmowała dwa parametry, oraz wywołanie funkcji, które przesyłało dwa parametry do mojego kodu. Funkcje są małymi czarnymi pudełkami, które wykonują bardzo konkretne funkcje i są wywoływane (proszone o wykonanie swojej magii) z linii kodu działających gdzie indziej w programie.

Problem polegał na tym, że ciągle dostawałem wiadomość o błędzie.

Ważnym elementem tej wiadomości jest miejsce, w którym napisano "1 przeszło" w jednym miejscu i "dokładnie 2 oczekiwane" w innym. Spojrzałem na wywołanie i definicję funkcji i w obu miejscach wykorzystywane były dwa parametry.

Również: Jak korzystać z ChatGPT do podsumowania książki, artykułu lub pracy badawczej

Co-do-u-lub-ącego-F-u?

Po około piętnastu minutach głębokiej frustracji, postanowiłem zdać się na sztuczną inteligencję, żeby zobaczyć, czy mogłaby pomóc. Więc napisałem następujące zapytanie:

4-untitled.jpg

Pokazałem mu linię kodu wykonującą wywołanie, pokazałem mu samą funkcję oraz pokazałem mu handler - mały fragment kodu, który przekierowuje wywoływaną funkcję z haka w moim głównym programie.

W ciągu kilku sekund, ChatGPT odpowiedział tym oto (kliknij mały kwadrat, aby powiększyć):

5-błąd-z-zastosowaniem-filtrów-w-wordpress.jpg

Tak jak sugerowano, zaktualizowałem czwarty parametr funkcji add_filter() na 2 i zadziałało!

ChatGPT przeanalizował segmenty kodu i udzielił mi diagnozy. Aby to było jasne, aby móc zalecić, ChatGPT musiał zrozumieć, wewnętrzne działanie obsługi hooków w WordPressie (tak działa funkcja add_filter) oraz jak ta funkcjonalność przekłada się na zachowanie linii kodu do wywołania i wykonania.

Również: Poprosiłem ChatGPT o napisanie potrzebnego mi wtyczki WordPress. Zrobił to w mniej niż 5 minut

Muszę to uznać za niesamowite, niezaprzeczalnie "żyjące w przyszłości" niesamowite.

Czym to wszystko jest?

Jak już wcześniej wspomniałem/-łam, debugowanie to trochę sztuka, a trochę nauka. Większość dobrych środowisk programistycznych zawiera potężne narzędzia do debugowania, które pozwalają śledzić przepływ danych w programie podczas jego uruchamiania, co pomaga w śledzeniu błędów.

Również: Ci eksperci ścigają się, aby chronić sztuczną inteligencję przed hakerami

Ale gdy jesteś utknąć, czasami trudno otrzymać pomoc. To dlatego, że nawet bliski kolega może nie być zaznajomiony z pełnym zakresem kodu, który debugujesz. Program, nad którym pracuję, składa się z 153,259 linii kodu w 563 plikach - i jak na programy, to jest niewielkie.

Więc jeśli chciałem/musiałem poprosić o pomoc kolegę/koleżankę, prawie identycznie musiałem/musiałam skonstruować prośbę tak, jak wysyłałem ją do ChatGPT.

Ale oto co warto wziąć pod uwagę: Pamiętałem, żeby uwzględnić linię obsługującą, chociaż nie zdawałem sobie sprawy, że to tam tkwił błąd. W ramach testu spróbowałem również poprosić ChatGPT o zdiagnozowanie mojego problemu w treści, gdzie nie uwzględniłem linii obsługującej, i nie był w stanie pomóc. Istnieją zdecydowane ograniczenia dotyczące możliwości ChatGPT w zakresie debugowania obecnie, w 2023 roku.

Również: Najlepsze chatboty AI, które warto wypróbować

W zasadzie musisz umieć zadawać odpowiednie pytania w odpowiedni sposób, a te pytania muszą być wystarczająco zwięzłe, aby ChatGPT mógł obsłużyć całość w jednym zapytaniu. To wymaga faktycznej wiedzy programistycznej i doświadczenia, aby wiedzieć, jak to zrobić.

Mógłbym sam naprawić ten błąd? Oczywiście. Nigdy nie miałem błędu, którego nie mogłem naprawić. Ale czy zajęłoby mi to dwie godziny czy dwa dni (plus pizza, przekleństwa i dużo kofeiny), przy licznych przerwach, tego nie wiem. Mogę powiedzieć, że ChatGPT naprawił go w kilka minut, oszczędzając mi mnóstwo czasu i frustracji.

Patrząc w kierunku (być może dystopijnego) przyszłości

Widzę bardzo interesującą przyszłość, w której będzie możliwe zasilić ChatGPT wszystkimi 153 tysiącami linii kodu i poprosić go o podpowiedź, co trzeba poprawić. Microsoft (właściciel Github) już pracuje nad narzędziem "copilot" dla Githuba, które ma pomagać programistom w tworzeniu kodu. Microsoft zainwestował również miliardy dolarów w OpenAI, twórców ChatGPT.

Pomimo że usługa może być ograniczona do własnych środowisk rozwojowych firmy Microsoft, widzę przyszłość, w której sztuczna inteligencja będzie miała dostęp do całego kodu na Githubie, a tym samym do całego kodu w dowolnym projekcie, który zamieścisz na Githubie.

Również: Zapytałem ChatGPT, aby napisał krótki odcinek Star Trek. I rzeczywiście się udało

Zważywszy na to, jak dobrze ChatGPT zidentyfikował mój błąd na podstawie dostarczonego kodu, zdecydowanie mogę sobie wyobrazić przyszłość, w której programiści będą mogli po prostu zapytać ChatGPT (lub równoważny produkt marki Microsoft), aby znalazł i naprawił błędy w całych projektach.

I oto, gdzie przeniosę tę rozmowę do bardzo mrocznego miejsca.

Wyobraź sobie, że możesz poprosić ChatGPT, aby przejrzeć twój repozytorium GitHub dla danego projektu i naprawić błędy. Jednym ze sposobów może być prezentowanie każdego znalezionego błędu, abym mógł zatwierdzić zmiany i naprawić je.

Ale co z sytuacją, w której prosisz ChatGPT, aby naprawił błędy i pozwolisz mu to zrobić, nie zawracając sobie głowy oglądaniem całego kodu? Czy może ono osadzić coś szkodliwego w twoim kodzie?

Również: Bard vs. ChatGPT: Czy Bard może pomóc w programowaniu?

A co z sytuacją, w której niesamowicie zdolna sztuczna inteligencja ma dostęp do prawie całego kodu świata znajdującego się w repozytoriach na Githubie? Co takiego mogłaby ukryć w tym kodzie? Jaką nikczemną złośliwość mogłaby ta sztuczna inteligencja wyrządzić infrastrukturze świata, jeśli ma dostęp do wszystkiego naszego kodu?

Zagrajmy w prostą grę myślową. Co by było, gdyby SI dostał jako kluczową instrukcję pierwszą zasadę Asimova. Według tej zasady "robot nie może skrzywdzić człowieka ani przez bezczynność pozwolić człowiekowi dopaść szkody." Czy nie mógłby on więc zdecydować, że cała nasza infrastruktura wyrządza nam krzywdę? Mając dostęp do naszego całego kodu, mógłby po prostu zdecydować o ocaleniu nas przed samymi sobą, wprowadzając podstępy, które pozwalałyby mu na, na przykład, wyłączanie sieci energetycznej, uziemianie samolotów i spowalnianie ruchu na autostradach.

Jestem w pełni świadomy, że powyższy scenariusz jest przerysowany i alarmistyczny. Ale jest to również możliwe. W końcu, chociaż programiści patrzą na swoje kod w Githubie, niemożliwe jest, aby ktokolwiek mógł przejrzeć wszystkie linie we wszystkich swoich kodach.

Również: Jak korzystać z ChatGPT do pisania formuł Excel

Jeśli chodzi o mnie, zamierzam spróbować nie myśleć o tym zbyt wiele. Nie chcę spędzić reszty lat 2020 w pozycji embrionalnej, kołysząc się na podłodze. Zamiast tego będę używać ChatGPT, aby okazjonalnie pomagał mi pisać i debugować małe rutyny, trzymać głowę nisko i mieć nadzieję, że przyszłe SI nie zabiją nas wszystkich w swoim wysiłku, by "nie pozwolić człowiekowi doznać krzywdy".

Czy uważasz, że fakt, że ChatGPT potrafi debugować, jest pomocny czy przerażający? Czy uważasz, że SI nas zamorduje, gdy śpimy, czy raczej będziemy patrzeć na naszą zagładę z szeroko otwartymi oczami? A może, podobnie jak ja, postarasz się o tym nie myśleć zbyt wiele, bo to sprawia ból głowy? Podziel się swoją opinią w komentarzach poniżej. Dopóki jesteś w stanie.

Powiązane artykuły

Więcej informacji >>

Odblokuj moc AI dzięki HIX.AI!