Les gens prédisent la mort de la programmation informatique depuis aussi longtemps que je me souvienne. Cela ne s’est pas (encore) produit pour diverses raisons, dont la plus importante est que la programmation est autant un art qu’une science ou une discipline d’ingénierie.
GitHub Copilot, présenté comme « Votre programmeur de paires d’IA » et actuellement dans un aperçu technique limité, s’efforce d’aider à automatiser la programmation d’une manière qui va un peu au-delà de ce qu’IntelliSense et autres peuvent fournir. Il n’est pas complètement autonome. Vous devez déclarer (taper) vos intentions avant que Copilot puisse générer un code significatif, comme nous le verrons, et vous devez également superviser Copilot pour le remettre sur les rails lorsqu’il dérape inévitablement.
Copilot est un service cloud avec des interfaces vers Visual Studio Code (s’exécutant sur votre propre machine ou s’exécutant dans le cloud sur les espaces de code GitHub) ; aux IDE JetBrains, tels que IntelliJ IDEA ; et à Neovim. Le service cloud est un moteur de prédiction de code alimenté par OpenAI Codex, un modèle de langage formé sur des milliards de lignes de code public.
Oui, il y a eu une controverse au sujet du Codex et de Copilot. Avant de commencer à vous plaindre des violations potentielles du droit d’auteur et de la vie privée de Copilot (je vous regarde, Free Software Foundation), vous devez cependant comprendre que le Codex a été formé sur du code accessible au public d’une manière souvent considérée comme une utilisation équitable. au sein de la communauté d’apprentissage automatique.
Vous devez également comprendre que Codex est un synthétiseur de code, pas un moteur de recherche. Les développeurs de Copilot reconnaissent que ce n’est peut-être pas le dernier mot sur le sujet :
… il s’agit d’un nouvel espace, et nous souhaitons engager une discussion avec les développeurs sur ces sujets et diriger l’industrie en définissant des normes appropriées pour la formation de modèles d’IA.
Comment fonctionne GitHub Copilot
Selon GitHub, « OpenAI Codex a été formé sur le code source accessible au public et le langage naturel, il comprend donc à la fois la programmation et les langages humains. L’extension de l’éditeur GitHub Copilot envoie vos commentaires et votre code au service GitHub Copilot, qui utilise ensuite OpenAI Codex pour synthétiser et suggérer des lignes individuelles et des fonctions entières. De plus, le service utilise les choix des utilisateurs pour améliorer les suggestions futures.
Test de GitHub Copilot sur Visual Studio Code< /h2>
Actuellement, Copilot est dans une phase de prévisualisation technique limitée. Avant de pouvoir l’installer utilement, vous devez appliquer à la liste d’attente du programme de prévisualisation. p>
Une fois que vous avez reçu votre e-mail de bienvenue, vous pouvez accéder au page de l’extension GitHub Copilot sur Visual Studio Code Marketplace et installez l’extension. Ensuite, vous devrez autoriser l’extension dans Visual Studio Code. La page de démarrage a un tutoriel que vous pouvez faire, en commençant au point numéro 2. Dans ce tutoriel, vous créez un fichier .JS, tapez
fonction calculateDaysBetweenDates(begin, end) {
et se retrouver avec une fonction entièrement implémentée déduite du nom de la fonction. Dans le prochain tutoriel sur cette page, vous tapez un commentaire résumant ce qu’une fonction doit faire, et vous vous retrouvez avec une fonction entièrement implémentée déduite du commentaire, même si le nom de la fonction est trop général pour être utile.
Capacités GitHub Copilot
En plus de déduire les corps des fonctions du nom de la fonction et d’un commentaire récapitulatif, Copilot peut s’inspirer d’autres codes du fichier que vous éditez et des noms de variables. Par exemple, si je tape deux points après un nom de variable dans TypeScript, Copilot tentera de remplir le type. Si je tape « var test1 = », Copilot s’appuiera sur le mot « test » et générera un test exécutable pour la fonction précédente. Si je tape plusieurs lignes qui forment un motif répétitif, Copilot essaiera de générer plus d’exemples du même motif.
Copilot fonctionne avec un large éventail de frameworks et de langages. Il fonctionne mieux avec Python, JavaScript, TypeScript, Ruby, Go et plus récemment Java, avec la famille de langages C (C, C++ et C#) prévue pour le futur. J’ai entendu dire par d’autres qu’il fonctionne très bien avec les frameworks JavaScript populaires tels que React.
GitHub prévoit que Copilot considère davantage le projet de code actuel que le fichier actuel pour son contexte à l’avenir.
Limites de GitHub Copilot
Tout d’abord, Copilot ne génère pas toujours un bon code. Il ne génère pas toujours le bon code. Pire encore, il ne génère pas toujours de code exécutable. (J’ai rencontré les trois cas lors de mes tests.)
Vous devez absolument revoir le code généré par Copilot. Traitez-le comme s’il avait été écrit par un stagiaire programmeur écologique qui maîtrise bien Google recherche mais nécessite une surveillance étroite.
Une façon d’éviter d’accepter le premier extrait proposé par Copilot est d’utiliser l’option « Ouvrir Copilote » dans son menu contextuel, ou d’utiliser la combinaison de touches Ctrl-Entrée, pour afficher la fenêtre de suggestions de Copilote dans un onglet séparé. Examinez les 10 solutions suggérées et acceptez celle qui se rapproche le plus de ce que vous voulez réellement. Cela fait, vous voudrez peut-être éditer un peu le code généré pour améliorer sa robustesse.
GitHub a réalisé un benchmark sur la génération de code Copilot :
Nous avons récemment comparé un ensemble de fonctions Python qui ont une bonne couverture de test dans les dépôts open source. Nous avons masqué les corps de la fonction et demandé à GitHub Copilot de les remplir. Le modèle a réussi 43% du temps lors du premier essai et 57% du temps lorsqu’il a été autorisé à 10 tentatives. Et il devient de plus en plus intelligent.
De toute évidence, 43 % d’exactitude n’est pas un très bon (ou même un score d’exactitude acceptable) pour une utilisation en production, même s’il s’agit d’une réalisation impressionnante pour une nouvelle technologie de génération de code. Néanmoins, si vous êtes un bon réviseur de code, vous pouvez modifier le code généré par Copilot pour qu’il soit correct et robuste beaucoup plus rapidement que vous ne pourriez l’écrire vous-même à partir de zéro, surtout si vous travaillez avec une bibliothèque ou un framework qui est nouveau pour vous.
Exemples de copilote GitHub
Il y avait environ 25 petits exemples de génération de code Copilot sur sa page d’accueil, et quatre exemples plus grands avec des vidéos d’écran d’accompagnement dans la galerie Copilot< /a> quand j’ai regardé le 5 novembre 2021. Il est probable que l’équipe Copilot publiera plus d’exemples dans une plus grande variété de langages de programmation au fil du temps. À propos, cela vaut la peine de regarder les animations dans les exemples sur la page d’accueil, ainsi que de télécharger et de regarder les vidéos MP4 de la galerie.
Dans l’ensemble, GitHub Copilot est quelque peu utile dans sa phase de développement de prévisualisation technique actuelle. Ses performances actuelles me donnent l’espoir qu’il deviendra encore plus un gain de temps à l’avenir. La question de savoir s’il vaudra la peine d’acheter le produit Copilot commercial prévu si et quand il sortira est une question ouverte qui dépendra non seulement de ses performances évoluées, mais de vos propres compétences et de votre rôle.
Plusieurs produits prétendent concurrencer GitHub Copilot. Le plus prometteur d’entre eux semble être Tabnine, d’une société du même nom en Tel Aviv. Tabnine ressemble à IntelliSense sous stéroïdes et peut éventuellement s’entraîner sur votre propre corpus de code ainsi que sur du code open source. Quelques-unes des autres alternatives recherchent essentiellement le code pertinent dans StackOverflow, ce qui me fait quelque peu méfier de leur méthodologie.
Cela vaut certainement la peine d’essayer GitHub Copilot dans votre propre environnement et de suivre ses progrès au fil du temps.
.
Toute l’actualité en temps réel, est sur L’Entrepreneur