Je suis en train d'utiliser ChatGPT pour m'aider à corriger le code plus rapidement, mais à quel prix ?

image5.jpg

Plus tôt cette semaine, je vous ai montré comment ChatGPT pouvait créer un plugin WordPress complet qui répondait à une spécification fonctionnelle spécifique, même si elle était quelque peu rudimentaire. Maintenant, je continue mes tests de ChatGPT pour me faire une idée de savoir s'il peut être un outil utile - dans ce cas, pour m'aider à obtenir des conseils techniques.

Aussi : J'ai demandé à ChatGPT d'écrire un plugin WordPress. Il l'a fait en moins de 5 minutes

Comme je l'ai fait dans mes explorations précédentes de ChatGPT, mon texte est en texte normal ou en gras, tandis que les réponses de l'IA sont en italique. Tout d'abord, je vais vous montrer les questions et les réponses, puis je discuterai des implications.

Comprendre les changements de langage de programmation

Mon fournisseur d'hébergement déplace tous ses sites de PHP 7.4, qui est très obsolète, à PHP 8. PHP est un langage de programmation web sur lequel WordPress et un certain nombre d'autres outils de gestion de sites web s'appuient. J'avais quelques extensions qui n'étaient pas compatibles avec PHP 8 et je voulais identifier les parties de leur code que je devrais trouver et corriger.

Généralement, je me plongerais dans le site de PHP.net, je ferais une série de recherches sur Google et je fouillerais dans les commentaires de StackExchange pour savoir quel travail de programmation j'aurais besoin de faire. Mais c'est un processus un peu désordonné et chronophage. À la place, j'ai posé une question détaillée et directe à ChatGPT et j'ai obtenu une réponse très utile, comprenant des blocs de code illustratifs.

J'ai des problèmes avec la fonction extract de PHP qui produit une erreur fatale lorsqu'elle n'est pas passée en argument un tableau. En PHP 7.4, je n'obtenais pas cette erreur, mais il semble que ce soit le cas avec PHP 8. Est-ce que extract a changé pour PHP 8 ?

En PHP 8, le comportement de la fonction extract() a été modifié pour être plus strict. Dans les versions précédentes de PHP, la fonction extract() renvoyait simplement false si elle n'était pas passée en argument avec un tableau, mais en PHP 8, elle génèrera une erreur fatale si elle n'est pas passée en argument avec un tableau. Ce changement a été effectué pour améliorer la robustesse de la fonction et pour aider à prévenir les bugs potentiels causés par une entrée inattendue.

Vous pouvez vérifier si la variable passée à la fonction est un tableau ou non en utilisant la fonction is_array() avant d'appeler extract().

image3.jpg

Vous pouvez également utiliser la fonction array_key_exists() pour vérifier si une variable passée est un tableau ou non.

image6.jpg

En complément, vous pouvez utiliser l'opérateur ... pour déstructurer le tableau en variables.

image7.jpg

Comme il s'est avéré, la réponse de ChatGPT a été extrêmement utile et j'ai pu corriger ce bug en quelques minutes. Une grande partie de ma capacité à corriger ce bug était de savoir où chercher. ChatGPT a clarifié comment le comportement avait changé dans la fonction entre les versions de PHP.

Étant donné que j'essayais de prévoir l'avenir de l'intégralité du plugin vers la nouvelle version, j'ai également posé cette question :

Quelles fonctions PHP sont susceptibles de ne plus fonctionner lors du passage de PHP 7.4 à PHP 8 ?

