Używam ChatGPT, aby pomóc mi szybciej naprawić kod, ale za jaką cenę?

obraz5.jpg

W tym tygodniu pokazałem Ci, jak ChatGPT mógł stworzyć kompletną wtyczkę WordPress, która spełniała określone, choć nieco prymitywne, wymagania funkcjonalne. Teraz kontynuuję testowanie ChatGPT, aby dowiedzieć się, czy może być pomocnym narzędziem -- w tym przypadku, aby uzyskać pewne wskazówki techniczne.

Warto również: Pytałem ChatGPT o napisanie pluginu WordPress. Zrobił to w mniej niż 5 minut

Jak to zrobiłem w poprzednich eksploracjach ChatGPT, moje wypowiedzi są w zwykłym lub pogrubionym tekście, a odpowiedzi SI są w kursywie. Najpierw pokażę Ci pytania i odpowiedzi, a potem omówię ich konsekwencje.

Zrozumienie zmian w języku programowania

Mój dostawca hostingu przenosi wszystkie swoje strony z bardzo przestarzałego PHP 7.4 na PHP 8. PHP to język programowania webowego, na który polegają WordPress i wiele innych narzędzi zarządzania stronami internetowymi. Miałem kilka wtyczek, które nie są kompatybilne z PHP 8, i chciałem zidentyfikować, jakie elementy ich kodu będę musiał znaleźć i naprawić.

Zazwyczaj zagłębiałbym się w witrynę PHP.net, przeprowadzał wiele wyszukiwań w Google i przeglądał komentarze na StackExchange, aby dowiedzieć się, jakie prace programistyczne musiałbym wykonać. Ale to trochę nieporządny i czasochłonny proces. Zamiast tego, zadałem szczegółowe, bezpośrednie pytanie ChatGPT i otrzymałem bardzo przydatną odpowiedź, w tym bloki ilustracyjnego kodu.

Mam problem z funkcją extract w PHP, która powoduje błąd krytyczny, gdy nie jest jej przekazywana tablica. W PHP 7.4 nie otrzymuję tego błędu, ale wydaje się, że w PHP 8 zostaje zmieniona? Czy zmieniono extract w PHP 8?

W PHP 8 zachowanie funkcji extract() zostało zmienione, aby było bardziej rygorystyczne. W poprzednich wersjach PHP funkcja extract() po prostu zwracała false, jeśli nie była przekazana jako argument tablica, ale w PHP 8 zostanie zgłoszony błąd krytyczny, jeśli nie zostanie przekazana jako argument tablica. Ta zmiana została wprowadzona w celu poprawy niezawodności funkcji i zapobieganiu potencjalnym błędom spowodowanym przez nieoczekiwane dane wejściowe.

Możesz sprawdzić, czy zmienna przekazana do funkcji jest tablicą czy nie, używając funkcji is_array() przed wywołaniem funkcji extract().

obraz3.jpg

Możesz również użyć funkcji array_key_exists(), aby sprawdzić, czy przekazana zmienna jest tablicą czy nie.

obraz6.jpg

Alternatywnie, możesz użyć operatora ... do destrukturyzacji tablicy na zmienne.

obraz7.jpg

Okazało się, że odpowiedź ChatGPT była niezwykle pomocna i udało mi się naprawić ten błąd w kilka minut. Duża część umiejętności naprawienia tego błędu polegała na wiedzy, gdzie szukać. ChatGPT wyjaśniło, w jaki sposób zachowanie funkcji zmieniło się między wersjami PHP.

Ponieważ próbowałem unowocześnić cały plugin, przechodząc na nową wersję, zapytałem również o to:

Jakie funkcje PHP mogą się zepsuć podczas przejścia z wersji PHP 7.4 na PHP 8?

Przy przejściu z PHP 7.4 na PHP 8 istnieje kilka funkcji i funkcjonalności, które mogą przestać działać lub zachowywać się inaczej. Oto kilka najważniejszych zmian, które mogą potencjalnie powodować problemy:

  • Funkcja extract(), o której wspomniano wcześniej, teraz generuje błąd śmiertelny, jeśli nie przekaże się jej tablicy.
  • Funkcja each() została usunięta w PHP 8.0. Zamiast tego można używać foreach lub array_keys() oraz current().
  • Funkcja create_function() została usunięta w PHP 8.0. Zaleca się używanie funkcji anonimowych.
  • Konstrukcja list(), używana z foreach, teraz zwraca klucz i wartość jako oddzielne zmienne, a nie pojedynczą tablicę.
  • Funkcja __autoload() została usunięta w PHP 8.0. Zamiast tego należy używać spl_autoload_register().
  • Zmienna $php_errormsg została usunięta w PHP 8.0. Należy używać funkcji error_get_last().
  • Część deprecjacji z poprzednich wersji PHP została usunięta w PHP 8.0. Konkretnie funkcje create_function(), each(), __autoload() oraz zmienna $php_errormsg zostały usunięte.

