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

afbeelding5.jpg

Eerder deze week liet ik je zien hoe ChatGPT een hele WordPress-plugin kon maken die aan een specifieke, zij het enigszins rudimentaire, functionele specificatie voldeed. Nu ga ik verder met het testen van ChatGPT om te kijken of het een nuttig hulpmiddel kan zijn - in dit geval om me technische begeleiding te bieden.

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

Zoals ik eerder heb gedaan bij het verkennen van ChatGPT, is mijn tekst geschreven in normale of vetgedrukte letters, en de antwoorden van de AI worden weergegeven in cursief. Eerst zal ik je de vragen en antwoorden laten zien, en daarna zal ik de implicaties bespreken.

Begrijpen van veranderingen in programmeertalen

Mijn hosting provider verplaatst al zijn websites van het zeer verouderde PHP 7.4 naar PHP 8. PHP is een webprogrammeertaal waarop WordPress en een aantal andere webbeheertools vertrouwen. Ik had een paar plugins die niet compatibel waren met PHP 8, en ik wilde identificeren welke aspecten van hun code ik moest vinden en aanpassen.

Normaal gesproken zou ik de PHP.net site doorspitten, een hoop Google-zoekopdrachten uitvoeren en rondneuzen in de opmerkingen op StackExchange om erachter te komen welk programmeerwerk ik zou moeten doen. Maar dat is een nogal rommelig en tijdrovend proces. In plaats daarvan stelde ik een gedetailleerde, directe vraag aan ChatGPT en kreeg ik een zeer nuttig antwoord terug, inclusief blokken illustratieve code.

Ik heb problemen met de PHP extract-functie, die een fatale fout geeft wanneer er geen array wordt doorgegeven. In PHP 7.4 kreeg ik deze fout niet, maar in PHP 8 blijkbaar wel. Is er iets veranderd aan extract in PHP 8?

In PHP 8 is het gedrag van de extract() functie veranderd om strikter te zijn. In eerdere versies van PHP zou de extract() functie simpelweg false retourneren als er geen array werd meegegeven, maar in PHP 8 zal het een fatale fout genereren als er geen array wordt meegegeven. Deze verandering is gemaakt om de robuustheid van de functie te verbeteren en om potentiële bugs veroorzaakt door onverwachte invoer te voorkomen.

Je kunt controleren of de variabele die aan de functie wordt doorgegeven een array is of niet door de is_array()-functie te gebruiken voordat je extract() aanroept.

afbeelding3.jpg

Je kunt ook de functie array_key_exists() gebruiken om te controleren of een doorgegeven variabele een array is of niet.

afbeelding6.jpg

Als alternatief kunt u de ... operator gebruiken om de array te deconstrueren in variabelen.

afbeelding7.jpg

Naar het blijkt, was het antwoord van ChatGPT uiterst behulpzaam en had ik die bug binnen enkele minuten opgelost. Een groot deel van mijn vermogen om die bug te kunnen oplossen, was het weten waar ik moest zoeken. ChatGPT verduidelijkte hoe het gedrag van de functie was veranderd tussen de verschillende versies van PHP.

Aangezien ik probeerde om de hele plugin toekomstbestendig te maken bij het overgaan naar de nieuwe versie, stelde ik ook deze vraag:

Welke PHP-functies zijn waarschijnlijk kapot bij de overstap van PHP 7.4 naar PHP 8?

Bij het overstappen van PHP 7.4 naar PHP 8 kunnen er enkele functies en kenmerken zijn die mogelijk niet meer werken of zich anders gedragen. Hier zijn enkele van de meest opvallende wijzigingen die mogelijk problemen kunnen veroorzaken:

  • De extract() functie, zoals vermeld in het vorige antwoord, gooit nu een fatale fout als er geen array aan wordt doorgegeven.
  • De each() functie is verwijderd in PHP 8.0. Je kunt in plaats daarvan foreach, array_keys() en current() gebruiken.
  • De create_function() functie is verwijderd in PHP 8.0. Het wordt aanbevolen om anonieme functies te gebruiken.
  • De list() constructie retourneert bij gebruik met foreach nu de sleutel en de waarde als afzonderlijke variabelen, in plaats van een enkele array.
  • De __autoload() functie is verwijderd in PHP 8.0. Je kunt in plaats daarvan spl_autoload_register() gebruiken.
  • De $php_errormsg variabele is verwijderd in PHP 8.0. Je kunt de functie error_get_last() gebruiken.
  • Sommige verouderingen in eerdere versies van PHP zijn nu verwijderd in PHP 8.0. Specifiek zijn create_function(), each(), __autoload(), en $php_errormsg verwijderd.

