Používám ChatGPT, aby mi pomohl opravovat kód rychleji, ale za jakou cenu?

obraz5.jpg

Dříve v tomto týdnu jsem vám ukázal, jak ChatGPT může vytvořit celý WordPress plugin splňující konkrétní, i když poněkud základní, funkční požadavek. Nyní pokračuji ve svém testování ChatGPT, abych zjistil, jestli mi může být užitečným nástrojem - tentokrát pro získání technického poradenství.

Také: Požádal jsem ChatGPT, aby napsal WordPress plugin. Udělal to za méně než 5 minut

Jak jsem již udělal při předchozích průzkumech ChatGPT, mé texty jsou v běžném nebo tučném písmu a odpovědi AI jsou v kurzívě. Nejprve vám ukážu otázky a odpovědi a potom budu diskutovat o důsledcích.

Rozumění změnám programovacího jazyka

Můj poskytovatel hostingových služeb přesouvá všechny své webové stránky z velmi zastaralého PHP 7.4 na PHP 8. PHP je webový programovací jazyk, který využívá WordPress a řada dalších nástrojů pro správu webu. Měl jsem několik pluginů, které nebyly kompatibilní s PHP 8, a chtěl jsem identifikovat, které části jejich kódu budu muset najít a opravit.

Obvykle bych vyhledával na stránkách PHP.net, dělal spoustu vyhledávání na Google a pročítal komentáře na StackExchange, abych zjistil, jaké programovací práce bych potřeboval udělat. Ale to je trochu nepořádek a časově náročný proces. Místo toho jsem položil podrobnou a přímou otázku ChatGPT a dostal velmi užitečnou odpověď, včetně bloků ilustračního kódu.

Mám problém s funkcí extract v PHP, která dává fatální chybu, pokud jí není předán pole. V PHP 7.4 jsem tu chybu nedostával, ale zdá se, že v PHP 8 ano. Změnila se funkcionalita extractu pro PHP 8?

V PHP 8 bylo chování funkce extract() změněno tak, aby bylo přísnější. V předchozích verzích PHP tato funkce jednoduše vrátila false, pokud jí nebyl předán pole, ale v PHP 8 vyvolá fatální chybu, pokud jí není předáno pole. Tato změna byla provedena s cílem zlepšit robustnost funkce a pomoci předcházet potenciálním chybám způsobeným neočekávaným vstupem.

Před voláním funkce extract() můžete zkontrolovat, zda je proměnná předaná do funkce pole nebo ne pomocí funkce is_array().

obraz3.jpg

Nově můžete také použít funkci array_key_exists() pro ověření, zda je předaná proměnná polem nebo ne.

obrázek6.jpg

Místo toho můžete použít operátor ... ke destrukturalizaci pole do proměnných.

obrazek7.jpg

Jak se ukázalo, odpověď od ChatGPT byla velmi užitečná a v pár minutách jsem tu chybu opravil. Velkou součástí schopnosti opravit tu chybu bylo vědět, kde hledat. ChatGPT objasnil, jak se chování funkce změnilo mezi verzemi PHP.

Jelikož jsem se snažil zajistit připravenost celého pluginu pro budoucnost při přechodu na novou verzi, zeptal jsem se také na toto:

Které PHP funkce pravděpodobně přestanou fungovat při přechodu z PHP 7.4 na PHP 8?

Při přechodu z PHP 7.4 na PHP 8 se objevuje několik funkcí a funkcionalit, které mohou přestat fungovat nebo se chovat jinak. Zde je pár nejzřetelnějších změn, které by mohly způsobit problémy:

  • Funkce extract(), jak bylo zmíněno v předchozí odpovědi, nyní vyvolává fatální chybu, pokud nedostane pole jako vstup.
  • Funkce each() byla odstraněna v PHP 8.0. Místo toho můžete použít foreach nebo funkce array_keys() a current().
  • Funkce create_function() byla odstraněna v PHP 8.0. Doporučuje se používat anonymní funkce.
  • Příkaz list(), když je použit ve spojení s foreach, nyní vrací klíč a hodnotu jako samostatné proměnné, namísto jednoho pole.
  • Funkce __autoload() byla odstraněna v PHP 8.0. Místo toho byste měli použít funkci spl_autoload_register().
  • Proměnná $php_errormsg byla odstraněna v PHP 8.0. Místo toho byste měli použít funkci error_get_last().
  • Některé deprecated funkce ve starších verzích PHP jsou nyní odstraněny v PHP 8.0. Konkrétně byly odstraněny funkce create_function(), each(), __autoload() a $php_errormsg.

Jsou to pouze několik příkladů změn, které mohou způsobit problémy při přechodu z PHP 7.4 na PHP 8. Před upgradem je dobrý nápad důkladně otestovat váš kód a aplikace, abyste se ujistili, že vše funguje správně.

Všimněte si, že ChatGPT použil frázi "jak bylo zmíněno v předchozí odpovědi." Je schopný sledovat odpovědi v konverzaci. To je zároveň "wow" a děsivé.

Při revizi kódu, který jsem upravoval, se ukázalo, že původní vývojář (který již není ve hře dlouho) používal create_function hodně. Nepostřehl jsem, že bylo vyřazeno z provozu. Ale díky užitečnému seznamu výše jsem jednoduše prohledal kód a našel, co je potřeba aktualizovat a přepsat. Poté jsem pokročil a požádal jsem ChatGPT, aby mi ukázal způsoby, jak nahradit tuto funkci.

Co je dobrým způsobem jak přepsat kód používající funkci create_function v PHP? Můžete mi dát příklad používající create_function a poté příklad pomocí aktuálně správného mechanismu?