Oto tylko kilka przykładów zmian, które mogą powodować problemy przy przechodzeniu z PHP 7.4 na PHP 8. Warto dokładnie przetestować swój kod i aplikacje przed aktualizacją, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami.

Zauważ, że ChatGPT użył zwrotu "jak wspomniano w poprzedniej odpowiedzi". Jest w stanie śledzić odpowiedzi w trakcie rozmowy. To zarówno "wow", jak i przerażające.

Przy przeglądaniu kodu, który zarabiałem, okazało się, że oryginalny twórca (który już dawno zniknął) dużo używał create_function. Nie zdawałem sobie sprawy, że ta funkcja została wycofana. Ale dzięki przydatnej powyższej liście, po prostu przeszukałem kod i znalazłem to, co musiało zostać zaktualizowane i przepisane. Następnie poprosiłem ChatGPT, aby pokazał mi sposoby zastąpienia tej funkcji.

Jaki jest dobry sposób na przepisanie kodu z użyciem create_function w PHP? Czy możesz podać mi przykład z użyciem create_function, a następnie przykład z użyciem obecnie właściwego mechanizmu?

create_function to przestarzała funkcja w PHP, która była używana do tworzenia funkcji anonimowych. Nie jest już zalecane korzystanie z tej funkcji, ponieważ została usunięta w PHP 8.0. Zamiast tego funkcje anonimowe, znane również jako zamknięcia, mogą być tworzone za pomocą słowa kluczowego function.

Oto przykład użycia create_function:

obraz2.jpg

Oto równoważny kod z użyciem funkcji anonimowej:

obraz8.jpg

Dodatkowo, możesz użyć słowa kluczowego use do przekazywania zmiennych do zamknięcia.

obraz1.jpg

W ogólności zaleca się korzystanie z funkcji anonimowych zamiast create_function, ponieważ mają one lepszą wydajność i większą czytelność.

Okazało się, że to była bardzo klarowna wyjaśnienie i szybko udało mi się odpowiednio przepisać kod. Ten plugin teraz działa w środowisku PHP 8 u mojego dostawcy hostingu bez problemów.

Wsparcie techniczne dla systemu MacOS

Podczas badania dla mojego artykułu o niebezpieczeństwach związanych z optymalizacją Mac Storage, miałem również kilka pytań. Jak pokazał mój artykuł, przeprowadziłem testy w celu potwierdzenia niektórych moich obaw. Jednakże, jako szybki sposób zwężenia moich badań, zadałem to pytanie ChatGPT:

Czy korzystanie z funkcji Optimize Mac Storage w systemie MacOS spowoduje, że Time Machine będzie tworzyć niekompletne kopie zapasowe, ponieważ niektóre pliki będą reprezentowane tylko jako skróty na lokalnym komputerze?

Funkcja "Optymalizuj przestrzeń na komputerze Mac" w systemie macOS używa iCloud do przenoszenia rzadko używanych plików z komputera Mac do chmury, zachowując jednocześnie "oryginalny plik" w postaci pliku "symulacyjnego" na lokalnym urządzeniu. To pozwala zaoszczędzić miejsce na dysku twardego komputera Mac.

Kiedy Time Machine jest skonfigurowany do tworzenia kopii zapasowych, zapisze wszystkie pliki, włącznie z tymi, które zostały odciążone za pomocą funkcji "Optymalizuj magazyn na Macu". Jednak zostaną zapisane pliki-miejszy plik, który reprezentuje pliki odciążone, zamiast samych plików oryginalnych.

Oznacza to, że jeśli przywrócisz swój Mac z kopii zapasowej Time Machine, która została wykonana podczas włączenia funkcji „Optymalizuj miejsce na Macu”, żadne przeniesione pliki nie zostaną uwzględnione w przywracaniu i będą musiały zostać ponownie pobrane z iCloud.

