Récemment, plusieurs personnes m'ont donné Amway ChatGPT et m'ont dit : Lao Liu, s'il te plaît, va le vérifier. Ce produit est si puissant que peut-être que nous tous, programmeurs, perdrons notre emploi.
J'ai souri légèrement au début, comment est-ce possible ? Mon point de vue précédent a toujours été que de mon vivant, l’IA ne pourra jamais tuer les programmeurs.
Mais il y a tellement de gens qui vendent Amway que je ne peux m'empêcher de créer un compte et d'y jeter un œil.
Je ne m'attendais pas à ce que ce produit ne soit pas ouvert en Chine. Il existe des guides sur Internet. J'ai trouvé cela gênant, alors j'ai rapidement appelé mon bon ami à l'étranger et lui ai demandé de m'aider à créer un compte.
En essayant de commencer, j'ai décidé de sauter ces questions et réponses simples, telles que :
Comment inverser une chaîne ?
Comment passer un appel HTTP ?
Parce que ce genre de chose est trop enfantin pour une IA qui a lu d'innombrables codes, et qu'il est impossible de tester sa puissance.
L'une des principales capacités d'un programmeur est d'obtenir des exigences et d'être capable de réaliser des designs élégants. Testons-le sur ce point.
Laissez-moi d'abord poser une question simple :
(Cliquez pour agrandir l'image)
Comme prévu, il a très bien "récité" !
Le dernier principe énoncé est le suivant : Essayez d'utiliser la synthèse/agrégation au lieu de l'héritage pour parvenir à la réutilisation. Il s’agit en effet d’un principe de conception important orienté objet.
ChatGPT peut-il appliquer un tel principe ?
Demandez d'abord s'il peut faire du design :
C'est vraiment bien, commençons à élargir la stratégie. J'ai un cas classique sous la main : le paiement du salaire, qui est tiré du livre classique. Développement de « logiciels agiles » : principes, modèles et pratiques.
Les exigences de ce cas sont les suivantes :
Le système se compose d'une base de données d'entreprise et de données relatives aux employés. Le système doit payer les employés à temps et selon les règles
Il y en a trois. types d'employés
1. Les travailleurs horaires ont un salaire horaire fixe. Ils soumettent chaque jour une carte de temps de travail, qui enregistre la date et le nombre d'heures travaillées. S'ils travaillent plus de 8 heures par jour, ils le seront. payé à 1,5 fois. Ils sont payés tous les vendredis.
2. Salaire mensuel Les employés ont un salaire fixe, et ils sont payés le dernier jour ouvrable de chaque mois
3. Le personnel de vente a un salaire fixe, mais il recevra un certain montant en fonction de son salaire. ventes Pour les commissions, ils soumettent des reçus de vente indiquant la date et la quantité de la vente. Ils sont payés un vendredi sur deux.
Les employés peuvent choisir le mode de paiement. Ils peuvent poster le chèque à l'adresse postale qu'ils ont désignée, le sauvegarder au service financier et le retirer à tout moment, ou demander qu'il soit déposé directement sur le compte bancaire qu'ils ont désigné.
Après avoir lu cette exigence, la conception générale est la suivante :
L'employé est utilisé comme classe de base et différents types de classes d'employés en héritent.
Mais cette exigence va changer. Le client exige que le type d'employé puisse être modifié, par exemple d'employé horaire à employé avec salaire mensuel, donc la conception ci-dessus ne fonctionnera pas.
À ce stade, vous devez faire une abstraction, utiliser une classe PaymentClassification pour exprimer la classification du paiement, puis laisser la classe Employee détenir cette instance, en termes simples, utiliser combination au lieu de l'héritage.
Cela équivaut à un trap Nos programmeurs peuvent-ils identifier et extraire ce ChatGPT ? Je suis vraiment un peu curieux.
Renseignez-vous d'abord sur les exigences initiales. La réponse de ChatGPT est la suivante :
(cliquez pour agrandir l'image)
Ne me dites pas, c'est vraiment bien. Il a « compris » les exigences et. Les noms sont utilisés pour concevoir des classes et les relations d'héritage des classes sont conçues.
A atteint le niveau primaire de conception orientée objet.
La prochaine étape est de lui creuser un trou :
C'est incroyable, ce type a réellement appris l'abstraction !
Bien que le type abstrait qu'il résume s'appelle EmployeeType, qui n'est pas aussi précis que PaymentClassification, la direction générale est la même : utilisez EmployeeType pour gérer les règles de paiement. Lorsque le type d'employé change, la classe Employee n'a pas besoin de changer.
Pour être honnête, j'ai été très surpris quand j'ai vu qu'il donnait ce résultat. On peut dire qu'il peut surpasser pas mal de programmeurs.
Ensuite, je lui ai demandé à nouveau comment gérer le cycle de paiement :
Cette fois, son abstraction était encore plus puissante, et il a directement donné le nom précis : PaymentSchedule, ainsi que le pseudocode associé !
Il est également spécifiquement mentionné que lorsque vous devez modifier le cycle de paiement, il vous suffit de modifier le PaymentSchedule sans modifier la classe d'employé d'origine La composition est meilleure que l'héritage, ce qui se reflète à nouveau.
C'est presque le même que l'exemple du livre :
Continuez et posez des questions sur le mode de paiement :
Comme prévu, son design est toujours aussi génial :
En fait , la conception de ChatGPT est très proche du plan final du livre :
Je me sens un peu déçu et je ne veux pas l'essayer ici. Ce ChatGPT est vraiment puissant, montrant de fortes capacités de conception et le processus de conversation est très fluide.
L'intelligence artificielle peut-elle vraiment comprendre les exigences, apprendre l'abstraction et concevoir de belles structures de classe ? Les compétences de base des programmeurs ont été remplacées. La crise des programmeurs arrive-t-elle vraiment ?
Je lui ai posé une autre question et lui ai demandé de dessiner la classe :
Attendez une minute, pourquoi les noms de classe ici sont-ils différents des précédents, et comment se fait-il qu'un nouveau concept apparaisse ? :Membre du syndicat? Lors de cette conversation, je ne lui ai jamais parlé de ce concept ! Où savait-il cela ? Le plus probable est que cette chose n'a pas compris les besoins que je lui ai dit.
Elle aurait dû étudier ce cas auparavant, et elle était encore en train de "réciter" ce qu'elle avait appris. Elle a pris sur elle de convaincre les syndiqués. hors de moi, cela a révélé la vérité. J'ai fermé le site Web ChatGPT, je me suis reconnecté et j'ai de nouveau interagi avec lui en utilisant le même contenu. Cette fois, le résultat a été complètement exposé.
Avez-vous vu que cette fois, il n'a pas abstrait du tout PaymentClassification/EmployeeType ? Il recommandait en fait
une idée orientée processus, en ajoutant un attribut de type et en utilisant switch pour résoudre le problème. C'est bien pire que le plan précédent. Enfin, parlons de vos ressentis ! ChatGPT est en effet très puissant. Il aurait dû apprendre une énorme quantité de données et a beaucoup de choses dans le ventre, mais il n'a toujours pas vraiment besoin de compréhension. La réponse qu'il nous propose est d'affiner et d'intégrer les connaissances existantes.
Si vous posez un problème de domaine complètement nouveau, il sera probablement confus. Vous pouvez jouer avec de vrais problèmes commerciaux.
Donc, ChatGPT est une bonne aide, mais si vous voulez vous y fier entièrement, vous devez le peser soigneusement. Ce qu'il vous dit peut être du code élégant ou du code indésirable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!