Un de mes amis sans connaissances en programmation m'a posé cette question et je l'ai trouvée intéressante.
Je pense que ce n'est pas possible car cela nécessiterait une intelligence artificielle vraiment avancée capable d'analyser le texte d'un problème, de réfléchir à une solution et de le programmer. Le simple fait de penser à une machine capable de programmer une simple calculatrice me semble assez avancé.
Mais peut-être que je me trompe et j'aimerais savoir ce que vous en pensez et si vous connaissez des articles / recherches sur le sujet, ou si cela existe déjà ou s'il existe la possibilité de sélectionner une spécification et d'obtenir le machine à auto-programme à cette "spécification?"
Réponses:
Joel a répondu à celui-ci il y a quelques années . Le sens réel de «apprendre à une machine à programmer par elle-même» est «enseigner à une machine comment prendre une spécification et créer un programme qui correspond à cette spécification». Et dans cet esprit:
La seule façon de contourner ce problème serait de produire un véritable ordinateur intelligent avec suffisamment d'intuition pour faire tous les blancs que vous et moi faisons automatiquement, tout le temps, lors de la production de logiciels ... auquel cas vous trouverais un ordinateur qui se programme lui-même ainsi qu'un développeur humain. ;)
la source
Bien sûr, nous faisons cela tout le temps (pour des sous - ensembles extrêmement limité de problèmes). Il est assez trivial d' imaginer faire un pas de plus et lier quelque chose comme Siri à l'entrée de ces générateurs de code (ou quelque chose comme Wolfram Alpha) qui à son tour écrit du code et résout votre problème. Je m'attendrais à ce que quelque chose existe déjà quelque part pour faire les choses les plus élémentaires.
Le problème avec l'écriture de logiciels complexes pour les entreprises n'est pas de créer un programme pour écrire le code - c'est d'écrire un programme pour obtenir les exigences.
la source
Je pense que la réponse de @Mason Wheeler détient l'idée clé. Ça va comme ça:
L'entropie Shannon de Tic-tac-toe est vraiment petite. Nous appelons donc tic-tac-toe un jeu "résolu" ou "déterministe". Ce n'est pas vraiment intéressant une fois que vous avez terminé l'école primaire. Checkers a une entropie plus élevée, si vous considérez l'entropie de tous les jeux possibles auxquels vous pouvez jouer. Mais les dames aussi sont un jeu «résolu» ou «déterministe». Si vous vous déplacez en premier, vous ne devriez gagner ou tirer. Les échecs ont une entropie beaucoup, beaucoup plus élevée, mais aucun humain n'a battu les meilleurs joueurs informatiques depuis 2006. D'une certaine manière, les ordinateurs maîtrisent les échecs d'une manière que les humains ne peuvent pas. Big Blue a analysé wikipedia, puis a joué à Jeopardy contre des joueurs humains et les a battus à fond.
Et après? Quelle est l'entropie d'un roman, ou les sonnets de Shakepeare?
De même, dans l'espace de programmation, ce qui émergera probablement est un ensemble croissant de compétences. Prolog a résolu un ensemble de problèmes informatiques où vous avez configuré le problème et l'ordinateur a résolu la réponse. Quelqu'un trouvera probablement des classes de problèmes de programmation simples qu'un ordinateur pourra satisfaire, etc. Ensuite, quelqu'un s'appuiera sur cela pour produire une "personnalisation à la demande" dans un espace problématique. Et c'est ainsi.
Je pense que la question devient: combien de temps faut-il à une IA pour maîtriser une quantité donnée d'entropie ... et combien de ressources informatiques sont nécessaires? Je pense qu'il est inimaginable qu'un ordinateur ne puisse pas maîtriser l'entropie maîtrisée par le meilleur cerveau humain - il n'y a rien de magique dans le cerveau - mais la question est, de combien de cœurs avez-vous besoin, et combien de siècles faudra-t-il pour y arriver?
Mais ... un ordinateur pourra-t-il jamais faire mon travail? Inconcevable!
la source
C'est difficile à répondre car, tout comme avec l'intelligence artificielle, une fois que nous aurons accompli cela, ce sera parce que nous aurons écrit un programme qui le fera. Et les critiques diront: "Eh bien, cette machine ne se programme pas vraiment elle-même! Elle suit juste exactement le programme que vous lui avez donné!"
Hé bien oui. Tout ce que nous accomplirons avec les ordinateurs, nous le ferons en lui donnant un programme et il l'exécutera. Si c'est un argument contre, nous ne pouvons rien accomplir. Et pourtant, à un moment donné, les gens pensaient qu'un ordinateur jouant aux échecs serait évidemment intelligent. Maintenant, ils le peuvent, et nous savons exactement comment, et nous ne pensons pas que ce soit intelligent. Les sous-marins ne savent toujours pas nager.
Alors - considérez quelques exemples.
Depuis des décennies, nous avons des générateurs d'analyseurs . Vous leur donnez une description d'une langue, elle est traitée et le résultat est le code d'un analyseur pour cette langue. Nous savons exactement comment cela se fait, mais n'est-ce pas une programmation informatique en soi?
Deuxième - éditeurs qui vous disent que vous avez fait une erreur (erreur de syntaxe, variable non existante, etc.). Il ne programme rien lui-même, mais il peut vous dire que vous avez fait quelque chose de mal. C'est très bien en surface seulement.
Langues dans lesquelles vous pouvez simplement cliquer et faire glisser les contrôles d'interface utilisateur, et le code qui les fera réellement fonctionner est généré automatiquement.
Compilateurs JIT. Logiciel capable de reconnaître les points chauds dans le logiciel en cours d'exécution et de remplacer une partie de celui-ci par du code compilé hautement optimisé, s'optimisant efficacement pendant son exécution. Je pense que ceci est un exemple de ce qui peut sembler être une machine se programmant elle-même, jusqu'à ce que vous sachiez exactement comment cela se produit, puis il s'avère que c'est juste ce que le programmeur lui a dit, comme toujours.
Jeu général. Il s'agit d'un domaine de recherche intéressant, dans lequel les chercheurs écrivent des programmes qui peuvent lire des descriptions des règles des jeux, que les programmes jouent ensuite les uns contre les autres. Donc, au lieu d'un programme de tic-tac-toe ou d'un programme d'échecs, ce sont des programmes qui lisent les règles du tic-tac-toe ou des échecs ou un nouveau jeu composé sur place, et peuvent ensuite les jouer. Le programme ne se programme pas lui-même, mais il joue aux échecs sans que les règles des échecs aient été codées en dur. Il fut un temps où cela serait clairement considéré comme l’ordinateur s’enseignant quelque chose.
Nous avons fait beaucoup de petits pas dans la direction générale.
Mais je ne peux pas penser à des programmes qui se réécrivent sur la base des résultats d'exécutions antérieures, ou qui peuvent reconnaître des routines obsolètes ou inefficaces dans leur propre code. Je pense qu'un jour nous l'aurons, et nous ne considérerons rien de spécial du tout, car ce ne sera qu'une fonctionnalité du dernier compilateur ...
la source
Pas actuellement et pas dans un avenir prévisible car vous avez besoin de toute la complexité impressionnante du cerveau humain pour créer un programme. Et même alors, ces cerveaux doivent être hautement entraînés pour le faire correctement, et même alors, ils ne sont pas tous capables de faire la tâche, bien que l'on puisse dire qu'avec suffisamment de temps, vous pourriez former n'importe qui à programmer.
J'ai déduit de la façon dont vous avez formulé votre question que vous ne parliez pas de tâches émulées simples.
Vous avez demandé des articles et cet article de Science Blogs sur le développement de l'intelligence répond à cette question de plusieurs manières.
la source