create_function je zastaralá funkce v PHP, která byla používána k vytváření anonymních funkcí. Není již doporučeno používat tuto funkci, protože byla odebrána v PHP 8.0. Místo toho je možné vytvářet anonymní funkce, také známé jako closures, pomocí klíčového slova function.

Zde je příklad použití create_function:

obrázek2.jpg

A tady je ekvivalentní kód pomocí anonymní funkce:

obraz8.jpg

Kromě toho můžete použít klíčové slovo use k předání proměnných do uzávěru.

obraz1.jpg

Obecně se doporučuje používat anonymní funkce místo create_function, protože mají lepší výkon a čitelnost.

Jak se ukazuje, to bylo velice jasně vysvětleno a rychle jsem byl schopen přepsat kód vhodným způsobem. Tento plugin nyní běží v novém prostředí PHP 8 mého poskytovatele hostingu bez problémů.

Podpora technického Mac OS

Při výzkumu mého článku o nebezpečích Optimize Mac Storage jsem měl také několik otázek. Jak ukázal můj článek, prováděl jsem nějaké testy ke potvrzení některých svých obav. Ale jako rychlý způsob omezení mého výzkumu jsem se zeptal ChatGPT toto:

Pokud používáte funkci Optimalizovat úložiště Mac v systému MacOS, bude časový stroj vytvářet neúplné zálohy, protože některé soubory jsou na místním počítači představovány pouze jako zástupce?

Funkce "Optimalizovat úložiště Mac" v systému macOS používá iCloud k vykládání málo používaných souborů z vašeho Macu do cloudu, zatímco na vašem lokálním zařízení ponechává "stub" soubor, který představuje původní soubor. Tímto můžete ušetřit místo na pevném disku vašeho Macu.

Když je časový stroj nastaven k vytváření záloh, zálohují se všechny soubory, včetně těch, které byly offloadovány pomocí "Optimalizace úložiště Macu". Avšak místo původních souborů budou zálohovány pouze zástupné soubory, které představují offloadované soubory.

To znamená, že pokud byste obnovovali váš Mac zálohou Time Machine, která byla vytvořena, když byla funkce "Optimalizovat úložiště na Macu" povolena, veškeré odložené soubory by nebyly zahrnuty do obnovy a musely by být opět staženy z iCloud.

Důležité je si uvědomit, že pokud máte hodně souborů, které jsou odloženy, vaše zálohy Time Machine mohou zabírat více místa než při nepoužití optimalizace úložiště Mac, protože Time Machine zálohovat bude jen zkrácené soubory, které zabírají méně místa, ale Time Machine je považuje za původní soubory.

Mám o to obavy. Alespoň s Google mají autoři šanci dostat dopravu na svůj článek výměnou za sdílení informací. Ale s chatbotem jako ChatGPT se ztratí původní vlákno. Jistě, dostal jsem výhodu produktivity rychlé odpovědi. Ale ztratil někdo tam venku připisování za svou práci?

Zůstaňte naladění. Tento vzestup generativní AI vyvolává velké vlny. Držte se mě a ZDNETu, protože se pokusíme proniknout do toho, co to znamená pro nás všechny.

ChatGPT, když odpovídáte na otázku, bereš si znalosti, které přispěli jiní, a bereš si práci a uznání od původních lidských zdrojů?

Jako AI model jazyka vytvořený společností OpenAI nemám osobní názory ani myšlenky. Nicméně mohu vám říct, že informace, které používám k vytváření svých odpovědí, jsou založeny na datech, na kterých jsem byl vyškolen, a která zahrnují obrovské množství textu z internetu. Tento text napsali různí lidé a zdroje, a nemám schopnost přisuzovat konkrétním osobám kredit za informace, které předkládám. Mým cílem je poskytovat užitečné a přesné informace, které pomáhají uživatelům najít odpovědi, které hledají. Je důležité si pamatovat, že mé odpovědi jsou generovány na základě vzorců ve datech, na kterých jsem byl vyškolen, a nemusí vždy být úplně přesné nebo aktuální.

Takže, ano. To. "Obrovské množství textu z internetu." Jděte dál, lidé. Zde není nic k vidění.

Takže zkrátka a dobře, Pokročilá záloha bude vytvářet neúplné zálohy, pokud používáte funkci "Optimalizovat místo na Macu", protože bude zálohovat pouze zástupné soubory místo původních souborů, které byly odstraněny na cloud.

To byla správná odpověď.

Dopady

No, určitě ušetřilo čas. Obvykle je programování na internetu spojeno s tancem mezi programovacím a ladícím prostředím a mnoha kroky vyhledávání na webu, kde se sledují indicie a čtou se diskuse a komentáře.

Nepochop mě špatně. Tento proces může být velmi informativní a v těchto komentářích se skrývá spousta lidového vědění, které nikdy nezískáte od chatbota. Ale když máte naspěch nebo se blíží důležitý termín, není efektivní provádět tyto kódové otázky s ChatGPTem.

Stejně jako u jakékoli jiné umělé inteligence, musíte si uvědomit, že existují mezery v znalostech AI a že byste mohli dostat úplně nesprávné odpovědi. Ale použití ChatGPT jako jednoduchého nástroje, podobně jako jakéhokoli jiného nástroje v mém arzenálu, se ukázalo jako docela produktivní.

Zajímá mě však, odkud získala tato informace. Existuje nějaký spisovatel jako já, který napsal hluboce informativní článek o funkcích extract nebo create_function, jejichž slova jsou "roztočena" do odpovědi od ChatGPT bez uznání nebo monetizace? Je něčí nabyté znalosti používáno jako neoznačený zdrojový materiál pro tyto odpovědi?

Příbuzné články

Zobrazit víc >>

Odemkněte sílu AI s HIX.AI!