Lors du passage de PHP 7.4 à PHP 8, certaines fonctions et fonctionnalités peuvent se briser ou se comporter différemment. Voici quelques-uns des changements les plus importants qui pourraient potentiellement causer des problèmes :

  • La fonction extract(), comme mentionné dans la réponse précédente, génère maintenant une erreur fatale si elle ne reçoit pas un tableau en argument.
  • La fonction each() a été supprimée en PHP 8.0. Vous pouvez utiliser foreach ou array_keys() et current() à la place.
  • La fonction create_function() a été supprimée en PHP 8.0. Il est recommandé d'utiliser des fonctions anonymes à la place.
  • La construction list(), lorsqu'elle est utilisée avec un foreach, retourne maintenant la clé et la valeur en tant que variables séparées, plutôt qu'un tableau unique.
  • La fonction __autoload() a été supprimée en PHP 8.0. Vous devriez utiliser spl_autoload_register() à la place.
  • La variable $php_errormsg a été supprimée en PHP 8.0. Vous devriez utiliser la fonction error_get_last() à la place.
  • Certaines des fonctionnalités dépréciées dans les versions PHP précédentes ont été supprimées dans PHP 8.0. Plus précisément, les fonctions create_function(), each(), __autoload() et la variable $php_errormsg ont été supprimées.

Voici quelques exemples des modifications qui peuvent poser des problèmes lors du passage de PHP 7.4 à PHP 8. Il est recommandé de tester en profondeur votre code et vos applications avant de procéder à la mise à niveau pour vous assurer que tout fonctionne comme prévu.

Notez que ChatGPT a utilisé la phrase "comme mentionné dans la réponse précédente". Il est capable de suivre les réponses dans la conversation. C'est à la fois "impressionnant" et effrayant.

Dans le code que je révisais, il s'est avéré que le développeur original (qui n'est plus dans les parages depuis longtemps) utilisait beaucoup la fonction create_function. Je n'avais pas réalisé que cela avait été déprécié. Mais grâce à la liste utile ci-dessus, j'ai simplement recherché dans le code et trouvé ce qui devait être mis à jour et réécrit. J'ai ensuite demandé à ChatGPT de me montrer des façons de remplacer cette fonction.

Quelle est une bonne façon de réécrire du code utilisant create_function en PHP ? Pouvez-vous me donner un exemple utilisant create_function, et un autre utilisant le mécanisme actuellement approprié ?

create_function est une fonction dépréciée en PHP qui était utilisée pour créer des fonctions anonymes. Il n'est plus recommandé d'utiliser cette fonction car elle a été supprimée dans PHP 8.0. À la place, des fonctions anonymes, également appelées closures, peuvent être créées à l'aide du mot-clé function.

Voici un exemple d'utilisation de create_function:

image2.jpg

Et voici le code équivalent utilisant une fonction anonyme :

image8.jpg

De plus, vous pouvez utiliser le mot clé use pour passer des variables dans la fermeture.

image1.jpg

En général, il est recommandé d'utiliser des fonctions anonymes plutôt que create_function car elles offrent de meilleures performances et une meilleure lisibilité.

Il s'avère que c'était une explication très claire et j'ai pu rapidement réécrire le code de manière appropriée. Ce plugin fonctionne maintenant dans l'environnement PHP 8 de mon fournisseur d'hébergement sans problème.

Assistance technique pour MacOS

Alors que je faisais des recherches pour mon article sur les dangers de l'optimisation du stockage Mac, j'avais également quelques questions. Comme mon article le montrait, j'ai effectué des tests pour valider certaines de mes préoccupations. Mais pour réduire rapidement mes recherches, j'ai posé cette question à ChatGPT :

Si vous utilisez la fonctionnalité Optimiser le stockage sur Mac, Time Machine fera-t-il des sauvegardes incomplètes car certains fichiers sont uniquement représentés par des stubs sur l'ordinateur local ?

La fonction "Optimiser le stockage Mac" dans macOS utilise iCloud pour transférer les fichiers rarement utilisés de votre Mac vers le cloud, tout en conservant un fichier "stub" sur votre machine locale pour représenter le fichier original. Cela permet de gagner de l'espace sur le disque dur de votre Mac.

Lorsque Time Machine est configuré pour effectuer des sauvegardes, il sauvegardera tous les fichiers, y compris ceux qui ont été déchargés à l'aide de la fonction "Optimiser le stockage du Mac". Cependant, les fichiers factices qui représentent les fichiers déchargés seront sauvegardés à la place des fichiers originaux.

