Programmé par l'ordinateur

Le professeur Martin Vechev de l'ETH automatise la programmation. Il est l'un des premiers scientifiques au monde à permettre aux ordinateurs d'écrire eux-mêmes des logiciels. Il fait partie des fondateurs d'un nouveau domaine de recherche qui conna?t aujourd'hui une croissance fulgurante.

Code de programmation
Les informaticiens souhaitent automatiser en grande partie la programmation (image : Colorbox).

Des logiciels informatiques écrits par des ordinateurs : l'idée est fascinante. Et elle est réaliste, selon Martin Vechev, professeur d'informatique. Il fait partie des fondateurs d'un nouveau domaine de recherche dans lequel les informaticiens souhaitent automatiser en grande partie la programmation. Il existe déjà des programmes d'aide qui facilitent le travail des développeurs de logiciels. Et bient?t, gr?ce à de tels programmes d'assistance, les développeurs ordinaires pourront programmer aussi bien que seuls les meilleurs experts le font aujourd'hui, affirme Vechev. "Dans dix ans, l'automatisation sera si avancée que les ordinateurs pourront écrire des programmes courts de manière autonome", prédit-il.

Cela est possible gr?ce à l'apprentissage automatique et aux immenses bases de données de logiciels qui existent déjà et qui sont accessibles au public. Les bases de données publiques contiennent des millions de programmes informatiques, soit plusieurs milliards de lignes de code. Vechev appelle ce fonds immense de code de programme "Big Code". En tant que développeur de logiciels, il est facile de s'y perdre. Mais les ordinateurs peuvent aider à évaluer et à rendre utilisables ces quantités de données inimaginables.

Les ordinateurs peuvent reconna?tre des modèles dans un code existant et apprendre quels modèles sont utilisés dans quel contexte. De cette manière, ils saisissent non seulement les différents caractères et instructions, mais aussi leur signification et les règles de leur utilisation. La manière dont les ordinateurs apprennent ces règles est comparable à celle des programmes de traduction linguistique comme le célèbre Google Translate. "Ces programmes de traduction utilisent également l'apprentissage automatique pour analyser les mots dans leur contexte et en tirer des conclusions sur leur signification et leur utilisation ainsi que sur les règles grammaticales", explique Vechev.

Assistant en formation

Les futurs programmes d'assistance aux développeurs devraient fonctionner de la même manière que les fonctions de complétion qui nous aident aujourd'hui à rédiger des messages texte sur un smartphone : Un développeur de logiciels écrit par exemple les cent premières lignes de code, son programme d'assistance les analyse et les compare au code existant dans les bases de données. Sur cette base, l'ordinateur fait des propositions pour la suite, que le développeur peut accepter ou refuser. L'ordinateur utilise également de tels retours pour comprendre l'intention du programmeur et pour améliorer constamment les propositions.

Au c?ur de ces programmes d'assistance se trouvent des modèles dits de probabilité. Ils sont construits à partir d'une grande quantité de programmes et de fragments de programmes disponibles. Le programme d'assistance utilise les modèles pour indiquer à l'utilisateur les suites les plus probables. Vechev et son équipe sont en train de développer des modèles de probabilité toujours plus performants. Récemment, son groupe en a développé un - appelé PHOG - qui est actuellement considéré comme le modèle le plus précis pour évaluer le code. Le modèle fonctionne non seulement avec les langages de programmation, mais aussi avec le langage naturel. En outre, contrairement à d'autres modèles, il ne se contente pas de fournir des réponses, mais rend également le choix de ces réponses compréhensible pour les utilisateurs. "Tout le monde peut utiliser le modèle PHOG pour développer des programmes d'assistance basés sur ce modèle", déclare Vechev.

En action

Le professeur de l'ETH et son équipe développent également de tels programmes d'assistance, par exemple les deux programmes en ligne disponibles gratuitement. page externeJS Nice et page externeAPK Deguard. Ce sont des sortes de programmes de correction de code. Les utilisateurs peuvent ainsi vérifier leurs programmes et obtenir des suggestions sur la manière de les améliorer afin qu'ils soient plus compréhensibles pour les personnes extérieures. Ils permettent également de déchiffrer le contenu de programmes qui ont été intentionnellement programmés de manière difficile à comprendre, par exemple pour dissimuler des logiciels malveillants. Plus de 200 000 développeurs et professionnels de la sécurité informatique dans le monde ont utilisé le programme d'assistance JS Nice jusqu'à présent.

L'année dernière, Vechev et son ancien doctorant Veselin Raychev ont fondé le spin-off de l'ETH Deepcode. L'entreprise s'est donné pour mission de créer de nouveaux programmes d'assistance pour les développeurs sur la base des recherches effectuées dans le laboratoire de Vechev. D'autres applications sont également envisageables : Des programmes qui trouvent et corrigent les erreurs de programmation.

"? long terme, nous souhaitons développer des logiciels capables de résoudre des défis de programmation intellectuellement difficiles mieux qu'un être humain", explique Vechev. "Il y a quelques années, nous étions parmi les premiers à nous fixer comme objectif d'apprendre du 'big code'. Aujourd'hui, de nombreux collègues et sociétés de logiciels se montrent intéressés. Le champ de recherche se développe rapidement".

Cet article est publié dans le dernier numéro de "Globe" paru.

JavaScript a été désactivé sur votre navigateur