Des chercheurs du laboratoire de Facebook AI Research, basé à Paris depuis cinq ans, ont dévoilé Transcoder, un modèle de traduction automatique d’un langage de programmation vers un autre. Il convertirait du code écrit dans un langage lent à l’exécution, comme Python, vers un langage plus rapide comme le C ou le C++.
Plus besoin de corrections manuelles, longues et couteuses
Installé il y a cinq ans à Paris, le laboratoire d’intelligence artificielle de Facebook (Facebook AI Research) a publié le 5 juin un article sur ses travaux de traduction automatique d’un langage de programmation vers un autre, à partir de Transcoder, son modèle de transcompilateur neuronal non supervisé. Cet outil vise à améliorer notablement la précision avec laquelle un code source comme Python peut être traduit dans un langage plus rapide comme C++. Un transcompilateur utilise habituellement des techniques qui manquent souvent de lisibilité et ne respecte pas toujours les conventions du langage de destination. Cela induit le besoin d’avoir recours à des corrections manuelles, plus longues et donc plus couteuses. Des défauts que corrigerait Transcoder.
Les travaux de recherche, menés par Marie-Anne Lachaux, Baptiste Roziere, Lowik Chanussot et Guillaume Lample, ont montré que Transcoder pouvait traduire avec une grande précision des fonctions entre du code C++, Java et Python. Les chercheurs de Facebook ont entrainé leur modèle sur un corpus GitHub public contenant plus de 2,8 millions de référentiels open source, ciblant la traduction au niveau de la fonction. Rappelons qu’en programmation, les fonctions sont des blocs de code réutilisable pour effectuer une seule action connexe.
Un modèle qui pourrait s’étendre à d’autres langages de programmation
« On entraine un modèle à traduire du Python vers le C++, et on l’entraine à reconstruire le code Python initial en se basant sur la traduction générée, approximative, en C++ », a détaillé Guillaume Lample. Les chercheurs de Facebook AI Research disent avoir obtenu des résultats supérieurs aux modèles du genre préexistant.
« Notre méthode s’appuie exclusivement sur du code source monolingue, ne requiert aucune expertise dans les langages source ou cible et peut être facilement généralisée à d’autres langages de programmation », indiquent-t-ils dans leur article. Ainsi, Transcoder permettrait également de convertir des programmes et des librairies de code datés comme Cobol.