Ich benutze ChatGPT, um mir beim schnelleren Beheben von Code-Problemen zu helfen, aber zu welchem Preis?

bild5.jpg

Früher diese Woche habe ich Ihnen gezeigt, wie ChatGPT eine komplette WordPress-Plugin erstellen konnte, das eine spezifische, wenn auch etwas rudimentäre, funktionale Spezifikation erfüllt hat. Jetzt setze ich meine Tests mit ChatGPT fort, um ein Gefühl dafür zu bekommen, ob es ein hilfreiches Werkzeug sein kann -- in diesem Fall, um mir technische Unterstützung zu bieten.

Außerdem: Ich habe ChatGPT gebeten, ein WordPress-Plugin zu schreiben. Es hat es in weniger als 5 Minuten erledigt

Wie ich es auch bei früheren Erkundungen von ChatGPT gemacht habe, ist mein Text in normaler oder fettgedruckter Schrift gehalten, während die Antworten der KI kursiv sind. Zuerst zeige ich Ihnen die Fragen und Antworten und anschließend werde ich auf die Auswirkungen eingehen.

Verstehen von Änderungen in Programmiersprachen

Mein Hosting-Anbieter verschiebt alle seine Websites von dem sehr veralteten PHP 7.4 auf PHP 8. PHP ist eine Webprogrammiersprache, auf die WordPress und eine Reihe anderer Webverwaltungstools angewiesen sind. Ich hatte ein paar Plugins, die nicht mit PHP 8 kompatibel waren, und ich wollte herausfinden, welche Teile ihres Codes ich finden und reparieren müsste.

Normalerweise würde ich die PHP.net-Website durchsuchen, eine Reihe von Google-Suchen durchführen und in den Kommentaren auf StackExchange stöbern, um herauszufinden, welche Programmierarbeit ich erledigen müsste. Aber das ist ein ziemlich umständlicher, zeitaufwändiger Prozess. Stattdessen habe ich eine detaillierte, direkte Frage an ChatGPT gestellt und eine sehr nützliche Antwort erhalten, einschließlich Codebeispielen.

Ich habe Probleme mit der PHP-Funktion "extract", die eine tödliche Fehlermeldung ausgibt, wenn kein Array übergeben wird. In PHP 7.4 habe ich den Fehler nicht bekommen, aber anscheinend tritt er in PHP 8 auf. Hat sich etwas an "extract" für PHP 8 geändert?

In PHP 8 wurde das Verhalten der extract()-Funktion geändert, um strenger zu sein. In früheren Versionen von PHP hat die extract()-Funktion einfach false zurückgegeben, wenn kein Array übergeben wurde. In PHP 8 wird jedoch ein schwerwiegender Fehler ausgegeben, wenn kein Array übergeben wird. Diese Änderung wurde vorgenommen, um die Robustheit der Funktion zu verbessern und potenzielle Fehler aufgrund unerwarteter Eingaben zu vermeiden.

Sie können überprüfen, ob die Variable, die an die Funktion übergeben wird, ein Array ist oder nicht, indem Sie die Funktion is_array() aufrufen, extract() jedoch erst danach.

Bild3.jpg

Sie können auch die array_key_exists()-Funktion verwenden, um zu überprüfen, ob eine übergebene Variable ein Array ist oder nicht.

Bild6.jpg

Alternativ können Sie den ... Operator verwenden, um das Array in Variablen zu destrukturieren.

bild7.jpg

Wie sich herausstellte, war die Antwort von ChatGPT äußerst hilfreich und ich hatte diesen Fehler innerhalb weniger Minuten behoben. Ein großer Teil meines Erfolges lag darin, zu wissen, wo ich suchen sollte. ChatGPT klärte auf, wie sich das Verhalten der Funktion zwischen den verschiedenen Versionen von PHP verändert hatte.

Da ich versuche, das gesamte Plugin zukunftssicher zu machen, während ich auf die neue Version wechsele, habe ich auch Folgendes gefragt:

Welche PHP-Funktionen könnten beim Umstieg von PHP 7.4 auf PHP 8 wahrscheinlich nicht mehr funktionieren?

