Le MIT vient de démontrer une IA transformant l’expression de spécifications en code informatique compilable. Mais l’IA s’installe déjà dans les outils de programmation pour simplifier le travail des développeurs.

Selon le Gartner, la demande de développement de nouvelles apps par les métiers va croître d’ici 2021 cinq fois plus rapidement que la capacité des DSI et de l’IT en général à les délivrer. Ce besoin explique notamment le succès actuel des outils No-Code / Low-Code qui permettent à des personnes sans réelle compétence en programmation de développer leurs propres apps (ce que l’on appelle les ‘citizen developers’). Jusqu’ici souvent décriés par les DSI parce qu’ils peuvent potentiellement favoriser le Shadow IT, ces outils sont en train de se réinventer avec l’apparition de véritables plateformes d’entreprises favorisant l’émergence d’apps « No-Code » dans un cadre régi et contrôlé par l’IT aussi bien en matière de sécurité que d’administration, de déploiement et de montée en charge. L’introduction début juin de « Enterprise Low-Code Factory » par Pegasystems en est la parfaite illustration.

Projet SketchAdapt du MIT

Mais d’autres pistes sont également suivies pour accélérer le développement d’applications. À commencer par apprendre aux intelligences artificielles à développer à la place des humains!
Le MIT vient de publier les résultats de leurs travaux de recherche en la matière. Leur système SketchAdapt utilise une intelligence artificielle entraînée à l’aide de milliers d’exemples de programmes.
Le système comporte deux éléments. Le premier est un générateur d’esquisse qui traduit des spécifications écrites en langage naturel en esquisse de programme à l’aide d’un RNN (Recurrent Neural Network). Le second est un synthétiseur de programme qui interprète l’esquisse et réalise une recherche symbolique pour récupérer et adapter les sous-programmes nécessaires à l’exécution des différentes étapes de l’esquisse.
On peut donc ainsi apprendre à une IA à développer, dès lors que l’on délimite bien les domaines et que l’on dispose déjà de bibliothèques de codes suffisamment conséquentes.

D’autres IA s’essayent au développement

Le MIT n’est pas le seul à travailler sur ce sujet. En 2015, le chercheur Andrej Karpathy du Stanford Institute (désormais directeur de l’IA chez Tesla) avait déjà utilisé un RNN entraîné avec le répertoire GitHub de Linux pour générer automatiquement du code C.
Depuis 2017, Microsoft et l’université de Cambridge développent DeepCoder une IA qui aide à résoudre des problèmes simples de programmation grâce à son apprentissage réalisé à partir des sources publiques sur GitHub.
De son côté l’université de RICE a développé en 2018 un système dénommé BAYOU qui à partir de mots clés génère automatiquement du code Java appelant des APIs.
Le laboratoire d’Oak Ridge du département de l’énergie américain a lui aussi travaillé sur le sujet. Dans son étude, les chercheurs anticipent qu’en 2040 nous aurons réalisé suffisamment de progrès en compréhension du langage naturel et en machine learning pour que des intelligences artificielles se montrent capables de développer mieux et plus rapidement que les humains.

L’IA au secours des développeurs

En attendant, avant de les remplacer, l’IA commence plutôt à s’intégrer aux outils de programmation pour aider les développeurs à améliorer la qualité de leur code et accélérer leur travail. Ainsi, le nouveau Visual Studio 2019 incorpore une IA dénommée IntelliCode qui aide au formatage du code et fournit des recommandations. Kite en fait de même pour la programmation en Python. DeepCode analyse les codes sources à la recherche de vulnérabilités. Dans un même ordre d’idées, l’IA de Yagaan réalise des audits de code tout au long de la phase de développement afin de mettre en évidence les risques de sécurité présents. UbiSoft a développé Commit Assistant, une IA qui a appris les erreurs de programmation historiquement commises et aide les développeurs à ne plus les commettre. Google dispose aussi d’une IA de prédiction des bugs. Autre exemple, « Sketch 2Code » s’appuie sur une IA qui transforme les dessins d’interface réalisés à la main en code HTML. De son côté, SmartBear a commencé à intégrer de l’IA dans son outil d’automatisation des tests TestComplete. EggPlant en fait, semble-t-il, de même.

Parallèlement, l’intelligence artificielle est aussi appelée à la rescousse des outils de « No-Code/Low-Code » pour mieux aider les Citizens Developers à prendre en main ces environnements et à réaliser leurs applications. Mendix, avec son Mendix Assist, a été l’un des premiers acteurs à voir le potentiel de l’IA en tant qu’aide au développement. En mai dernier, Appian a annoncé « Appian AI » pour sa plateforme Low-Code une extension principalement destinée à simplifier l’intégration de services cognitifs au sein des applications.

Bref, l’IA n’est pas encore prête à remplacer les programmeurs. Mais les projets actuels démontrent que l’on pourra dans un futur relativement proche lui demander de coder pour soi. En attendant, elle s’inscrit dans la mouvance du développeur « augmenté » en lui permettant de produire moins de bugs et de coder plus rapidement.