Dies ist schwer zu beantworten, da wir, genau wie bei der künstlichen Intelligenz, ein Programm dafür geschrieben haben, wenn wir dies erreicht haben. Und Kritiker werden sagen: "Nun, diese Maschine programmiert sich nicht wirklich selbst! Sie folgt einfach genau dem Programm, das Sie ihr gegeben haben!"
Nun ja. Was auch immer wir jemals mit Computern erreichen werden, wir werden es mit einem Programm ausführen. Wenn das ein Argument dagegen ist, können wir nichts erreichen. Und doch dachten die Leute irgendwann, ein Schachcomputer wäre offensichtlich intelligent. Jetzt können sie, und wir wissen genau, wie und wir finden das nicht intelligent. U-Boote können immer noch nicht schwimmen.
Also - betrachten Sie ein paar Beispiele.
Seit Jahrzehnten haben wir gehabt Parser-Generatoren . Sie geben ihnen eine Beschreibung einer Sprache, diese wird verarbeitet und das Ergebnis ist Code für einen Parser für diese Sprache. Wir wissen genau, wie es gemacht wird, aber ist das nicht eine Computerprogrammierung selbst?
Second - Editoren, die Ihnen mitteilen, dass Sie einen Fehler gemacht haben (Syntaxfehler, nicht vorhandene Variable usw.). Es programmiert selbst nichts, aber es kann Ihnen sagen, dass Sie etwas falsch gemacht haben. Es ist sehr viel nur an der Oberfläche.
Sprachen, in denen Sie einfach auf Steuerelemente der Benutzeroberfläche klicken und sie ziehen können, und der Code, mit dem sie tatsächlich funktionieren, wird automatisch generiert.
JIT-Compiler. Software, die Hotspots in der aktuell ausgeführten Software erkennt und einige davon durch hochoptimierten kompilierten Code ersetzt und sich während der Ausführung effektiv selbst optimiert. Ich denke, dies ist ein Beispiel für das, was als Maschinenprogrammierung erscheinen kann, bis Sie genau wissen, wie es geschieht, und sich dann herausstellt, dass es nur das tut, was der Programmierer wie immer gesagt hat.
Allgemeines Spielen. Dies ist ein interessantes Forschungsgebiet, in dem Forscher Programme schreiben, die Beschreibungen der Spielregeln lesen können, die die Programme dann gegeneinander spielen. Anstelle eines Tic-Tac-Toe-Programms oder eines Schachprogramms sind dies Programme, die die Regeln für Tic-Tac-Toe oder Schach oder ein neues Spiel vor Ort lesen und dann spielen können. Das Programm programmiert nicht selbst, aber es spielt Schach, ohne dass die Schachregeln fest programmiert wurden. Es gab eine Zeit, in der dies eindeutig war als Computer angesehen wurde, der sich selbst etwas beibrachte.
Wir haben viele kleine Schritte in die allgemeine Richtung gemacht.
Aber ich kann mir keine Programme vorstellen, die sich aufgrund der Ergebnisse früherer Läufe neu schreiben oder die veraltete oder ineffiziente Routinen in ihrem eigenen Code erkennen können. Ich denke, dass wir das eines Tages haben werden, und wir werden es für nichts Besonderes halten, da es nur ein Feature des neuesten Compilers sein wird ...