GitHub

GitHub présente Copilot, une IA qui écrit du code pour vous

Faire du pair programming avec une intelligence artificielle, vous y avez déjà pensé ? Cela va désormais être possible avec ce nouvel outil impressionnant présenté en ce début de semaine par GitHub.

La célèbre plateforme d’hébergement et de gestion de code détenue par Microsoft vient d'introduire Copilot, une IA capable de générer du code pour vous.



Cet outil, qui s'intègre sous la forme d'une extension dans l'éditeur de code Visual Studio Code, également maintenu par la firme de Redmond (et qui sera aussi accessible depuis l'environnement de développement dans le cloud GitHub Codespaces), est en mesure d'utiliser les indices contextuels d'un projet de développement afin de suggérer des lignes voire des blocs entiers de code et de commentaires au fil de votre saisie dans l'éditeur.

Pour faire simple, Copilot analyse le code que vous avez déjà écrit pour en générer du nouveau, tout en étant en mesure de réutiliser par exemple des fonctions récurrentes déjà déclarées et appelées dans votre projet. La solution est également capable de déduire du code en fonction des commentaires que vous rédigez (en anglais exclusivement) en amont, voire même en se basant sur le nom de vos fonctions, comme cela peut être vu dans l'exemple ci-dessous.

GitHub présente Copilot comme une version 2.0 du pair programming, une méthode de programmation où deux développeurs travaillent ensemble sur le même poste de travail, et où celui qui ne saisit pas le code en profite pour faire une petite sieste pointe du doigt les éventuelles erreurs et peut proposer des optimisations. Avec Copilot, l'un de ces développeurs devient virtuel.

S'appuyant sur des mécanismes de machine learning, Copilot est censé s'améliorer et s'adapter aux projets dans lesquels il est intégré avec le temps, apprenant chaque fois plus au fil des lignes de code saisies par l'utilisateur.

L'outil permettra également aux utilisateurs de sélectionner des interprétations alternatives à sa suggestion initiale, ou encore d'éditer cette dernière manuellement.

Ce projet se présente comme le premier livrable majeur résultant de l'investissement colossal d'un milliard de dollars de Microsoft dans OpenAI, annoncé il y a 2 ans maintenant (mi-2019). Cet organisme initialement à but non lucratif (désormais à but lucratif plafonné) a pour mission principale le développement d'intelligences artificielles dont l'objectif est de bénéficier à l'humanité (rien que ça !).



GitHub Copilot repose en grande partie sur OpenAI Codex, un système d'intelligence artificielle capable de convertir du langage naturel en code.

L'outil Codex a été entraîné sur plusieurs terabytes de lignes de code publiques sur GitHub, ainsi que sur des textes en anglais, qui lui permettent d'interpréter des commentaires et leur logique.

Alors que le fait d'exploiter des tonnes de code sous licence GPL pour alimenter un produit commercial peut poser de sérieuses questions d'éthique, notamment sur l'aspect violation de licence (le copyright couvrant les usages dérivés en plus des copies), GitHub indique "qu'entraîner des modèles de machine learning sur des données publiques est considéré comme une utilisation acceptable au sein de la communauté du machine learning".

Meh.

L'entreprise précise que le code généré par Copilot a vocation à être unique : la solution n'a pas pour objectif de mimer ou copier/coller du code retrouvé dans des projets publics sur GitHub, mais bien de produire du code "neuf" d'elle-même. 0,1% des suggestions proposées par Copilot pourraient néanmoins contenir des extraits de code en provenance des données d'entraînement.

La société détenue par Microsoft tient également à rassurer sur le plan de la propriété intellectuelle, présentant de manière explicite Copilot comme "un outil, au même titre qu'un compilateur ou qu'un stylo", et confirme que le code généré par Copilot appartiendra exclusivement aux développeurs qui en feront usage.

