DeepCoder : l'IA développée par Microsoft Research capable de coder
En assemblant des bouts de codes récupérés dans des programmes existants

Le , par Stéphane le calme, Chroniqueur Actualités
En collaboration avec les chercheurs de l’université de Cambridge, Microsoft a développé une intelligence artificielle baptisé DeepCoder qui peut créer de nouveaux programmes grâce au machine learning en assemblant des bouts de codes récupérés dans des programmes existants. DeepCoder peut prendre en compte les exigences définies par le développeur, parcourir une large base de données contenant des snippets de code et livrer les lignes de code nécessaire pour résoudre le problème défini par le développeur.

« L’approche consiste à entraîner un réseau de neurones à prédire des propriétés du programme qui a généré les sorties suite à des entrées. Nous utilisons les prédictions du réseau de neurones pour augmenter les techniques de recherche de la communauté de langages de programmation, y compris la recherche énumérative et un solveur SMT », ont expliqué les chercheurs.

Plus loin, ils avancent que « concevoir un système IPS (Inductive Program Synthesis) nécessite de résoudre deux problèmes. Tout d'abord, le problème de recherche: pour trouver des programmes cohérents, nous devons rechercher sur un ensemble approprié de programmes possibles. Nous devons définir l'ensemble (c'est-à-dire, l'espace de programme) et la procédure de recherche. Deuxièmement, le problème de classement: s'il y a plusieurs programmes cohérents avec les exemples d'entrées-sorties, lesquels devrions-nous retourner ? Ces deux problèmes dépendent des spécificités de la formulation du problème. Ainsi, la première décision importante dans la formulation d'une approche de synthèse de programme est le choix d'un langage spécifique au domaine ».

Le système s’améliore au fur et à mesure qu’il s’exerce, déterminant quels fragments de code fonctionnent mieux ensemble et quand utiliser un fragment de code à la place d’un autre. Parce qu’il « apprend », le système peut retourner des résultats de plus en plus vite.

« Le potentiel d'automatisation que ce type de technologie offre pourrait vraiment apporter une énorme réduction des efforts nécessaires pour développer un code », a estimé Armando Solar-Lezama du Massachusetts Institute of Technology, qui n'a pas été impliqué dans ce projet. « Tout à coup, les gens pourraient être beaucoup plus productifs. Ils pourraient concevoir des systèmes qu'ils n’auraient pas pu concevoir auparavant », a-t-il espéré.

De plus, cette approche pourrait permettre aux non-codeurs de simplement décrire une idée de programme et laisser le système se charger de la conception, a estimé Marc Brockschmidt, l'un des créateurs de DeepCoder de Microsoft Research à Cambridge.

Ce type de système pourrait avoir de nombreuses applications. En 2015, les chercheurs du MIT ont créé un programme qui a automatiquement corrigé les bogues logiciels en remplaçant les lignes de code défectueuses par des lignes de code qui fonctionnaient pour d’autres programmes. Brockschmidt a assuré que les futures versions pourraient faciliter le développement de programmes de routine qui puisent des informations sur des sites Web, ou le développement de programmes permettant de catégoriser automatiquement des photos de Facebook, par exemple, sans que le développeur n’ait à écrire une seule ligne de code.

Quant à savoir si ces systèmes mettront les développeurs au chômage, Solar-Lezama n’y croit pas. Selon lui, étant donné que la synthèse automatisée de programmes pourrait s’occuper des parties les plus fastidieuses de la programmation, les développeurs seront alors en mesure de se consacrer à une partie plus sophistiquée.

À l'heure actuelle, DeepCoder n’est capable que de résoudre des problèmes de programmation impliquant environ cinq lignes de code. « Générer une grosse portion de code tout d’un coup est difficile et potentiellement irréaliste », a-t-il assuré. « Toutefois, les grosses portions de code sont obtenues en mettant ensemble plusieurs portions plus modestes de code ».

Source : article (au format PDF)

Et vous ?

Que pensez-vous de DeepCoder ?

Voir aussi :

L'unité de Microsoft dédiée à l'IA apporte aux développeurs des API, pour faire de la modération de contenu et améliorer la reconnaissance vocale
Jeu de poker : l'IA de l'université Carnegie Mellon terrasse ses quatre adversaires humains, une victoire historique face à des joueurs de haut niveau
Microsoft acquiert Maluuba, l'entreprise spécialisée dans la recherche IA pour rendre les machines capables de penser et communiquer comme les hommes


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Traroth2 Traroth2 - Membre chevronné https://www.developpez.com
le 24/02/2017 à 12:09
Jolie performance technique...

"Quant à savoir si ces systèmes mettront les développeurs au chômage, Solar-Lezama n’y croit pas"

