Ein Freund von mir ohne Programmierkenntnisse hat mir diese Frage gestellt und ich fand sie interessant.
Ich denke, es ist nicht möglich, weil es eine wirklich fortgeschrittene künstliche Intelligenz erfordern würde, die in der Lage ist, den Text eines Problems zu analysieren, über eine Lösung nachzudenken und es zu programmieren. Allein der Gedanke an eine Maschine, die einen einfachen Taschenrechner programmieren kann, scheint mir ziemlich weit fortgeschritten zu sein.
Aber vielleicht irre ich mich und ich würde gerne wissen, was Sie darüber denken und ob Ihnen Artikel / Recherchen zu diesem Thema bekannt sind oder ob es bereits existiert oder ob die Möglichkeit besteht, eine Spezifikation auszuwählen und die zu erhalten Maschine selbst auf diese "Spezifikation" programmieren?
Antworten:
Joel hat diese Frage tatsächlich vor ein paar Jahren beantwortet . Die eigentliche Bedeutung von "einer Maschine beibringen, wie man von selbst programmiert" ist "einer Maschine beibringen, wie man eine Spezifikation nimmt und ein Programm erstellt, das dieser Spezifikation entspricht". Und in diesem Sinne:
Die einzige Möglichkeit, dies zu umgehen, besteht darin, einen wirklich intelligenten Computer zu erstellen, der über die nötige Intuition verfügt, um alle Lücken auszufüllen, die Sie und ich bei der Erstellung von Software immer automatisch ausführen Am Ende stünde ein Computer, der sich selbst programmiert, sowie ein menschlicher Entwickler. ;)
quelle
Sicher, wir tun diese alle die Zeit (für extrem begrenzte Teilmengen von Problemen). Es ist ziemlich trivial, sich vorzustellen , ein oder zwei weitere Schritte zu unternehmen und etwas wie Siri in die Eingabe dieser Codegeneratoren (oder etwas wie Wolfram Alpha) einzubinden, die wiederum Code schreiben und Ihr Problem lösen. Ich würde erwarten, dass irgendwo bereits etwas existiert , um die grundlegendsten Dinge zu tun.
Das Problem beim Schreiben komplexer Software für Unternehmen besteht nicht darin, ein Programm zum Schreiben des Codes zu erstellen, sondern darin, ein Programm zum Abrufen der Anforderungen zu schreiben.
quelle
Ich denke, die Antwort von @Mason Wheeler enthält die Schlüsselidee. Es geht so:
Die Shannon-Entropie von Tic-Tac-Toe ist wirklich klein. Wir nennen Tic-Tac-Toe also ein "gelöstes" oder "deterministisches" Spiel. Es ist nicht wirklich interessant, wenn man die Grundschule hinter sich hat. Dame hat eine höhere Entropie, wenn Sie die Entropie aller möglichen Spiele betrachten, die Sie spielen können. Aber auch Dame ist ein "gelöstes" oder "deterministisches" Spiel. Wenn Sie zuerst ziehen, sollten Sie nur gewinnen oder unentschieden spielen. Schach hat eine viel, viel höhere Entropie, aber kein Mensch hat die besten Computerspieler seit 2006 geschlagen. In gewisser Weise haben Computer Schach auf eine Weise gemeistert, die Menschen nicht können. Big Blue analysierte Wikipedia und spielte dann Jeopardy gegen menschliche Spieler und schlug sie lautstark.
Was kommt als nächstes? Was ist die Entropie eines Romans oder Shakepeares Sonette?
In ähnlicher Weise werden sich im Programmierbereich wahrscheinlich immer mehr Kompetenzen herausbilden. Prolog hat eine Reihe von Computerproblemen behoben, bei denen Sie das Problem eingerichtet haben und der Computer die Antwort gelöst hat. Jemand wird wahrscheinlich Klassen von einfachen Programmierproblemen finden, die ein Computer erfüllen kann, usw. Dann wird jemand darauf aufbauen, um "Anpassungen nach Bedarf" in einem bestimmten Problembereich zu erstellen. Und so geht es.
Ich denke, die Frage verwandelt sich in Wie lange braucht eine KI, um eine bestimmte Menge an Entropie zu meistern ... und wie viele Rechenressourcen werden benötigt? Ich denke, es ist unvorstellbar, dass ein Computer die Entropie, die vom besten menschlichen Gehirn beherrscht wird, nicht beherrscht - das Gehirn hat nichts mit Magie zu tun -, aber die Frage ist, wie viele Kerne Sie benötigen und wie viele Jahrhunderte werden Sie brauchen, um dorthin zu gelangen?
Aber ... wird ein Computer jemals in der Lage sein, meine Arbeit ? Undenkbar!
quelle
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 ...
quelle
Nicht aktuell und nicht in absehbarer Zeit, da Sie die unglaubliche Komplexität des menschlichen Gehirns benötigen, um ein Programm zu erstellen. Und selbst dann müssen diese Gehirne sehr gut trainiert sein, um dies richtig zu tun, und selbst dann sind nicht alle in der Lage, die Aufgabe zu erledigen, obwohl man argumentieren könnte, dass man mit genügend Zeit irgendjemanden zum Programmieren trainieren könnte.
Ich habe Ihre Frage so formuliert, dass es sich nicht um einfache emulierte Aufgaben handelt.
Sie haben nach Artikeln gefragt, und dieser Science Blogs-Artikel zu Developing Intelligence beantwortet diese Frage in vielerlei Hinsicht.
quelle