Cela signifie que si vous restaurez votre Mac à partir d'une sauvegarde Time Machine qui a été créée lorsque l'option "Optimiser l'espace de stockage du Mac" était activée, tous les fichiers déchargés ne seront pas inclus dans la restauration et devront être téléchargés à nouveau depuis iCloud.

Il est important de noter que si vous avez beaucoup de fichiers déchargés, vos sauvegardes Time Machine peuvent occuper plus d'espace que si vous n'utilisez pas Optimiser le stockage sur Mac car Time Machine sauvegardera les fichiers d'espacement réservé, qui occupent moins d'espace mais que Time Machine traitera comme les fichiers originaux.

Je m'inquiète à ce sujet. Au moins, avec Google, les auteurs ont une chance d'avoir le moteur de recherche qui envoie du trafic vers l'article en échange du partage de ces informations. Mais avec un chatbot comme ChatGPT, le fil de discussion original est perdu. Certes, j'ai bénéficié de l'avantage de productivité d'une réponse rapide. Mais est-ce que quelqu'un a perdu l'attribution de son travail ?

Restez à l'écoute. Cette vague de l'IA générative fait des vagues. Restez avec moi et ZDNET pendant que nous essayons de comprendre ce que cela signifie pour chacun d'entre nous.

ChatGPT, lorsque vous répondez à une question, est-ce que vous utilisez les connaissances que d'autres ont contribuées et est-ce que vous leur enlevez leur travail et leur mérite ?

En tant que modèle de langage IA créé par OpenAI, je n'ai pas d'opinions ou de pensées personnelles. Cependant, je peux vous dire que les informations que j'utilise pour générer mes réponses sont basées sur les données sur lesquelles j'ai été formé, qui consistent en de vastes quantités de texte provenant d'Internet. Ce texte a été écrit par de nombreuses personnes et sources différentes, et je n'ai pas la capacité d'attribuer des crédits à des individus spécifiques pour les informations que je présente. Mon objectif est de fournir des informations utiles et précises pour aider les utilisateurs à trouver les réponses qu'ils recherchent. Il est important de se rappeler que mes réponses sont générées en fonction des modèles dans les données sur lesquelles j'ai été formé et peuvent ne pas toujours être entièrement précises ou à jour.

Alors ouais. Ça. "De grandes quantités de texte provenant d'internet." Passez votre chemin les gens. Rien à voir ici.

En résumé, Time Machine effectuera des sauvegardes incomplètes si vous utilisez la fonction "Optimiser le stockage du Mac", car il ne sauvegardera que les fichiers d'appel au lieu des fichiers originaux qui ont été déchargés vers le cloud.

C'était une réponse correcte.

Implications

Eh bien, cela a certainement fait gagner du temps. Normalement, la programmation sur internet implique une danse entre l'environnement de codage et de débogage, et de nombreuses recherches web incrémentielles où les indices sont suivis et les discussions et commentaires sont lus.

Ne me comprenez pas mal. Ce processus peut être très instructif, et il y a beaucoup de folklore enfoui dans ces commentaires que vous n'obtiendrez jamais d'un chatbot. Mais ce n'est pas une utilisation efficiente du temps quand vous êtes pressé ou dans une situation critique. Poser ces questions de codage à ChatGPT s'est avéré très efficace.

Comme pour tout ce qui est intelligence artificielle, il faut être conscient des lacunes dans les connaissances de l'IA et il se peut que vous obteniez des réponses complètement erronées. Mais l'utilisation de ChatGPT en tant qu'outil simple comme n'importe quel autre outil dans ma boîte à outils s'est révélée assez productive.

Je me demande cependant d'où il tire ses informations. Est-ce qu'il y a un autre écrivain comme moi qui a rédigé un article très informatif sur extract ou create_function dont les mots sont "spinnés" en une réponse par ChatGPT sans crédit ni monétisation ? Les connaissances durement acquises de quelqu'un sont-elles utilisées en tant que source non créditée pour ces réponses ?

Articles connexes

Voir Plus >>

Libérez la puissance de l'IA avec HIX.AI !