Beim Wechsel von PHP 7.4 zu PHP 8 gibt es einige Funktionen und Features, die möglicherweise nicht mehr funktionieren oder sich anders verhalten. Hier sind einige der wichtigsten Änderungen, die potenziell Probleme verursachen könnten:

  • Die Funktion extract(), wie bereits in der vorherigen Antwort erwähnt, wirft jetzt einen fatalen Fehler, wenn ihr kein Array übergeben wird.
  • Die Funktion each() wurde in PHP 8.0 entfernt. Stattdessen können Sie foreach oder array_keys() und current() verwenden.
  • Die Funktion create_function() wurde in PHP 8.0 entfernt. Es wird empfohlen, anonyme Funktionen zu verwenden.
  • Die Konstruktion list(), wenn sie in Verbindung mit foreach verwendet wird, gibt nun Schlüssel und Wert als separate Variablen zurück, anstatt eines einzelnen Arrays.
  • Die Funktion __autoload() wurde in PHP 8.0 entfernt. Stattdessen sollten Sie spl_autoload_register() verwenden.
  • Die Variable $php_errormsg wurde in PHP 8.0 entfernt. Stattdessen sollten Sie die Funktion error_get_last() verwenden.
  • Einige der Veraltungen in früheren PHP-Versionen wurden in PHP 8.0 entfernt. Konkret wurden create_function(), each(), __autoload() und $php_errormsg entfernt.

Dies sind nur einige Beispiele für Änderungen, die Probleme verursachen können, wenn Sie von PHP 7.4 auf PHP 8 wechseln. Es ist eine gute Idee, Ihren Code und Ihre Anwendungen gründlich zu testen, bevor Sie ein Upgrade durchführen, um sicherzustellen, dass alles wie erwartet funktioniert.

Beachten Sie, dass ChatGPT die Phrase "wie in der vorherigen Antwort erwähnt" verwendet hat. Es kann Antworten im Gespräch verfolgen. Das ist sowohl "wow" als auch beunruhigend.

In dem Code, den ich überarbeitet habe, stellte sich heraus, dass der ursprüngliche Entwickler (der schon lange nicht mehr im Bild ist) create_function häufig verwendet hat. Mir war nicht bewusst, dass diese Funktion veraltet ist. Aber dank der nützlichen oben genannten Liste habe ich den Code durchsucht und herausgefunden, was aktualisiert und neu geschrieben werden musste. Anschließend bat ich ChatGPT, mir Möglichkeiten zu zeigen, wie ich diese Funktion ersetzen kann.

Wie kann man Code, der create_function in PHP verwendet, gut umschreiben? Kannst du mir ein Beispiel geben, bei dem create_function verwendet wird, und dann ein Beispiel für den derzeit korrekten Mechanismus?

create_function ist eine veraltete Funktion in PHP, die verwendet wurde, um anonyme Funktionen zu erstellen. Es wird nicht länger empfohlen, diese Funktion zu verwenden, da sie in PHP 8.0 entfernt wurde. Stattdessen können anonyme Funktionen, auch als Closures bezeichnet, mit dem function-Schlüsselwort erstellt werden.

Hier ist ein Beispiel für die Verwendung von create_function:

Bild2.jpg

Und hier ist der äquivalente Code unter Verwendung einer anonymen Funktion:

Bild8.jpg

Zusätzlich können Sie das use-Schlüsselwort verwenden, um Variablen in die Closure zu übergeben.

Bild1.jpg

Im Allgemeinen wird empfohlen, anonyme Funktionen anstelle von create_function zu verwenden, da sie eine verbesserte Leistung und bessere Lesbarkeit bieten.

Wie sich herausstellte, war das eine sehr klare Erklärung und ich konnte den Code schnell entsprechend umschreiben. Dieses Plugin läuft jetzt problemlos in der neuen PHP 8-Umgebung meines Hosting-Anbieters.

MacOS technischer Support

Als ich meine Recherche für meinen Artikel über die Gefahren von Optimize Mac Storage durchführte, hatte ich auch einige Fragen. Wie mein Artikel zeigte, führte ich einige Tests durch, um einige meiner Bedenken zu validieren. Aber als schnelle Methode, um meine Recherche einzugrenzen, habe ich ChatGPT folgendes gefragt:

Wenn Sie die MacOS-Funktion "Optimize Mac Storage" verwenden, werden Time Machine unvollständige Backups erstellen, da einige Dateien nur als Platzhalter auf dem lokalen Gerät vorhanden sind?

Die Funktion "Optimiere den Speicherplatz auf dem Mac" in macOS verwendet iCloud, um selten genutzte Dateien von deinem Mac in die Cloud auszulagern, während eine "Stub"-Datei auf deinem lokalen Gerät verbleibt, die die Originaldatei repräsentiert. Dadurch kann Speicherplatz auf der Festplatte deines Macs eingespart werden.

Wenn Time Machine eingerichtet ist, um Backups zu erstellen, werden alle Dateien gesichert, einschließlich derjenigen, die mit "Optimize Mac Storage" ausgelagert wurden. Die Platzhalterdateien, die die ausgelagerten Dateien repräsentieren, werden jedoch anstelle der Originaldateien gesichert.