Précision importante également : ne vous attendez pas à avoir du code parfait, qui fonctionnerait du premier coup ! GitHub indique bien que les suggestions proposées par Copilot ne fonctionneront pas forcément à chaque fois, et ajoute qu'il sera important de contrôler et tester le code généré, "comme n'importe quel code" (on teste bien tous notre code, n'est-ce-pas 👀).



De son côté, OpenAI prévoit de publier d'ici la fin de l'été une release exploitable de Codex à travers son API, afin de permettre aux développeurs de construire leurs propres applications en utilisant cette technologie.

Selon un billet publié sur le blog officiel de GitHub par son CEO Nat Friedman, bien que Copilot soit en mesure d'appréhender et comprendre plusieurs dizaines de langages de programmation, celui-ci fonctionnerait de manière plus optimale avec les langages Python, JavaScript, TypeScript, Ruby et Go – sans grande surprise, il s'agit des langages de programmation les plus populaires sur la plateforme GitHub.

Pour le moment, Copilot n'est disponible que sous la forme d'une preview technique et pour un nombre restreint de bêta-testeurs seulement. Pour les plus curieux d'entre vous, sachez qu'il est néanmoins possible de s'inscrire à la liste d'attente depuis la page dédiée à l'outil.

Est-ce que ce truc va nous voler nos jobs ?

On ne va pas se mentir, en découvrant qu'une telle technologie débarque sur le marché, c'est la première question qui nous vient en tête : les développeurs auraient-ils d'eux-mêmes créé l'outil qui causera leur propre perte ?

À l'heure où les projets low-code / no-code commencent à s'ériger en tendance en (sur)vendant la création de solutions informatiques sans qu'aucune connaissance en programmation ne soit nécessaire, l'intelligence artificielle serait-elle capable de nous remplacer nous, développeurs, dans un futur pas aussi lointain qu'on le croyait ?

Pour ma part, bien que très impressionné par ce qu'a accompli GitHub, je suis encore loin de passer dans la catégorie des alarmistes sur ce sujet (ou alors, il va vite falloir que je trouve un moyen de faire rire des IA 😅).

Cette dernière année nous l'a bien montré : les solutions et outils informatiques ont plus que jamais leur place à tous les niveaux de notre société, et de nombreux vides restent encore à combler. On constate également de plus en plus de besoins en développeurs dans le monde (aussi en France évidemment), et c'est d'ailleurs pour cela que des formations en dehors des cursus universitaires "classiques" sont autant en vogue aujourd'hui, face à une pénurie de développeurs qui peine chaque année à être évitée.



De mon point de vue, ce genre de solution doit être vu comme un outil et non un danger. J'aurais plutôt tendance à la voir arriver à nous avec enthousiasme, comme une aide nous proposant de devenir plus productifs, et pourquoi pas nous alléger un peu (à défaut de charge de travail, au moins d'heures de recherches / debugs pas forcément hyper enrichissantes parfois).

Je pense aussi que celle-ci va probablement avoir besoin de quelques années de rodage avant d'atteindre un niveau de satisfaction intéressant.

Selon le CEO de GitHub, l'émergence de ce genre de solution correspondrait à l'avènement d'une troisième révolution dans le monde du développement informatique.

La première était la création d'outils comme les compilateurs, débuggeurs et langages permettant aux développeurs d'être plus productifs, la seconde correspondait à l'essor d'une large communauté open source au sein des développeurs. La troisième serait alors l'introduction de l'IA au cœur de la programmation.

Celui-ci ajoute, très justement : "les problèmes que nous mettions plusieurs jours à corriger pourraient diminuer en nombre, mais il y aura toujours des problèmes que les humains devront résoudre."

***
Cet article vous a plu ? Alors pensez à me suivre sur les réseaux sociaux ! 😉
S'abonner aux Joies du Code sur Facebook
Suivre Les Joies du Code sur Twitter

À propos de l'auteur
Nicolas Lecointre
Chief Happiness Officer des développeurs, ceinture noire de sudo. Pour rire, j'ai créé Les Joies du Code. J'utilise Vim depuis 10 ans parce que je sais pas comment le quitter.