La plateforme de développement logiciel GitHub a annoncé, à la fin du mois de juin, le lancement de son dernier outil : GitHub Copilot. Conçu en collaboration avec Open AI et reposant sur Codex, moteur annoncé plus performant que GPT-3 pour de la génération de code. Cette intelligence artificielle, qui se présente sous la forme d’une extension pour Visual Studio Code, est capable de générer des blocs de code entiers.
Le dernier modèle d’intelligence artificielle de génération de code : GitHub Copilot
Le principe de GitHub Copilot est relativement simple : lorsqu’un développeur écrit du code pour développer un site web, l’outil propose une autocomplétion de portions entières de code. Nat Friedman, le PDG de GitHub s’est exprimé sur la manière dont GitHub fonctionne :
“Il vous aide à découvrir rapidement d’autres moyens de résoudre des problèmes, d’écrire des tests et d’explorer de nouvelles API sans avoir à personnaliser de manière fastidieuse une recherche de réponses sur Internet. Au fur et à mesure que vous tapez, il s’adapte à la façon dont vous écrivez le code, pour vous aider à terminer votre travail plus rapidement.”
L’outil reconnait un large éventail de frameworks et de langages, mais il reste plus efficace sur les langages suivants: Go, Ruby, TypeScript, JavaScript et Python, les cinq pour lesquels il a été conçu. Le développeur s’appuyant sur l’outil reste bien évidemment en tout instant “maître” de ce qu’il écrit : le système propose des suggestions qu’il est possible d’accepter, de rejeter.
Plusieurs fonctionnalités sont mises à disposition des codeurs, parmi lesquelles on retrouve : la génération de code à partir de commentaires rédigés en langage naturel, ou encore l’écriture de tests unitaires correspondant au code rédigé par l’utilisateur, activité rarement perçue comme enthousiasmante mais déterminante dans la production de code fiable.
Enfin, copilot permet également, le remplissage automatique de code répétitif, ainsi que la proposition de solutions alternatives, permettant de découvrir et/ou implémenter de nouvelles approches.
L’outil s’adapte au comportement et aux habitudes du développeur et prend en compte ses choix passés dans la proposition de nouvelles suggestion, afin par exemple, de ne plus faire de suggestions similaires à celles précédemment déclinées.
Les outils d’autocomplétion : une nouvelle étape dans l’évolution de la programmation
L’autocomplétion est au coeur de l’évolution des EDI depuis une vingtaine d’années. De l’affichage des paramètres de fonctions attendus aux nouvelles fonctionnalités de Github Copilot, l’objectif est de permettre aux développeurs de gagner en productivité dans une activité toujours plus complexe.
C’est notamment l’un des arguments de vente de l’éditeur TabNine, capable de réaliser des propositions d’autocomplétion aux développeurs dans vingt-deux langages de développements différents, dont Python, Java et JavaScript, C, C#, PHP ou Ruby. Cette IA a été entrainée à l’aide de deux millions de lignes de codes libres sur GitHub et repose sur l’utilisation du prédécesseur de GPT-3 : GPT-2 et d’un réseau de neurones de type Transformer.
En 2019, Codota, une start-up israélienne, acquiert TabNine pour “doper” sa prédiction de code à base d’IA. À cette époque, Dror Weiss, co-fondateur et chief executive officer de Codota, s’exprimait sur l’autocomplétion :
“L’utilisation de l’IA pour la création de code se traduit déjà par d’énormes gains de débit pour les équipes de développement, et ce chiffre ne devrait qu’augmenter à mesure que la base d’utilisateurs de Codota s’étend et que sa gamme de produits et sa technologie sont mises à niveau.”
Les deux entreprises ont depuis fusionné et le mois dernier, c’est la marque TabNine qui a été conservée comme nom principal de l’entreprise. Désormais, l’outil fonctionne avec plus d’une trentaine de langages dont Typescript, Go ou Rust, tous trois disponible sur GitHub Copilot.
Que penser de ces outils ?
La capacité des développeurs à s’appuyer sur les briques existantes pour en construire de nouvelles leur permet de ne pas chercher à réinventer chaque jour la roue, et de travailler sur des systèmes de plus en plus complexes en effaçant la difficulté des tâches plus “bas niveau”. C’est l’un des principes fondamentaux de la programmation et la mise en commun de portions de code et de librairies open source entières y est pour beaucoup.
Malgré tout, la programmation reste une activité très répétitive. Même dans un logiciel innovant, 70% à 90% des lignes de code sont bien souvent tout ce qu’il y a de plus standard : ouverture de fichier, connexion à une base de données, contrôle des champs de formulaire…
Les principaux éditeurs permettent depuis longtemps d’exploiter des “snippets” (portions de code) et “templates” de code personnalisables. Toutefois, les outils de génération de code basés sur le TAL proposent une plus grande souplesse et adaptabilité : c’est toute la différence entre l’emploi de motifs fixes et l’utilisation d’une grammaire générative.
En revanche, les langages de programmation ne laissent aucune place aux approximations. Une différence, même subtile, entre deux lignes de code peut avoir un impact radical sur le fonctionnement d’un logiciel. Or, le traitement automatique du langage, qui ne cesse de progresser, a encore un peu de mal avec les subtilités. La question n’est pas tant de savoir si le code généré sera syntaxiquement valide que de savoir s’il fait exactement ce que souhaite le développeur. Une vigilance extrême restera de mise, il s’agit donc bien encore d’assistance à la rédaction de code.
La génération de code et le no-code en vogue
Le “No code” est pourtant bel et bien l’une des grandes tendances. Microsoft a annoncé en mai dernier, la sortie de son outil de programmation Power Apps Ideas qui s’approche plus de la mouvance “no-code” en permettant à quiconque de mettre au point des traitements algorithmiques en langage naturel (ce que fait Github Copilot pour les développeurs via sa fonctionnalité de traduction des commentaires en code). Le modèle a été conçu à l’aide de GPT-3 et ses 175 milliards de paramètres afin qu’il soit capable de traiter le texte en langage naturel pour ensuite le traduire en code informatique. Les codes générés de cette façon restent plus limités que les codes développés nativement, que ce soit en terme de performances ou de fonctionnalités. Il s’agit avant tout de “scripting”, Mais ils ont l’avantage de permettre aux cols blancs de gagner en autonomie. Un argument de taille dans la croissance du marché du no-code.
Quoi qu’il en soit, GitHub Copilot et TabNine de leur côté, Power Apps Ideas du sien, sont trois outils précurseurs laissant entrevoir une évolution majeure de la façon de développer des logiciels dans la décennie 2021-2030.