La question est très mal posée. Évidemment qu'une technologie de ce genre ne va pas mettre tous les développeurs au chômage, et pas du jour au lendemain. Mais ça peut assez rapidement déboucher sur des technologies qui faciliteront le travail de développement (en commençant par suggérer du code, par exemple, ou en détectant des bugs bien plus efficacement que les outils d'analyse statique actuels), ce qui accélérera le processus de développement, et mécaniquement, on aura besoin de moins de développeurs. Donc, oui, ça va mettre des développeurs au chômage dans les prochaines années.
Avatar de alves1993 alves1993 - Membre averti https://www.developpez.com
le 24/02/2017 à 13:34
Beau travail de la part M$.
Je suppose que dans 10 ans mon poste de développeur sera menacé par ce genre d'outils.
Avatar de ParseCoder ParseCoder - Membre habitué https://www.developpez.com
le 24/02/2017 à 14:01
Autant ça pourrait marcher et être utile pour du code "boilerplate", autant pour le reste je n'y crois pas trop.
Est ce que expliquer au système ce qu'il doit coder ne consiste pas justement à coder sous une autre forme, dans un autre langage? Et de toute façon on ne pourra pas faire une confiance aveugle dans ce genre de système, il faudra encore relire et tester ce code.
Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 24/02/2017 à 14:08
Ils n'ont pas peur des problèmes de licences, ceux-là, à vouloir copier du code sur le Web.
Avatar de Songbird_ Songbird_ - Rédacteur/Modérateur https://www.developpez.com
le 24/02/2017 à 18:24
Ils n'ont pas peur des problèmes de licences, ceux-là, à vouloir copier du code sur le Web.
Bof, quelques millions de plus ou moins dans leur budget, ça ne doit pas avoir grande importance.

Sinon je trouve l'idée vraiment très intéressante, avoir un assistant logiciel de la sorte pour générer des pans de codes peu critiques pourrait peut-être faire la différence à l'échelle d'une entreprise. Reste quand même à voir si le code suggéré n'est pas moins performant que celui rédigé par un humain.
Avatar de Aurelien Plazzotta Aurelien Plazzotta - Membre éclairé https://www.developpez.com
le 24/02/2017 à 21:30
Le point de basculement est atteint une fois que les systèmes automatisés sauront créer d'autres systèmes automatisés.
Ce n'est pas seulement les développeurs qui sommes menacés alves1993, c'est nous : citoyens.

N'est-ce pas sur developpez.com qu'une actualité citant Bill Gates où ce dernier déclarait que dans 20 ans, 80% de la population mondiale subirait de très grandes difficultés à signer un contrat de travail ?
Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 24/02/2017 à 22:03
Perso, j'ai hâte de voir une IA qui pourra me remplacer.
Avatar de egann538 egann538 - Membre habitué https://www.developpez.com
le 26/02/2017 à 21:41
Ok, il faut attendre la toute fin de l'article pour voir le soufflé retomber:

DeepCoder n’est capable que de résoudre des problèmes de programmation impliquant environ cinq lignes de code
Là je réalise que l'expérience ne méritait même pas une annonce de ce genre. Car d'une manière générale, le jour ou une IA sera capable d'écrire les même programmes qu'un développeur correct, le fait de pouvoir garder notre boulot sera la dernière de nos priorités.
D'autre part, j'attends de voir apparaître le programme capacle de générer des spécifications précises et compréhensibles du 1er coup, ainsi que celui qui sera capable de penser à tous les scénarios permettant de tester la solution
Avatar de Matthieu Vergne Matthieu Vergne - Expert confirmé https://www.developpez.com
le 27/02/2017 à 5:39
Citation Envoyé par egann538 Voir le message
D'autre part, j'attends de voir apparaître le programme capacle de générer des spécifications précises et compréhensibles du 1er coup, ainsi que celui qui sera capable de penser à tous les scénarios permettant de tester la solution
Soyons raisonnable. Même un humain n'en est pas capable. Mais faire une spécification qui est capable d'identifier les besoins les plus triviaux serait un bon départ. Et je pense qu'il y aurait de quoi faire en partant des systèmes de synthèse automatique de texte.
Avatar de egann538 egann538 - Membre habitué https://www.developpez.com
le 27/02/2017 à 14:36
Bien sûr. Ce que je veux dire c'est que le jour où une IA comprendra des spécifications de haut niveau pour en tirer le code attendu, elle aura atteint le niveau d'intelligence de l'humain, ou pas loin. Et pour le moment justement, on en est loin.

Si pour contourner cela, on souhaite mettre en place une façon d'écrire des spécifications de bas niveau, compréhensible par une IA, et pour un programme d'une complexité moyenne, cela demandera tout autant de travail que d'écrire le programme soi-même. Une illustration ici.
Offres d'emploi IT
Ingénieur développement logiciels temps réel embarqué H/F
Safran - Ile de France - Éragny (95610)
Ingénieur système de commande de vol H/F
Safran - Ile de France - Massy (91300)
Chef de projet technique H/F
Safran - Ile de France - Melun (77000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil