Le MIT ambitionne de remplacer les lignes de codes par le langage naturel
Vers la fin des langages de programmation ?

Le , par Stéphane le calme, Chroniqueur Actualités
L'apprentissage d'un langage de programmation peut parfois être long et pénible. Pour y remédier, les chercheurs du laboratoire de science informatique et d'intelligence artificielle (CSAIL) du MIT se sont penchés sur la question de savoir s'il était possible d'écrire des programmes en langage naturel, dans le cas d'espèce en anglais.

Les résultats de ces recherches ont conduit à l'implémentation d'un système qui traduit la description d'une tâche en anglais standard en regex (un motif qui décrit un ensemble de chaînes de caractères possibles selon une syntaxe précise) afin que le programme puisse interpréter exactement la tâche qui lui est assignée.

Les chercheurs ont donné au système des spécifications de texte pour différents formats de fichiers. Lesdites spécifications ont été écrites en langage naturel et le système a appris automatiquement comment l'interpréter et le convertir en langage de programmation afin que l'ordinateur puisse lire correctement les données contenues dans les différents formats de fichiers.

Dans ses démonstrations, le CSAIL a donné la description suivante en langage naturel « mot de trois lettres commençant par X ». Le système a renvoyé la regex suivante « \bX[A-Za-z]{2}\b ».

Le système est capable d'interpréter des spécifications de textes bien plus longues et compliquées pour les convertir en regex.


Pour Luke Zettlemoyer, un assistant professeur au département des sciences informatique et de l'ingénierie à l'Université Washington, « il s'agit d'une première étape importante qui permettra aux utilisateurs de tous les jours de programmer sans aucune connaissance en langage de programmation. »

Le système ne permettra pas encore aux personnes qui n'ont jamais écrit de ligne de codes de faire tout d'un coup des programmes sophistiqués puisqu'il est encore limité et à ses débuts. La discipline gagnant en maturité, il sera probablement possible d'écrire des programmes entiers avec le langage naturel.

Source : recherche MIT (au format PDF)

Et vous ?

Que pensez-vous de cette initiative ? Les langages de programmation sont-ils en danger ?


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


 Poster une réponse

Avatar de MiaowZedong MiaowZedong
http://www.developpez.com
Expert Confirmé
le 18/07/2013 14:03
Un nouveau language de cinquième génération? Tous ceux qui ont été lancés dans le années 80 on échoués. Après, à voir les progrès dans le traitement des données non-structurée de cette dernière decennie (Watson, par exemple) c'est probablement possible, mais pour l'instant je pense que ce ne serait pas rentable.
Avatar de Kaluza Kaluza
http://www.developpez.com
Membre habitué
le 18/07/2013 14:23
Super on pourra fabriquer des programmeurs productifs qui n'auront aucune idée de ce qui se passe derrière ! Si il s'agit de faire que madame michu puisse programmer un truc sans trop se fouler pourquoi pas, mais j'ai peur des déviations que ça pourrait entrainer dans le monde pro.

[mode troll hardcore = on]
Finalement, ce serait juste la suite logique des langages managés... Un peu comme du java mais en pire quoi...
[mode troll hardcore = off]
Avatar de a_me a_me
http://www.developpez.com
Membre du Club
le 18/07/2013 14:34
à mon avis, on cherche trop à faciliter les choses, le monde est devenu aveuglé par l'avancement et le développement, et la notion de développement et progression perd tout son sens.
Avatar de CHbox CHbox
http://www.developpez.com
Membre expérimenté
le 18/07/2013 14:36
J'y vois une forte utilité au sein de programmes de gestion qui propose à l'utilisateur de définir des règles simples, typiquement un des outils de mon client consiste à checker la liste des utilisateurs de l'Active Directory, ils peuvent définir des règles simples pour certains champs via des regex (typiquement vérifier le format d'un nom ou d'un numéro de téléphone) et les règles trop complexes sont définit dans le code, si on leur proposait ce système ça serait très pratique et bien plus facile d'accès.

Au delà de ça je ne pense pas que ça mette en danger les langages de prog, il faudrait une rigueur énorme pour définir son code correctement, ce qui est loin d'être à la portée de tout le monde (là c'est plus un problème de rigueur et de sérieux que de capacité), je pense que quelqu'un capable de définir un programme vraiment complexe avec des phrases n'aura aucun mal à le coder voir même ira plus vite à la coder qu'à réfléchir à la tournure de la phrase (il suffit de voir l'exemple proposé pour s'en rendre compte), les gens qui n'ont aucune notion de programmation ne sauront pas comment décrire un programme, même avec des phrases.
Avatar de el_slapper el_slapper
http://www.developpez.com
Expert Confirmé Sénior
le 18/07/2013 14:46
Citation Envoyé par CHbox  Voir le message
(.../...)Au delà de ça je ne pense pas que ça mette en danger les langages de prog, il faudrait une rigueur énorme pour définir son code correctement, ce qui est loin d'être à la portée de tout le monde (là c'est plus un problème de rigueur et de sérieux que de capacité), je pense que quelqu'un capable de définir un programme vraiment complexe avec des phrases n'aura aucun mal à le coder voir même ira plus vite à la coder qu'à réfléchir à la tournure de la phrase (il suffit de voir l'exemple proposé pour s'en rendre compte), les gens qui n'ont aucune notion de programmation ne sauront pas comment décrire un programme, même avec des phrases.