Dies bedeutet, dass wenn Sie Ihren Mac aus einem Time Machine-Backup wiederherstellen, das erstellt wurde, während "Mac-Speicher optimieren" aktiviert war, werden keine ausgelagerten Dateien in der Wiederherstellung enthalten sein und müssen erneut von iCloud heruntergeladen werden.

Es ist wichtig zu beachten, dass wenn Sie viele Dateien haben, die ausgelagert sind, können Ihre Time Machine-Backups mehr Platz einnehmen als wenn Sie Optimize Mac Storage nicht verwenden, da Time Machine die Platzhalter-Dateien sichert, die weniger Platz einnehmen, aber von Time Machine als die Originaldateien behandelt werden.

Das bereitet mir tatsächlich Sorgen. Zumindest haben Autoren bei Google eine Chance, dass der Suchmaschinenverkehr zum Artikel geschickt wird, wenn sie diese Informationen teilen. Aber bei einem Chatbot wie ChatGPT geht der ursprüngliche Thread verloren. Natürlich habe ich den Produktivitätsvorteil einer schnellen Antwort. Aber hat jemand da draußen seine Urheberschaft verloren?

Bleiben Sie dran. Diese Welle der generativen KI sorgt für große Aufregung. Begleiten Sie mich und ZDNET, während wir versuchen, den Kopf darum zu bekommen, was dies für uns alle bedeutet.

ChatGPT, wenn du eine Frage beantwortest, greifst du dann auf das Wissen anderer zurück und nimmst ihnen dadurch Arbeit und Anerkennung weg?

Als von OpenAI entwickeltes KI-Sprachmodell habe ich keine persönlichen Meinungen oder Gedanken. Ich kann Ihnen jedoch sagen, dass die Informationen, die ich zur Generierung meiner Antworten verwende, auf den von mir verwendeten Trainingsdaten basieren. Diese Daten bestehen aus einer großen Menge an Texten aus dem Internet. Diese Texte wurden von vielen verschiedenen Personen und Quellen verfasst, und ich habe nicht die Möglichkeit, bestimmten Personen für die von mir präsentierten Informationen Anerkennung zu geben. Mein Ziel ist es, hilfreiche und genaue Informationen zur Verfügung zu stellen, um den Benutzern bei der Suche nach den Antworten zu helfen, die sie suchen. Es ist wichtig zu bedenken, dass meine Antworten auf Mustern in den von mir trainierten Daten basieren und möglicherweise nicht immer vollständig genau oder aktuell sind.

Also, ja. Das. "Enorme Mengen an Text aus dem Internet." Weitergehen, Leute. Hier gibt es nichts zu sehen.

Also, kurz gesagt, Time Machine erstellt unvollständige Backups, wenn Sie die Funktion "Mac-Speicher optimieren" verwenden, da es nur die Platzhalterdateien anstelle der Originaldateien sichert, die in die Cloud ausgelagert wurden.

Das war eine richtige Antwort.

Auswirkungen

Nun, es hat definitiv Zeit gespart. Normalerweise beinhaltet das Programmieren im Internet ein Hin und Her zwischen der Programmier- und Debugging-Umgebung sowie viele Schritte bei der Suche im Web, bei denen Hinweise verfolgt und Diskussionen und Kommentare gelesen werden.

Lassen Sie mich richtigstellen. Dieser Prozess kann sehr informativ sein und in den Kommentaren steckt viel Fachwissen, das Sie von einem Chatbot nie erhalten würden. Aber es ist keine effiziente Verwendung von Zeit, wenn Sie es eilig haben oder eine wichtige Frist einhalten müssen. Das Stellen dieser Coding-Fragen an ChatGPT erwies sich als sehr effizient.

Wie bei jeder KI muss man sich bewusst sein, dass es Lücken im Wissen der KI gibt und dass man durchaus völlig falsche Antworten bekommen kann. Aber die Verwendung von ChatGPT als einfaches Werkzeug wie jedes andere in meinem Werkzeugkasten erwies sich als ziemlich produktiv.

Ich frage mich jedoch, woher es seine Informationen hat. Gibt es da draußen einen Schriftsteller wie mich, der einen tiefgründigen Artikel über extract oder create_function geschrieben hat und dessen Worte nun von ChatGPT "umgedreht" in einer Antwort verwendet werden, ohne Nennung der Quelle oder Monetarisierung? Wird das hart erkämpfte Wissen von jemandem als ungenanntes Quellenmaterial für diese Antworten genutzt?

Zugehörige Artikel

Mehr anzeigen >>

Nutzen Sie die Kraft der KI mit HIX.AI!