Comment traduire de l’anglais vers du code informatique grâce à l’IA ?
Converser avec une machine est l’un des fantasmes de l’humanité depuis la création de l’ordinateur. Dès 1950, Turing publiait son célèbre article testant la faculté d’une machine à imiter une conversation humaine. Le développement récent du traitement automatique du langage naturel offre des perspectives prometteuses dans cette voie. Une autre manière d’aborder cette question est de considérer le développement informatique comme la première étape pour échanger avec un ordinateur.
En effet, grâce à des langages dédiés (langages de programmation comme Java, Python, html, css, etc.) il est aujourd’hui possible de réaliser toutes sortes d’outils comme des chatbots par exemple qui imitent le langage humain.
Créer un programme conforme à une requête exprimée en langage naturel
C’est à la croisée entre le langage parlé par des humains (le langage naturel) et le langage informatique (le langage formel) que se situe le travail de Nathanaël Beau, doctorant au sein des équipes de onepoint En effet, la thèse de Nathanaël Beau porte sur la question suivante : dans quelle mesure est-il possible, pour une machine, de créer un programme conforme à une requête exprimée en langage naturel ? Cette question correspond à un problème de traduction où l’on prend une requête exprimée dans une langue naturelle (l’Anglais par exemple) et on cherche à générer le code informatique correspondant à la requête (comme du Python). Dans cette tâche, on étudie donc l’adéquation entre un langage naturel et un langage de formel où l’ambiguïté n’est pas permise.
Figure 1 : Exemple de problème posée et de code généré par une IA pour le résoudre [1]
Source : Dan Hendrycks et al. “Measuring Coding Challenge Competence With APPS” Nathanaël Beau a deux objectifs au cours de sa thèse :- Créer un outil d’aide au développement permettant à un développeur de formuler une intention en langage naturel et d’obtenir le code informatique correspondant ;
- Assurer la validité des codes générés par son modèle et permettre leur analyse fine pour éviter les biais et permettre de l’améliorer.
Créer un outil d’aide au développement informatique
Tous les développeurs ont connu la situation où ils savent ce qu’ils veulent faire sans connaître la fonction informatique qui réalise leur intention. Pour résoudre cette difficulté, la plupart des développeurs effectuent des recherches sur le web, en formulant leur question en langage naturel, afin de sélectionner une solution possible dans le langage de programmation souhaité, puis de modifier la solution pour qu’elle soit conforme au contexte de leur projet. Dans ce processus, Nathanaël identifie trois difficultés principales rencontrées par le développeur :- Formuler une intention sous la bonne forme pour effectuer une requête sur Internet ;
- Sélectionner le bon code parmi tous ceux disponibles sur les différents sites ;
- Modifier le code choisi pour qu’il convienne effectivement au contexte du projet.