Cela fait plusieurs mois que je fais du pair programming avec un partenaire assez spécial : une intelligence artificielle.
Avant d’aller plus loin dans ce billet de blog je vais prendre quelques lignes pour définir dans un premier temps c’est quoi le pair programming ou programmation en binôme en français. Il s’agit d’une approche de travail dans laquelle deux développeurs travaillent ensemble sur un même poste de travail. La personne qui rédige le code est appelée conducteur (driver). La seconde personne, appelée observateur (observer), assiste le conducteur en décelant les imperfections, en vérifiant que le code implémente correctement le design et en suggérant des alternatives de développement. Les rôles s’échangent régulièrement pendant la séance de programmation. La programmation en binôme fait partie des bonnes pratiques de l’extreme programming.
Qu’est-ce que GitHub Copilot ?
Comme je l’ai mentionné un peu plus haut cela fait quelque temps que j’ai un collaborateur un peu étrange qui s’appelle GitHub Copilot.
Vous vous demandez probablement c’est quoi Copilot ? GitHub Copilot est une intelligence artificielle développée par GitHub qui vous assiste dans l’écriture du code
L’outil repose sur OpenAI Codex, une AI développée par la fondation OpenAI en collaboration avec GitHub. Grâce à cela, GitHub Copilot est capable de deviner le contexte à partir des commentaires, nom des fonctions, etc., et générer le code correspondant. Il vous suffit donc, par exemple, pour une méthode d’écrire quelques lignes de commentaires dans votre éditeur de code pour que GitHub Copilot procède automatiquement à la génération du code source correspondant. En plus de la génération du code, Copilot est capable de faire des suggestions d’alternatives pour vous aider à améliorer la qualité de votre code source.
OpenAI Codex est basé sur le GPT-3 (Generative Pre-trained Transformer). Il s’agit d’un modèle de langage de troisième génération développé par OpenAI. C’est le plus gros modèle de langage jamais entrainé avec 175 milliards de paramètres à partir des données textuelles disponibles sur Internet.
Le modèle OpenAI Codex utilisé par GitHub Copilot a été entrainé à partir des milliards de lignes de code des projets open source sur GitHub et des exemples de code sur Stackoverflow.
Quels sont les langages et outils de développement supportés par GitHub ?
GitHub Copilot existe en préversion depuis l’année dernière et est en disponibilité générale depuis cet été. GitHub Copilot supporte de nombreux langages dont Python, JavaScript, TypeScript, Ruby, Go, C# ou encore C++.
Il est disponible comme une extension pour Visual Studio Code, Visual Studio, l’éditeur de texte Neovim et les outils JetBrains.
Quelle est mon expérience avec GitHub Copilot ?
J’ai eu le privilège d’accéder à la plateforme lorsqu’elle était encore en bêta privé il y’a quelques mois. Je l’utilise donc depuis dans le cadre de certaines de mes activités.
Avant de vous parler de mon expérience avec la plateforme, j’aimerais dans un premier temps situer le contexte d’utilisation de GitHub Copilot. Mon environnement de travail correspond donc à ce qui suit :
- Outils de développement : Visual Studio Code, Visual Studio 2022 Preview
- Langages de programmation : C#, ASP.NET Razor, ASP.NET Blazor, JavaScript, HTML, CSS, YML, JSON, Bicep.
- Activités : formations, laboratoires, rédaction d’articles, preuve de concept, exemple de code source, réalisations professionnelles.
Pour la réalisation des laboratoires, formations et démonstrations, j’apprécie énormément l’accompagnement que GitHub Copilot m’apporte. Les réalisations dans le cadre de ces activités sont couramment des petits projets pour démontrer des notions relatives simples ou pour rapidement mettre en place le code de démarrage pour un laboratoire.
Github Copilot est d’une grande aide pour des tâches répétitives. Dans l’exemple ci-dessous, par exemple, je devais créer des stages Azure Pipelines pour le déploiement d’une application. Les stages sont couramment identiques en dehors des paramètres qui changent. Copilot m’a proposé automatiquement les lignes de code à ajouter pour mon stage :
Pour l’exemple C# ci-dessous, j’apprécie également le fait que Copilot nous laisse le choix de décider de quelle implémentation nous souhaitons adopter lorsqu’il a trouvé plusieurs correspondances. Les boutons « Next » et « Previous » permettent de switcher entre les différentes propositions de GitHub Copilot avant de faire un choix.
Les suggestions de GitHub Copilot sont assez complètes. Dans certains cas, vous n’aurez que quelques ajustements à faire afin que le code puisse correspondre à vos besoins.
Même sur du bicep, qui n’est pas officiellement supporté, si je ne me trompe pas, GitHub Copilot est capable de faire des suggestions. Certes, dans le cas du Bicep, compte tenu de la maturité du langage de Script, je dois couramment apporter plusieurs ajustements. Mais, il est indéniable que je suis capable d’écrire mon script Bicep plus rapidement grâce à GitHub Copilot.
Plus le langage de programmation que vous utilisez est mature et populaire, plus les suggestions de Copilot seront précises.
GitHub Copilot est un compagnon de travail avec lequel je commence à m’habituer et dont j’apprécie les suggestions qui m’aident à avancer un peu plus rapidement dans mes travaux.
Pour la plupart de mes démonstrations, les méthodes, variables, commentaires sont en anglais et les suggestions de GitHub Copilot sont pertinentes. En revanche, pour certaines de mes activités professionnelles, je dois utiliser le français dans mon code. Les suggestions sont un peu moins pertinentes. Mais, c’est tout à fait normal, car le contenu public sur lequel s’appuie Copilot est principalement en anglais.
Bien que j’apprécie l’outil, je tiens à noter toutefois que je ne le recommande pas à des personnes qui apprennent à programmer, car ça ne les aidera pas dans la maitrise du langage.
Quelle est la tarification du service ?
J’ai le privilège d’accéder gratuitement à la plateforme grâce à mes avantages Microsoft MVP. Mais, le service est payant depuis qu’il a été annoncé en version stable.
L’abonnement coute 10$ par mois ou 100$/an par utilisateur. Vous pouvez bénéficier d’un essai gratuit de 60 jours pour voir si le service répond à vos besoins.
Comment activer le service ?
L’activation du service se fait depuis votre compte GitHub. Vous devez aller sur la page GitHub Copilot dans les paramètres du compte :
Comment installer GitHub Copilot dans votre IDE ?
Vous devez l’installer à partir de la galerie d’extension de votre environnement de développement. Veuillez noter qu’uniquement les IDE suivants sont supportés : Visual Studio 2022 Preview, Visual Studio Code, Neovim et les outils JetBrains.
Je tenais à travers ce billet de faire un retour sur GitHub Copilot. Laissez-moi un commentaire si vous avez un avis à partager sur la plateforme.
Sources :
- La page du projet : https://github.com/features/copilot
- La documentation de démarrage : https://docs.github.com/en/copilot/quickstart