Une programmation plus fiable, efficace et sûre grâce à l’apprentissage automatique
Chaque année, des milliards d’euros sont dépensés pour corriger les défauts des logiciels, qui proviennent souvent d’un code défectueux. Il faudrait disposer de logiciels plus fiables, plus efficaces et plus sûrs. Il s’avère toutefois difficile, voire impossible, de créer de tels logiciels avec les techniques traditionnelles. C’est dans ce contexte que le projet BIGCODE, financé par l’UE, entre en jeu. En combinant langages de programmation et apprentissage automatique, le projet élabore de nouveaux types de moteurs de programmation capables de proposer des solutions statistiquement plausibles à des problèmes qu’il serait autrement impossible de résoudre. «Le projet a créé de nouveaux types de modèles d’apprentissage automatique qui peuvent être entraînés sur du code informatique», explique Martin Vechev(s’ouvre dans une nouvelle fenêtre), responsable du Secure, Reliable, and Intelligent Systems Lab(s’ouvre dans une nouvelle fenêtre) (SRI) à l’École polytechnique fédérale de Zurich(s’ouvre dans une nouvelle fenêtre) (ETH Zurich) et coordinateur du projet BIGCODE. «L’objectif consiste à utiliser ces modèles pour résoudre diverses tâches importantes. Il s’agit par exemple de générer du code nouveau, de détecter des violations de sécurité dans le code existant et de procéder à des traductions entre différents langages de programmation, pour n’en citer que quelques-unes.»
De nouveaux types de modèles d’apprentissage automatique
Le principal résultat du projet, qui a bénéficié du soutien du Conseil européen de la recherche(s’ouvre dans une nouvelle fenêtre), réside dans le développement de nouveaux types de modèles fondamentaux d’apprentissage automatique. «Ce qui rend ces modèles si uniques, c’est le fait qu’ils puissent être entraînés sur du code et relever des défis auparavant impossibles à surmonter», explique Martin Vechev. «Par ailleurs, nos modèles sont interprétables, ce qui signifie que les décisions qu’ils prennent peuvent être à la fois comprises et inspectées par des humains.» En développant des modèles d’apprentissage automatique, les chercheurs ont constaté que les programmes informatiques présentaient une sémantique complexe et formelle. La réussite de l’entraînement effectué sur le code passe par la capacité à intégrer des méthodes symboliques dans le processus, en vue d’extraire cette sémantique. Selon Martin Vechev, cela va bien au-delà des méthodes utilisées pour entraîner des modèles basés sur le langage naturel ou les images. «En tant que telles, nos avancées ont révélé une valeur conceptuelle dépassant le cadre du code, par exemple pour la synthèse de programmes bruyants (noisy programme synthesis), le traitement du langage naturel et la découverte de nouveaux types de grammaires formelles», fait remarquer Martin Vechev. «Dans un sens, travailler dans le domaine du code s’est avéré profitable pour développer de nouvelles méthodes qui peuvent être facilement généralisées.»
Des logiciels plus fiables et plus sûrs
Les modèles développés dans le cadre du projet BIGCODE, que Martin Vechev appelle «l’IA pour le code», sont déjà utilisés par des centaines de milliers de codeurs, et permettent de concevoir des logiciels plus fiables et plus sûrs. En s’appuyant sur les travaux réalisés dans le cadre du projet, les chercheurs ont également mis sur pied une start-up florissante, baptisée DeepCode(s’ouvre dans une nouvelle fenêtre). Cette start-up a depuis été rachetée par Snyk(s’ouvre dans une nouvelle fenêtre), une importante société du secteur de la cybersécurité qui a intégré DeepCode dans bon nombre de ses opérations. «Le projet BIGCODE a montré qu’il était possible non seulement de faire progresser nos connaissances et d’aider à mettre en place de nouveaux domaines de recherche, mais aussi d’utiliser ces avancées pour créer des entreprises “deep-tech” prospères, possédant une valeur économique considérable», conclut Martin Vechev.