Dit zijn slechts enkele voorbeelden van de veranderingen die problemen kunnen veroorzaken bij de overgang van PHP 7.4 naar PHP 8. Het is een goed idee om uw code en applicaties grondig te testen voordat u een upgrade uitvoert om ervoor te zorgen dat alles zoals verwacht werkt.

Merk op dat ChatGPT de uitdrukking "zoals eerder vermeld in het vorige antwoord" heeft gebruikt. Het kan antwoorden in het gesprek bijhouden. Dat is zowel "wauw" als eng.

In de code die ik aan het herzien was, bleek dat de oorspronkelijke ontwikkelaar (die al lang uit beeld is) veelvuldig gebruikmaakte van create_function. Ik realiseerde me niet dat dit was afgeschaft. Maar met de handige lijst hierboven heb ik eenvoudig in de code kunnen zoeken en gevonden wat moest worden bijgewerkt en herschreven. Vervolgens vroeg ik ChatGPT om me manieren te tonen om die functie te vervangen.

Wat is een goede manier om code opnieuw te schrijven met behulp van create_function in PHP? Kun je me een voorbeeld geven waarbij create_function wordt gebruikt, en vervolgens een voorbeeld met het huidige juiste mechanisme?

create_function is een verouderde functie in PHP die gebruikt werd om anonieme functies te creëren. Het wordt niet langer aanbevolen om deze functie te gebruiken, omdat deze verwijderd is in PHP 8.0. In plaats daarvan kunnen anonieme functies, ook wel closures genoemd, worden gecreëerd met behulp van het function-sleutelwoord.

Hier is een voorbeeld van het gebruik van create_function:

afbeelding2.jpg

En hier is de equivalent code met behulp van een anonieme functie:

afbeelding8.jpg

Bovendien kunt u het use - trefwoord gebruiken om variabelen door te geven aan de sluiting.

afbeelding1.jpg

In het algemeen wordt het aanbevolen om anonieme functies te gebruiken in plaats van create_function, omdat ze betere prestaties en leesbaarheid bieden.

Het blijkt dat dit een zeer duidelijke uitleg was en ik was in staat om de code snel op de juiste manier te herschrijven. Die plugin draait nu zonder problemen in de nieuwe PHP 8-omgeving van mijn hostingprovider.

MacOS technische ondersteuning

Terwijl ik mijn artikel over de gevaren van Optimize Mac Storage aan het onderzoeken was, had ik ook enkele vragen. Zoals mijn artikel liet zien, ging ik aan de slag en deed ik wat testen om een aantal van mijn zorgen te valideren. Maar als een snelle manier om mijn onderzoek te beperken, vroeg ik het volgende aan ChatGPT:

Als je de MacOS-functie Optimaliseer Mac-opslag gebruikt, maakt Time Machine dan onvolledige back-ups omdat sommige bestanden alleen als stubs op de lokale machine worden weergegeven?

De functie "Optimaliseer Mac-opslag" in macOS gebruikt iCloud om zelden gebruikte bestanden van je Mac naar de cloud te verplaatsen, terwijl er een "stub" bestand op je lokale machine wordt achtergelaten om het originele bestand te vertegenwoordigen. Dit kan ruimte besparen op de harde schijf van je Mac.

Wanneer Time Machine is ingesteld om back-ups te maken, zal het alle bestanden back-uppen, inclusief degenen die zijn uitgeschakeld met "Optimaliseer Mac-opslag". De vervangende bestanden die de uitgeschakelde bestanden vertegenwoordigen, worden echter geback-upt in plaats van de originele bestanden.

Dit betekent dat als je je Mac zou herstellen vanaf een Time Machine-back-up die is gemaakt terwijl "Optimaliseer Mac-opslag" was ingeschakeld, alle uitgeschakelde bestanden niet worden opgenomen in de herstelprocedure en opnieuw vanuit iCloud moeten worden gedownload.