+1000. La tournure d'esprit sera toujours nécéssaire. Il s'agit, essentiellement, de soumettre son esprit à l'idée que la machine n'infère rien. des gens capables de mettre des spécifications du genre "on alimentera la zone regroupement pro avec le fichier associé" sans même prendre la peine de préciser d'autres détails(la spec finale faisait deux pages), ne tireront jamais rien d'un langage de ce genre.

ça ne veut pas dire que c'est inutile. Spécialement pour les regex, il peut être utile de rendre ça un peu plus lisible. Je ne jette pas le concept, il faut voir ce qu'il donnera.

Mais celui qui ne sait pas discipliner son esprit n'en tirera rien.
Avatar de la.lune la.lune
http://www.developpez.com
Membre Expert
le 18/07/2013 14:50
Ça va bien amuser les gens et je pense ça permettra de ne pas donner tous les détails d'un programme, car franchement parfois, on conçoit un algorithme dans la tête et on aurait aimer l’implémenter tel qu'on le comprend sans pour autant détailler touts les petits truc routinières et parfois propres à un langage.

Je dis ça parce parfois, lorsqu'on conçoit un algorithme ou un modèle mathématique qu'on transforme en algorithme, on aurait aimer décrire l’algorithme et hop code déjà. Car après avoir fait un travail lourd intellectuellement, ça fait chier d'aller encore détailler des truc de rien du tout pour arriver à du concret. Alors qu'on veut voir tout de suite le résultat.

Un petit exemple: vérifier qu'un élément appartient un ensemble, pourrait se réduire en " vérifier que a fait partie de X" , sans être obligé de dire qu'il faut créer une variable booléenne b, l’initialiser à faux, faire une boucle for de i=1 au nombre d’élément de X, et parcourir élément par élément si a=X[i] affecter b à vrai et sortir de la boucle, après la fin de la boucle vérifier si b est vrai ou faux. Regardez toute cette histoire juste pour arriver un truc aussi simple que ça.

Et surtout ça fatigue pour des algorithmes qui touchent beaucoup de données parfois complex, parfois des matrices de plusieurs dimensions.

En tout cas comment débuguer et corriger un tel code, surtout si c'est une autre personne qui va le faire
Avatar de walane walane
http://www.developpez.com
Membre expérimenté
le 18/07/2013 14:59
Du COBOL en gros ? LOL. Non sérieusement faut arrêter avec les titres racolleurs et très subjectifs.
Avatar de Gastiflex Gastiflex
http://www.developpez.com
Expert Confirmé
le 18/07/2013 15:12
Ça dispenserait de l'apprentissage de la syntaxe du langage. Mais cette étape est vraiment négligeable dans l'apprentissage de la programmation.
Ça ne nous dispensera pas de penser comme un ordinateur, sous forme d'algorithme.

Par exemple vérifier qu'un élément appartient un ensemble, pourrait se réduire en " vérifier que la variable a appartient à l'ensemble X" , sans être obligé de dire, qu'il faut faire une boucle for de i=1 à nombreelement(X), et parcourir tous les éléments et vérifier élément par élément si a=X[i] et à chaque vérification si c'est vrai on sort de la boucle avec un vrai, et à la fin de la boucle on sort avec un faux. Regardez toute cette connerie pour arriver un truc aussi simple que ça.

Ton langage n'a pas de fonction Contains() ?
Avatar de Kaluza Kaluza
http://www.developpez.com
Membre habitué
le 18/07/2013 15:13
La peur que j'évoquais plus haut, c'est la peur d'avoir une communauté de décideurs/managers dire que la programmation c'est facile si ils utilisent ce genre d'outils ... ce qui aura tendance à répandre ce genre d'outils au delà de l'usage initial prévu et donnera du code non maintenable avec des perfs horrible.
Avatar de la.lune la.lune
http://www.developpez.com
Membre Expert
le 18/07/2013 15:38
Citation Envoyé par Gastiflex  Voir le message

Ton langage n'a pas de fonction Contains() ?

Mon langage!!! hh, tu oublies que ton Contains() est développé lui aussi de cette manière que j'ai décris. Tu oublies aussi que ça dépend des langages, les langages objets ne sont pas comme les langages procédurales, et les noms de la fonction diffèrent d'un langage à un autre, et si la variable a à vérifier qu'il appartient à l'ensemble X n'est pas de type prédéfini mais une variable complexe, comme un objet, ou une structure,un tableau, tu sera obligé de définir ton propre égale (equals en java) l'opérateur = en C++, en C c'est tout autre chose, il faut faire en dur.

C'est ça la question pourquoi être obligé de faire tous ces détails alors que nous tous on comprend logiquement ce que ça veut dire vérifier qu'un élément a appartient à un ensemble X, indépendamment de n'importe quel langage.

La 2e chose pourquoi prendre juste un exemple que j'ai donné juste pour illustrer, alors qu'il y plusieurs instructions totalement différents que des fonctions déjà implementés n'existent pas.
Offres d'emploi IT
Responsable de site
CDI
RatpDev - Rhône Alpes - Annemasse (74100)
Parue le 08/10/2014
Développeur web
CDI
Groupe Eyrolles - Ile de France - Paris (75005)
Parue le 02/10/2014
développeur php symfony 1.4
CDI
TREPIA - Ile de France - Paris (75000)
Parue le 23/10/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula