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 ...