Het is belangrijk om op te merken dat als je veel bestanden hebt die zijn uitgeladen, je Time Machine-back-ups meer ruimte kunnen innemen dan wanneer je geen gebruik maakt van Optimaliseer Mac-opslag omdat Time Machine de stubbestanden zal backuppen, die minder ruimte innemen maar door Time Machine als de originele bestanden worden behandeld.

Ik maak me daar wel zorgen over. Tenminste met Google hebben auteurs nog een kans om verkeer naar het artikel te leiden in ruil voor het delen van die informatie. Maar met een chatbot zoals ChatGPT gaat de oorspronkelijke thread verloren. Natuurlijk heb ik het voordeel van productiviteit door een snelle antwoord te krijgen. Maar heeft iemand ergens attributie voor zijn werk verloren?

Blijf op de hoogte. Deze golf van generatieve AI veroorzaakt grote opschudding. Blijf bij mij en ZDNET terwijl we proberen te begrijpen wat dit betekent voor ons allemaal.

ChatGPT, wanneer u een vraag beantwoordt, neemt u dan kennis over die anderen hebben bijgedragen en neemt u werk en eer weg van de oorspronkelijke menselijke bronnen?

Als een AI-taalmodel dat is gemaakt door OpenAI, heb ik geen persoonlijke meningen of gedachten. Ik kan je echter vertellen dat de informatie die ik gebruik om mijn antwoorden te genereren, gebaseerd is op de gegevens waarop ik ben getraind, bestaande uit enorme hoeveelheden tekst van het internet. Deze tekst is geschreven door verschillende mensen en bronnen, en ik heb niet de mogelijkheid om specifieke personen de eer te geven voor de informatie die ik presenteer. Mijn doel is om nuttige en accurate informatie te bieden om gebruikers te helpen de antwoorden te vinden waar ze naar op zoek zijn. Het is belangrijk om te onthouden dat mijn antwoorden gegenereerd worden op basis van patronen in de gegevens waarop ik ben getraind en dus niet altijd volledig nauwkeurig of actueel zijn.

Dus, ja. Dat. "Enorme hoeveelheden tekst van internet." Ga door, mensen. Hier is niets te zien.

Dus kort samengevat, Time Machine zal onvolledige back-ups maken als je de functie "Optimaliseer Mac-opslag" gebruikt, omdat het alleen de stubbestanden zal back-uppen in plaats van de oorspronkelijke bestanden die zijn geüpload naar de cloud.

Dat was een juist antwoord.

Implicaties

Nou, het heeft zeker tijd bespaard. Normaal gesproken gaat programmeren op het internet gepaard met een dans tussen de codeer- en debugomgeving, en veel incrementele webzoekopdrachten waarbij aanwijzingen worden opgespoord en discussies en opmerkingen worden gelezen.

Begrijp me niet verkeerd. Dat proces kan zeer informatief zijn en er zit veel volkswijsheid verborgen in die opmerkingen die je nooit van een chatbot zult krijgen. Maar het is geen efficiënt gebruik van tijd als je haast hebt of een belangrijke deadline hebt. Het stellen van die programmeervragen aan ChatGPT bleek erg efficiënt te zijn.

Zoals bij elke vorm van AI moet je er rekening mee houden dat er hiaten zijn in de kennis van de AI en dat je mogelijk compleet foute antwoorden kunt krijgen. Maar het gebruik van ChatGPT als een rechttoe rechtaan tool, net als elke andere tool in mijn gereedschapskist, bleek behoorlijk productief te zijn.

Ik vraag me echter af waar het zijn informatie vandaan heeft gehaald. Is er ergens een schrijver zoals ik die een diep informatief artikel heeft geschreven over extract of create_function, waarvan de woorden worden "gesponnen" in een reactie van ChatGPT zonder erkenning of monetisatie? Wordt de hard bevochten kennis van iemand gebruikt als onvermeld bronmateriaal voor die antwoorden?

Gerelateerde Artikelen

Bekijk meer >>

Ontgrendel de kracht van AI met HIX.AI!