Pourquoi le copilote de GitHub n’est pas la fin de la programmation –
Le lancement de Copilot par GitHub a suscité pas mal de discussions au cours de la semaine dernière. Copilot prétend être « votre programmeur de paires d’IA » qui travaille à vos côtés pour produire un meilleur code.
Distribué en tant qu’extension Visual Studio Code, Copilot est comme une saisie semi-automatique beaucoup plus puissante qui peut remplir des sections entières de code. Il examine ce que vous écrivez et suggère de nouvelles lignes ou des fonctions entièrement autonomes.
L’introduction de Copilot a fait craindre qu’il ne remplace finalement complètement les développeurs. Après tout, s’il sait ce que vous écrivez et peut suggérer la suite, n’est-ce pas encore ce qui se rapproche le plus d’un développeur basé sur l’IA ? Voici pourquoi ce n’est pas le cas.
Sommaire
Qu’est-ce que le copilote en réalité ?
Tout d’abord, il est utile d’explorer ce qu’est Copilot aujourd’hui. La version préliminaire est basée sur OpenAI Codex, un système d’IA acquis par Microsoft auprès d’OpenAI. C’est un puissant analyseur de code source compatible avec des dizaines de langages de programmation populaires.
Le Codex est destiné à comprendre « comment » les gens utilisent le code. Il détermine le contexte du code que vous écrivez et suggère ce qui pourrait suivre. Contrairement à la saisie semi-automatique d’un IDE, Copilot est capable de synthétiser une nouvelle sortie à partir du code qu’il a appris. Ce n’est pas seulement un index de code déjà vu.
GitHub cite actuellement quelques exemples spécifiques comme cas d’utilisation clés. Celles-ci incluent la génération de fonctions communes, la production automatique de tests unitaires et une meilleure découverte du code dans les API et les bibliothèques. Si vous intégrez une API tierce commune, Copilot peut vous aider à démarrer avant d’avoir lu la documentation ou copié un passe-partout.
Le système peut également automatiser l’achèvement de sections de code répétitives, telles qu’un tableau d’objets ayant des propriétés similaires. Vous pouvez écrire les premiers manuellement, puis demander à Copilot de remplir le reste du tableau à l’aide de votre exemple. Cela rappelle de faire glisser les valeurs des cellules dans Excel.
Jusqu’où va Copilot ?
À l’heure actuelle, la réponse est « pas très loin ». Malgré tous les mots à la mode « intelligence », « contextuel » et « synthétiseur », Copilot a encore un aperçu limité de vos véritables intentions et de ce que votre code doit accomplir.
Copilot ne regarde que votre fichier actuel lors du calcul des suggestions. Il n’évaluera pas comment le code est utilisé dans votre programme. L’interprétation de votre travail par l’IA peut être très différente de la vôtre et peut varier d’un fichier à l’autre, même si le véritable raisonnement derrière les fichiers ne change pas.
GitHub indique également clairement que la sortie de Copilot n’est pas garantie d’être la « meilleure » approche ou même le code qui fonctionne. Vous pouvez rencontrer des problèmes de sécurité, des lignes utilisant des fonctionnalités de langage anciennes ou obsolètes, ou du code qui ne fonctionne tout simplement pas ou n’a pas de sens. Vous devez auditer chaque suggestion Copilot que vous utilisez pour vous assurer que votre projet est toujours compilé et exécuté.
Le rôle réel de Copilot dans le processus de développement devrait maintenant être un peu plus clair : c’est une technologie d’assistance, destinée à rendre le quotidien un peu plus facile, pas un véritable automate. Considérez-le comme un acolyte ou un navigateur, pas une forme de développeur omniscient qui écrit votre code pour vous.
Le copilote ne s’adapte pas
Copilot est le meilleur lorsque vous le laissez vous aider à écrire des fonctions qui résolvent les cas d’utilisation courants. Ce qu’il ne peut pas faire, c’est comprendre le contexte plus large de votre base de code. Sans la capacité de vraiment comprendre vos intentions, l’échelle de Copilot est limitée.
GitHub dit qu’il travaille à rendre Copilot plus intelligent et plus utile. Mais jusqu’à ce qu’il soit capable d’examiner l’ensemble de votre projet, pas un seul fichier, on ne sait pas comment son rôle pourrait être étendu davantage. Dans son état actuel, Copilot est essentiellement une saisie semi-automatique glorifiée. Au lieu d’appuyer sur la tabulation pour remplir automatiquement les noms de fonctions de bibliothèque standard, vous pouvez accepter des suggestions pour les fonctions elles-mêmes.
Les solutions à des problèmes techniques abstraits abondent déjà sur des sites de programmation comme Stack Overflow. Copilot réduit le temps nécessaire pour rechercher une question, examiner les réponses et copier-coller le code. Cependant, il vous reste à déterminer comment intégrer la solution dans votre système global, après avoir vérifié que la suggestion de Copilot fonctionne réellement.
Copilot ne programme pas vraiment du tout. Il examine ce que vous avez écrit, en déduit ce que vous essayez de faire et essaie d’assembler quelque chose de convenable à partir de ses solutions apprises. Copilot travaille pour vous, et non l’inverse. Il est incapable de penser de manière créative, de suggérer une architecture de haut niveau ou de produire un système cohérent. Chaque suggestion est entièrement autonome et dérivée uniquement du code qui l’entoure immédiatement dans le fichier source.
De l’aveu même de GitHub, Copilot dépend vraiment de vous. L’outil fonctionne mieux lorsque votre base de code est logiquement organisée en petites fonctions avec des saisies, des commentaires et des blocs de documentation clairs. Si vous voulez les meilleurs résultats, vous devrez guider Copilot en écrivant vous-même un code de haute qualité.
Qu’en est-il des licences ?
Copilot a été formé à l’aide de projets publics GitHub avec une grande variété de licences. Selon GitHub, cela représente une utilisation équitable de ces projets. Ce qui est moins clair, ce sont vos responsabilités si vous acceptez une suggestion de Copilote.
GitHub dit que la sortie de Copilot « vous appartient » et « vous en êtes responsable ». Il indique explicitement que vous n’avez pas besoin de créditer Copilot ou tout autre auteur si vous utilisez un extrait suggéré. La société tient à présenter Copilot comme un « synthétiseur de code » qui produit une sortie originale, et non comme un moteur de recherche d’extraits indexés.
C’est ici que les ennuis commencent. Copilot a toujours une chance de produire des sections de code textuellement. Selon les licences entourant ces extraits, cela pourrait mettre votre propre projet dans l’eau chaude. Comme Copilot a été formé sur des projets GitHub, vous pourriez même constater que des données personnelles sont injectées dans vos fichiers source.
Ces événements sont censés être rares. On dit qu’ils sont plus probables si le contexte du code environnant est faible ou peu clair. Les exemples vus jusqu’à présent incluent la licence GPL Code de séisme émis tel quel (avec un langage profane) et le texte du site Web et les liens sociaux d’un individu réel apparaître quand Copilot pense vous écrivez une page « à propos de moi ».
La GPL et d’autres licences similaires stipulent que les œuvres dérivées doivent inclure les mêmes autorisations, de sorte que l’incorporation de code GPL dans un produit commercial constitue une violation de licence. Par conséquent, l’utilisation de Copilot a de sérieuses ramifications juridiques que vous devez évaluer avant de l’installer. En tant que copilote Est-ce que semblent émettre du code textuellement, sans indiquer la licence accompagnant l’extrait, vous pourriez sans le savoir commettre une violation du droit d’auteur en acceptant une suggestion.
Cela devrait confirmer sans aucun doute que la version initiale de Copilot ne remplacera pas un développeur humain. Le code qu’il émet n’est pas garanti comme étant pertinent, peut être cassé ou obsolète, et peut même représenter un risque juridique.
Conclusion
Copilot est un projet ambitieux qui a suscité de nombreuses discussions. Le niveau du débat indique que de nombreuses personnes ont des sentiments forts à propos de l’idée. Cela faisait longtemps qu’un nouvel outil de développement n’avait pas suscité autant de buzz dès le premier jour.
Copilot est attrayant car il suscite plusieurs frustrations chez les développeurs. La plupart des programmeurs, sinon tous, ressentent l’inefficacité d’écrire du code « passe-partout » qui n’est pas vraiment spécifique à leur projet. Prenant Copilot pour argent comptant, ils ont maintenant une solution qui libère plus de temps pour travailler sur les aspects créatifs de leur travail.
Là où Copilot tombe en panne, c’est l’approche globale adoptée par GitHub pour former le modèle. L’inclusion de code sous licence GPL et l’absence totale de toute forme de test de sortie sont des oublis qui entraveront l’utilisation réelle de Copilot. Il n’est pas clair si la décision de GitHub d’entraîner le modèle à l’aide de code public relève réellement d’une utilisation équitable ; il y a des spéculations que ce n’est peut-être pas le cas, au moins dans certaines juridictions.
De plus, l’incapacité de GitHub à vérifier que le code Copilot fonctionne réellement signifie que les développeurs devront toujours faire preuve de prudence et revoir tout ce qu’il écrit. Une grande partie de la promesse de Copilot est d’aider les développeurs inexpérimentés à progresser, mais cela ne se produira pas si un code potentiellement bogué est suggéré et accepté.
Enfin, Copilot ne fournit aucune indication de comment ou alors Pourquoi ses suggestions fonctionnent. S’il s’agit de véritablement remplacer les développeurs humains, il doit pouvoir expliquer le fonctionnement d’une solution et donner de la visibilité sur les décisions qu’elle a prises. Les développeurs ne peuvent pas faire confiance aveuglément à la machine ; il faudra toujours surveiller et évaluer les différentes solutions.
Le comment et le pourquoi sont également le plus grand défi auquel est confronté un développeur au début de sa carrière, ce qui entrave le rôle de Copilot en tant qu’outil de mentorat. N’importe qui peut copier le code source de projets publics, de documentation, de ses pairs ou de Copilot, mais en fin de compte, c’est la compréhension du fonctionnement des solutions qui vous fait progresser dans votre carrière.
Copilot dans son itération actuelle ne résout pas cela – c’est toujours à vous de déterminer ce que fait le code inséré. Même un développeur qui s’appuie régulièrement sur Stack Overflow se retrouvera dans un meilleur endroit, car il lira les réponses et apprendra la réflexion derrière les solutions. Copilot est une boîte noire qui pourrait être considérée comme un référentiel de suggestions de code parfait ; les preuves à ce jour montrent que c’est loin d’être le cas.