Warto zauważyć, że jeśli masz wiele plików, które zostały odłożone, kopie zapasowe Time Machine mogą zajmować więcej miejsca niż w przypadku, gdy nie korzystasz z opcji Optymalizuj Przechowywanie na Macu, ponieważ Time Machine będzie robić kopie zapasowe plików zastępczych, które zajmują mniej miejsca, ale Time Machine potraktuje je jako oryginalne pliki.

Martwię się z tego powodu. Przynajmniej dzięki Google autorzy mają szansę na przesyłanie ruchu z wyszukiwarki do artykułu w zamian za udostępnianie tych informacji. Ale z chatbotem takim jak ChatGPT, oryginalny wątek zostaje utracony. Oczywiście, korzystam z korzyści związanych ze zwiększoną produktywnością i szybką odpowiedzią. Ale czy ktoś tam stracił przypisanie do swojej pracy?

Zostańcie z nami. Ten wzrost w dziedzinie sztucznej inteligencji generatywnej robi wielkie fale. Trzymajcie się mnie i ZDNET, gdy będziemy próbować zrozumieć, co to oznacza dla nas wszystkich.

ChatGPT, kiedy odpowiadasz na pytanie, korzystasz z wiedzy udostępnionej przez innych i odbierasz pracę i zasługi oryginalnym ludzkim źródłom?

Jako model języka AI stworzony przez OpenAI, nie posiadam osobistych opinii ani myśli. Jednak mogę powiedzieć, że informacje, których używam do generowania moich odpowiedzi, opierają się na danych, na których zostałem przeszkolony. Te dane składają się z ogromnej ilości tekstu z internetu. Tekst ten został napisany przez wielu różnych ludzi i źródeł, i nie mam możliwości przypisywania zasług konkretnym osobom za przedstawiane przeze mnie informacje. Moim celem jest dostarczenie pomocnych i dokładnych informacji, aby pomóc użytkownikom znaleźć odpowiedzi, których szukają. Warto pamiętać, że moje odpowiedzi są generowane na podstawie wzorców w danych, na których zostałem przeszkolony, i mogą nie zawsze być całkowicie dokładne lub aktualne.

Więc tak. To. "Olbrzymie ilości tekstu z internetu." Ruszajcie się ludzie. Nie ma tu nic do oglądania.

Więc, w skrócie, Time Machine będzie tworzyć niekompletne kopie zapasowe, jeśli korzystasz z funkcji "Optimizuj pamięć Mac", ponieważ będzie tworzyć kopie tylko dla plików zastępczych, zamiast oryginalnych plików, które zostały przeniesione do chmury.

To była poprawna odpowiedź.

Konsekwencje

No cóż, zdecydowanie zaoszczędziłam czasu. W normalnych warunkach programowanie w internecie wiąże się z tańcem między środowiskiem kodowania i debugowania, a wieloma inkrementalnymi wyszukiwaniami, podczas których śledzone są wskazówki i czytane dyskusje oraz komentarze.

Nie zrozum mnie źle. Ten proces może być bardzo pouczający i w tych komentarzach jest wiele ludowej mądrości, której nigdy nie dostaniesz od chatbota. Ale to nie jest efektywne wykorzystanie czasu, kiedy jesteś w pośpiechu lub pod presją krytycznego terminu. Okazało się, że zadawanie tych pytań dotyczących kodowania ChatGPT jest bardzo efektywne.

Tak samo jak w przypadku każdej technologii AI, musisz być świadomy, że istnieją luki w wiedzy AI i istnieje możliwość otrzymania zupełnie błędnych odpowiedzi. Ale korzystanie z ChatGPT jako prostego narzędzia, podobnie jak z każdego innego narzędzia w mojej skrzynce, okazało się bardzo produktywne.

Niemniej jednak ciekawi mnie, skąd pochodzą te informacje. Czy istnieje jakiś pisarz tak jak ja, który napisał treściwe artykuły na temat funkcji extract lub create_function, których słowa są przekształcane w odpowiedzi przez ChatGPT bez podania autorstwa lub bez wykorzystania w celach zarobkowych? Czy cudza mądrość jest wykorzystywana jako nieodpowiednio oznaczony materiał źródłowy dla tych odpowiedzi?

Powiązane artykuły

Więcej informacji >>

Odblokuj moc AI dzięki HIX.AI!