DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Utilisons l’IA pour corriger les bogues et rédiger la documentation
    Uncategorized

    Utilisons l’IA pour corriger les bogues et rédiger la documentation

    février 22, 2023
    Utilisons l'IA pour corriger les bogues et rédiger la documentation
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Le mois dernier, j’ai partagé ma première expérience avec ChatGPT et GitHub Copilot. J’ai été impressionné, mais pas bouleversé. Les suggestions de l’IA peuvent être exactes, mais uniquement dans la mesure où votre question est spécifique et pertinente. Il ne peut pas lire dans vos pensées, mais il peut trouver des solutions à des tâches bien définies qui ont été résolues auparavant – et pour lesquelles il existe peut-être déjà une solution de bibliothèque parfaitement bonne. Savoir quoi construire reste la partie la plus difficile de toutes et nous sommes loin d’automatiser tout le parcours, de l’idée au code.

    J’ai deux autres remarques à faire sur le sujet. Premièrement, puisque nous, en tant que programmeurs, sommes tenus de rester dans le siège du conducteur pendant un certain temps, nous ferions mieux de rester vigilants. Deuxièmement, je pense que l’accent devrait être moins mis sur les solutions qui convertissent les idées en code. Personnellement, j’ai hâte d’avoir une IA utilisable qui puisse faire l’inverse : analyser un enchevêtrement non documenté de quatre-vingts microservices et m’expliquer en anglais clair de quoi il s’agit, car personne ne s’est soucié de tenir la documentation à jour.

    Le Saint Graal : de l’idée au code

    Les nouveaux langages de programmation s’éloignent de plus en plus des calculs mathématiques consistant à déplacer des octets. Ils libèrent de l’espace libre pour relever le défi de modéliser le monde réel dans un code exécutable à un niveau d’abstraction toujours plus élevé. Mais même les solutions sans code ou les moteurs de workflow graphiques restent des langages de programmation. Ils ne prennent qu’une forme différente de compétences en codage, ce qui est une mauvaise nouvelle pour les talents en mathématiques. Finalement, vous entamez un dialogue avec l’IA, expliquez la tâche que vous souhaitez automatiser, et elle le fera, sans que vous, le « programmeur », ne voyiez (ou ne vous souciez) de la manière dont elle est mise en œuvre.

    Cette étape parfaite est l’équivalent d’une voiture autonome entièrement autonome. Vous lui dites où vous voulez aller et il vous y emmène. Il est si fiable que vous n’avez pas besoin d’un volant ou d’un accélérateur. En fait, il est juste que vous ne puissiez plus intervenir. Vous ne sauriez plus comment faire. Nous n’en sommes pas encore là. Le champ de mines juridique entourant la responsabilité est un obstacle plus important que l’état de l’art, qui fait un meilleur travail que de nombreux conducteurs. Jusqu’à ce que nous puissions commander notre propre robot chauffeur, nous bénéficierons d’une assistance de plus en plus sophistiquée qui nécessite pourtant un chauffeur parfaitement compétent. Paradoxalement, cela ne rend pas la conduite plus sûre. Plus l’IA est digne de confiance, plus vous êtes tenté de vous déconnecter du trafic environnant. Le rare moment où vous avez besoin de passer à l’action, vous constaterez que vos compétences se sont atrophiées (si vous faisiez attention du tout).

    L’analogie avec l’écriture de logiciels assistée par l’IA est évidente. En tant qu’êtres humains, nous ne pouvons abandonner le contrôle en toute confiance que si le processus est irréprochable et prévisible, comme une compilation. L’idée telle qu’exprimée en langage humain et traduite en logiciel exécutable devrait être comme le code Java tel qu’il est converti en code d’octet par le compilateur. Peu de programmeurs savent en détail comment cela fonctionne. La plupart n’ont aucune idée. Ils peuvent se permettre de ne pas savoir parce que c’est un processus solide et prévisible.

    Ni copilote ni pilote automatique

    Ne pas être pédant, mais GitHub Copilot est vraiment un pilote automatique. Dans l’aviation, un copilote est un être humain pleinement capable. Le pilote automatique de l’avion est un ensemble d’outils avancés qui aident mais ne remplacent pas le pilote. Mais ils ont le pouvoir de vous rendre paresseux. Comme le conducteur et le pilote, le programmeur ne peut pas se permettre de perdre son acuité. Elle doit avoir un bon jugement sur les suggestions offertes.

    La saisie semi-automatique traditionnelle nous a rendus paresseux. Les nouvelles saveurs de l’IA nous le rendront encore plus. Si vous n’êtes pas au courant de la sécurité des threads et ne savez pas ce qu’est un verrou réentrant, une collection concurrente ou un entier atomique, vous ne pouvez pas demander à l’IA d’en créer un ou de reconnaître que vous en avez besoin. Je prépare toujours l’examen OCP-17. Je suis partagé entre ma conviction qu’en tant que développeur senior qui se respecte, vous devriez savoir ce genre de choses, et mon agacement face au sujet et à la ligne de questionnement. Qu’est-ce que j’apprends en me penchant sur des extraits alambiqués pour repérer un manquant jette déclaration? Pourquoi devrais-je connaître les signatures exactes des principales méthodes statiques du Des dossiers classe? Vous l’utilisez, ou vous le perdez, et je sais que j’en oublierai rapidement une grande partie. Mon cerveau a une efficacité bizarre. Ce qui colle vraiment, ce sont les citations de films et les paroles de chansons. Peut-être devrais-je régler l’API NIO sur la musique.

    Mais les gens d’Oracle ont raison avec leurs petites épaves de train soigneusement déroutantes. Cela aiguise vos pouvoirs de perception, et c’est une reconnaissance du fait qui donne à réfléchir que vous passez de nombreuses heures de votre carrière à lire du code terrible, dont certains sont les vôtres. Trop de livres et de cours vous apprennent à écrire du nouveau code. Peu de gens apprécient la valeur de l’apprentissage de bonnes compétences en maintenance : apporter des améliorations au coup par coup et des corrections de bogues qui ne font pas planter le système. Personne n’aime le faire, alors laissez l’IA s’en occuper. S’il est si intelligent, laissez-le parcourir les traces de la pile dans les journaux du serveur et revenez avec la cause première de cette panne. Ce serait impressionnant.

    De la mise en œuvre à l’intention

    Combien de réécritures de systèmes hérités auraient pu être évitées si nous n’avions pas perdu la vue d’ensemble de la façon dont les pièces s’emboîtent ? Mais personne n’a pris la peine de tenir la documentation à jour. (Si vous pensez que la documentation des grands systèmes d’entreprise est chère, essayez une réécriture complète). Il en va de même pour la corvée habituelle de mise à jour des bibliothèques et de migration des sources vers des versions d’exécution plus récentes. Ne le faites pas à la main, utilisez une initiative comme OpenRewrite.

    Revenir de la mise en œuvre à l’intention (c’est-à-dire la documentation) est la prochaine grande victoire. Nous n’avons pas besoin de plus de code. Nous devons mieux comprendre ce qui existe déjà, avec l’aide de l’IA. Je ne parle pas de documentation API générée automatiquement pour les méthodes qui s’auto-documentent déjà. Cela ne traduit jamais l’intention de la grande image. Je parle de manuels conviviaux pour les systèmes de grande entreprise à plusieurs niveaux de complexité. Laissons l’IA distiller l’intention d’un tel réseau de services interconnectés à partir du code de ses éléments constitutifs. Transformez-le en diagrammes compréhensibles et expliquez-le dans un anglais simple. N’entassez pas tout dans une séquence ou un diagramme d’activité. Utilisez une méthode de division pour mieux régner, allant de la vue d’ensemble aux détails individuels. Je le nourris d’un modèle de données comme celui-ci:

    Diagramme de classe

    … et ça retourne quelque chose comme ça :

    Ce modèle de données représente une bibliothèque de prêt de livres. Il stocke les titres de livres identifiés par leur ISBN et conserve les données biographiques de chaque auteur. Un titre de livre peut avoir zéro ou plusieurs exemplaires physiques. Un prêt de livre est enregistré avec l’identifiant du membre, l’exemplaire du livre, la date du jour et la date de restitution.

    Trivial, bien sûr. Mais imaginez maintenant que c’est mille fois plus compliqué et que le cerveau humain n’est plus équipé pour créer une vue à vol d’oiseau.

    Ils disent que les développeurs aiment coder et détestent écrire de la documentation. Peut-être que Microsoft devrait réaligner ses priorités avec les futures versions de GitHub Copilot.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.