La semaine dernière je vous ai montré comment ChatGPT pouvait créer un plugin WordPress complet répondant à des spécifications fonctionnelles spécifiques, bien que rudimentaires. Et nombre d’entre vous ont adoré ça. Aujourd’hui, je continue à tester ChatGPT pour savoir s’il peut être un outil utile pour obtenir des conseils techniques.
Comprendre les changements de langage de programmation
Mon hébergeur est en train de faire passer tous ses sites du très dépassé PHP 7.4 au PHP 8. PHP est un langage de programmation web sur lequel reposent WordPress et un certain nombre d’autres outils de gestion web. J’avais quelques plugins qui n’étaient pas compatibles PHP 8, et je voulais identifier les aspects de leur code que je devrais trouver et corriger.
En temps normal, j’aurais consulté le site PHP.net, effectué un certain nombre de recherches sur Google et parcouru les commentaires de StackExchange pour déterminer le travail de programmation à effectuer. Mais c’est un processus un peu désordonné et qui prend du temps. Au lieu de cela, j’ai posé une question détaillée et directe à ChatGPT. Et j’ai reçu une réponse très utile, comprenant des blocs de code illustratif. Voici en détail ce qui s’est passé :
Voici la question que j’ai posé à ChatGPT : J’ai des problèmes avec la fonction d’extraction PHP qui donne une erreur fatale lorsqu’on ne lui passe pas un array. En PHP 7.4, je n’ai pas eu cette erreur, mais il semble que ce soit le cas en PHP 8. La fonction extract a-t-elle été modifiée pour PHP 8 ?
Et voici la réponse de ChatPGT que j’ai reçu : 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() retournait simplement false si on ne lui passait pas un array, mais en PHP 8, elle lancera une erreur fatale si on ne lui passe pas un array. Ce changement a été fait 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 array ou non en utilisant la fonction is_array() avant d’appeler extract().
Vous pouvez également utiliser la fonction array_key_exists() pour vérifier si une variable passée est un array ou non.
Alternativement, vous pouvez utiliser l’opérateur … pour déstructurer l’array en variables.
La réponse de ChatGPT s’est avérée extrêmement utile et j’ai pu corriger ce bug en quelques minutes. Une grande partie de la correction de ce bug consistait à savoir où regarder. ChatGPT a clarifié comment le comportement de la fonction a changé entre les versions de PHP.
Comme j’essayais d’assurer la pérennité de l’ensemble du plugin que je déplaçais vers la nouvelle version, j’ai également posé cette question :
Voici la question que j’ai posé à ChatGPT : Quelles sont les fonctions PHP qui risquent d’être cassées lors du passage de PHP 7.4 à PHP 8 ?
Et voici la réponse de ChatPGT que j’ai reçu : Lorsque vous passez de PHP 7.4 à PHP 8, il y a quelques fonctions et caractéristiques qui peuvent être interrompues ou se comporter différemment. Voici quelques-uns des changements les plus notables qui peuvent potentiellement causer des problèmes:
- La fonction extract(), comme mentionné dans la réponse précédente, lance maintenant une erreur fatale si on ne lui passe pas un array.
- La fonction each() a été supprimée sur PHP 8.0. Vous pouvez utiliser foreach ou array_keys() et current() à la place.
- La fonction create_function() a été supprimée sur PHP 8.0. Il est recommandé d’utiliser des fonctions anonymes à la place.
- La construction list(), lorsqu’elle est utilisée avec foreach, retourne maintenant la clé et la valeur comme des variables séparées, plutôt qu’un seul array.
- La fonction __autoload() a été supprimée sur PHP 8.0. Vous devez utiliser spl_autoload_register() à la place.
- La variable $php_errormsg a été supprimée en PHP 8.0. Vous devez utiliser la fonction error_get_last() à la place.
-
Certaines dépréciations des versions précédentes de PHP ont été supprimées en PHP 8.0. En particulier, les fonctions create_function(), each(), __autoload() et $php_errormsg ont été supprimées.
Ce ne sont que quelques exemples des changements qui peuvent causer des problèmes lors du passage de PHP 7.4 à PHP 8. C’est une bonne idée de tester minutieusement votre code et vos applications avant la mise à jour pour vous assurer que tout fonctionne comme prévu.
Notez que ChatGPT a utilisé l’expression « comme mentionné dans la réponse précédente ». Il est donc capable de garder la trace des réponses dans la conversation. C’est à la fois épatant et effrayant.
Dans le code que je révisais, il s’est avéré que le développeur d’origine (qui a disparu depuis longtemps) utilisait beaucoup la fonction create_function. Je n’avais pas réalisé que cette fonction avait été dépréciée. Mais avec la liste utile ci-dessus, j’ai simplement cherché dans le code et trouvé ce qui devait être mis à jour et réécrit. J’ai ensuite demandé à ChatGPT de me montrer comment remplacer cette fonction.
Voici la question que j’ai posé à ChatGPT : Quel est le meilleur moyen de réécrire du code utilisant la fonction create_function en PHP ? Pouvez-vous me donner un exemple utilisant la fonction create_function, puis un autre utilisant le mécanisme approprié actuel ?
Et voici la réponse de ChatPGT que j’ai reçu : create_function est une fonction dépréciée de 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 sur PHP 8.0. A la place, les fonctions anonymes, également connues sous le nom de fermetures, peuvent être créées en utilisant le mot-clé function.
Voici un exemple d’utilisation de create_function:
Et voici le code équivalent utilisant une fonction anonyme:
En outre, vous pouvez utiliser le mot-clé use pour passer des variables dans la fermeture.
En général, il est recommandé d’utiliser des fonctions anonymes au lieu de create_function car elles ont de meilleures performances et une meilleure lisibilité.
Il s’avère que cette explication était très claire et j’ai pu rapidement réécrire le code de manière appropriée. Ce plugin fonctionne maintenant sans problème dans le nouvel environnement PHP 8 de mon hébergeur.
Les conséquences de l’utilisation de ChatGPT sur le patch de bug lors de montées de version PHP
Eh bien, cela a certainement permis de gagner du temps. Normalement, faire ça implique des allers retour entre l’environnement de programmation et de débogage, et beaucoup de recherches incrémentales sur le Web où les indices sont traqués et les discussions et commentaires sont lus.
Ne vous méprenez pas. Ce processus classique 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 lorsque vous êtes pressé ou que vous devez respecter un délai, c’est bien. Bref, poser ces questions de programmation à ChatGPT s’est avéré très efficace.
Mais comme avec toute IA, vous devez être conscient qu’il y a des lacunes dans les connaissances de l’IA, et que vous pourriez très bien obtenir des réponses complètement fausses. Mais utiliser ChatGPT comme un outil simple, comme tout autre outil de ma boîte à outils, s’est avéré très productif.
Je me demande cependant où l’IA a trouvé ses informations. Y a-t-il un auteur qui, comme moi, a écrit un article très instructif sur l’extraction ou la création d’une fonction dont les mots sont « pompés » dans une réponse de ChatGPT sans être crédités ou monétisés ? Les connaissances durement acquises de quelqu’un sont-elles utilisées comme source pour ces réponses ?
Cela m’inquiète. Au moins, avec Google, les auteurs ont une chance de voir le moteur de recherche envoyer 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. Bien sûr, j’ai bénéficié de la productivité d’une réponse rapide. Mais quelqu’un d’autre a-t-il perdu dans le lot l’attribution de son travail ? Et bien j’ai demandé à ChatGPT.
Voici la question que j’ai posé à ChatGPT : ChatGPT, lorsque vous répondez à une question, prenez-vous les connaissances que d’autres ont apportées et retirez-vous le travail et le crédit aux sources humaines originales ?
Et voici la réponse de ChatPGT que j’ai reçu : En tant que modèle linguistique d’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 grandes 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 possibilité d’attribuer le crédit à des personnes 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 à partir de modèles de données sur lesquels j’ai été formé et qu’elles peuvent ne pas être tout à fait exactes ou à jour.
Alors, oui, voici la réponse : « De grandes quantités de textes provenant d’Internet. » Tout est dit.
Source : « ZDNet.com »
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));