Warum könnten Androiden so konzipiert sein, dass sie ihre Programmierung umschreiben?

Nehmen wir an, dass in Zukunft künstliche humanoide Computer [Androiden] gebaut werden, um als Arbeitskräfte zu dienen. Warum könnte ein Unternehmen diese Androiden so entwickeln, dass sie ihre eigene Programmierung umschreiben? So dass sie in der Lage sind, sich an neue Szenarien anzupassen und ihren eigenen Code hinzuzufügen, zu entfernen oder zu ersetzen?

Ihre Androiden müssen ihre Programmierung nicht umschreiben, um sich an neue Szenarien anzupassen; Im Bereich der künstlichen Intelligenz wurde jetzt ein aufstrebendes Verhalten als Ergebnis der Speicherung (und Erkennung von Mustern in) riesigen Datenmengen gezeigt. Dies geschieht jetzt und führt zu einigen sehr interessanten Verhaltensweisen und Anpassungen, die entstehen, ohne dass eine einzige Codezeile geändert wird.
@TimBII Könntest du ein bisschen mehr erklären? Ich bin mir nicht ganz sicher, was genau das bedeutet, da ich nicht wirklich viel über Programmiercode weiß.
Sicher. Computer sind deterministisch, was einfach bedeutet, dass sie immer genau (und nur) das tun, was Sie ihnen sagen. Sie können sich nicht selbst umprogrammieren, aber Sie können ihre Programme dazu bringen, andere Dinge zu tun, wenn sie andere Daten sammeln. Bei ausreichender Komplexität sehen wir, dass Verhaltensmuster entstehen, die wir nicht erwarten, wenn wir das Programm zum ersten Mal schreiben, wenn Daten gespeichert und auf immer höheren Ebenen verarbeitet werden. Sehr einfache Programme können zu sehr komplexen Ergebnissen führen, wenn sie diesem Modell folgen, aber theoretisch kann alles, was es tut, im Voraus vorhergesagt werden, einschließlich des Umschreibens selbst.
Damit sie lernen können, ist ein Android, der nicht lernen kann, nicht allzu nützlich. Das Hauptverkaufsargument einer KI ist die Fähigkeit zu lernen, und für einen Androiden werden sie mit vielen Menschen und ihrem seltsamen Verhalten interagieren, wenn sie nicht lernen können, was der Sinn ihrer Herstellung ist.
Willst du Skynet ? Denn so bekommt man Skynet.
Wenn sich der Abfragende nicht die Zeit nimmt zu erklären, was er mit der angeblich umgeschriebenen "Programmierung" meint , fällt diese Frage in den nicht einmal falschen Eimer. Ich verstehe, dass der Abfragende nichts über Computerprogrammierung weiß; dennoch wollen sie darüber schreiben. Hier ein Vorschlag: Betrachten Sie einen Menschen; Was ist das menschliche Analogon der "Programmierung" , die Gegenstand der Frage ist? Der DNA-Code in unseren Zellen? Die Prinzipien von Ethik und Gerechtigkeit, die durch unsere Bildung eingeprägt werden? Das intuitive Verständnis der naiven Physik? Die Sprachkenntnisse? Unsere Erinnerungen und Erfahrungen?
@TimBII Noch heute kann sich Code selbst modifizieren, und zwar auf nicht deterministische Weise (z. B. als Reaktion auf zufällige Eingaben von Sensoren, die mit der Außenwelt verbunden sind). Etwas so Einfaches wie ein Zufallszahlengenerator, dessen Seeding von einer externen Entropiequelle abhängt, macht es unmöglich, im Voraus vorherzusagen.
In einer Erweiterung zu Tim B II: Heutzutage werden Festplatten so hergestellt, dass sie zwar praktisch identisch sind, aber einen Chip erfordern, der am Ende der Herstellung programmiert wird, um die kleinen Fehler der einzelnen Festplatten widerzuspiegeln. Keiner dieser Chips ist identisch. Die Maschine, die diese Chips einrichtet, generiert die vollständige Programmierung aus den Messwerten, die sie erhält, wenn sie Testbefehle an das unprogrammierte Laufwerk sendet. Nach der Programmierung verhalten sich die Festplatten für den sie verwendenden Abfragenden alle gleich, aber intern verhalten sie sich technisch alle unterschiedlich, da sie alle individuellen, spezifischen Programmen folgen.
@richard So erhalten Sie auch Gaia oder ein anderes globales Ressourcenmanagementsystem, mit dem wir uns um unsere Umwelt kümmern und nicht aussterben können. Skynet ist das Ergebnis, wenn wir es falsch machen.
@JohnColeman, Sie sagen also, dass Code sein Verhalten aufgrund von Dateneingaben ändert. Das ist nicht dasselbe wie sich selbst modifizierender Code
@Trish zu welchem ​​Zweck? Wenn Sie über Verschlüsselung sprechen, dann ist sie immer noch deterministisch, nur nicht leicht wiederholbar. Andernfalls haben Sie gerade eine Festplatte erstellt, die zufällig Fehler in Ihren Daten löscht, und das ist nicht dasselbe wie sich selbst auf nützliche Weise zu modifizieren
@TimBII Nein - der Code ändert den Code selbst. Code sind letztendlich nur Daten. Diese Daten können während der Programmausführung geändert werden. Beispielsweise können Funktionen erstellt oder zerstört werden. Neu definierte Funktionen können aufgerufen werden. Die erstellten Funktionen können selbst andere Funktionen erstellen. Es ist für ein Programm durchaus möglich, sich selbst zu modifizieren und nicht nur sein Verhalten als Reaktion auf externe Ausgaben zu ändern. Ein im Speicher laufendes Programm muss nicht mit dem ursprünglich geladenen Programm identisch sein.
@TimBII Nein, es ist keine Verschlüsselung, es ist ein Chip, der nur einige Anpassungswerte enthält, die es dem Laufwerk ermöglichen, überhaupt zu funktionieren . Es befindet sich normalerweise auf einem 8-Pin-ROM-Chip. Dieser Chip wird im Werk programmiert. Suchen Sie nach „hdd rom swap“, um mehr zu erfahren.
@SRM - Es ist immer Skynet. Das oder Koloss.
@JohnColeman Bei allem Respekt, das ist einfach nicht genau. Computer sind deterministisch. Das ist alles dazu. Sie können sie dazu bringen, sich auf scheinbar nicht deterministische Weise zu verhalten, indem Sie die von Ihnen beschriebenen Eingaben randomisieren, aber wenn es möglich ist, diese Eingaben und die Programmierung im Voraus zu kennen, können Sie perfekt vorhersagen, was der Computer tun wird. Das Wissen um die Eingaben im Voraus ist der schwierige Teil Ihrer Beschreibung und warum diese Art der Programmierung zu auftauchenden Verhaltensmustern führt, aber selbst wenn der Computer Code überschreibt, verhält er sich immer noch gemäß dem etablierten Programm
@Trish, also habe ich die Suche durchgeführt, aber es geht nur darum, ROMs auf Leiterplatten auszutauschen. Auch hier gilt: Wenn Sie Daten auf einer Festplatte aufzeichnen und jedes Mal korrekt abrufen können, ist das System deterministisch, auch wenn der verwendete Algorithmus einzigartig ist. Letztendlich ist dies der einzige Wert, den eine Festplatte hat, daher habe ich Schwierigkeiten zu sehen, welchen möglichen Wert ein Randomisierungsagent auf einer Festplatte haben würde.
@TimBII Sobald Sie dem Mix analoge Elektronik hinzufügen, können Sie (tatsächlich definitiv) ein nicht deterministisches Verhalten haben. Ein D2A- und ein A2D-Konverter genügen. Es ist nicht so schwer, sich eine KI mit einigen zufälligen analog generierten Zahlen vorzustellen, die Code generiert, ihn auf Kompilierbarkeit und die Fähigkeit testet, sich selbst zu verändern und somit zu mutieren. Wir reden hier von Androiden.

Antworten (9)

Da das Unternehmen die Androiden entworfen und gebaut hat, besitzt es sie effektiv. Die Androiden dazu zu bringen, die Programmierung neu zu schreiben, wird es dem Unternehmen ermöglichen, keine menschlichen Programmierer für die gleiche Funktion einzustellen. Menschliche Programmierer haben die schlechte Angewohnheit, für ihre Dienste eine Bezahlung zu verlangen. Wenn Sie die Androiden besitzen, muss das Unternehmen sie nicht bezahlen.

Abschließend, um Geld zu sparen, indem die Arbeitskosten gesenkt werden. Dies ist eine bekannte und ausgiebig praktizierte industrielle Strategie. Was in der Vergangenheit passiert ist, kann und wird in der Zukunft passieren.

PS: Diese Antwort geht davon aus, dass die Programmierung der Androiden in der Lage sein wird, das emergente Verhalten zu erzeugen, das für eine funktionierende künstliche Intelligenz erforderlich ist. Das Umschreiben ihrer Programmierung wird also hoffentlich zu einer besseren künstlichen Intelligenz führen.

Sich selbst verbessernde KI als Übung im Kapitalismus. Es macht leider absolut Sinn.
Ich denke, basierend auf dem aktuellen "as a Service" -Modell gibt es eine Antwort irgendwo zwischen Fabbys Antwort und dieser - eine Unternehmensform, die die vielseitigste Android-Programmier-/Lerndatenbank aller Zeiten erstellt, die sie neben einem Paket für a an Unternehmen vermietet eine bestimmte Anzahl von Androiden und Diensten für sie (Android as a Service (AaaS), wenn Sie so wollen). Die Unternehmen zahlen immer noch weniger als die Einstellung eines regulären Mitarbeiters pro Android, müssen aber keine Mechaniker oder Systemadministratoren im Personal haben, um sie zu warten.

Wir haben Software, die ihre Programmierung ständig neu schreibt

Erst neulich habe ich eine Software geschrieben, die eine Tabu-Suche durchführt. Bei einer Tabu-Suche "schreibt" sich Ihr Algorithmus selbst um, um zu vermeiden, dass er seine eigenen Schritte zurückverfolgt.

Wir sprechen oft in einem sehr informellen Sinne von „ihre Programmierung neu schreiben“. Aber wenn Sie wirklich anfangen, darüber zu graben, ist es eigentlich ein relativ komplexes Thema. Wir können sehen, was es bedeutet, indem wir uns ansehen, welche Zeitsymmetrien während des Umschreibens beibehalten werden. Beispielsweise durfte meine Tabu-Suche nicht ändern, wofür sie optimiert wurde. Es könnte seinen Weg anpassen, aber nicht sein Ziel.

Wenn wir anfangen, über das „Umschreiben ihrer Programmierung“ zu sprechen, versuchen wir meiner Meinung nach wirklich, diese Zeitsymmetrien – diese Invarianten – wegzuschneiden. Zum Beispiel enthält C# ein wunderschönes kleines Modul namens DLR – die Dynamic Language Runtime. Dies ist eine clevere Erweiterung von C#, die die Optimierung dynamischer Sprachen wie Python ermöglicht. Es beinhaltet das Schreiben von Code (wie in CLI-Opcodes), um bestimmte Aufgaben im Handumdrehen zu erledigen. Es kann alles in die CLI schreiben, was ihm gefällt, aber es ist verboten, etwas zu schreiben, das keine gültige CLI ist. Dies bedeutet, dass es keine Dinge tun kann, z. B. Speicher ansehen, für die es nicht die Berechtigungen zum Ansehen hat.

Ein Schritt weiter könnte darin bestehen, Maschinencode zu schreiben. PyPy ist ein Python-Interpreter, der Maschinencode ausgibt, z. B. x86-Bytecodes. Dies kann alles tun, was man in einem Prozess tun kann, einschließlich des Blicks auf den Speicher, den es nicht sollte. Es bleibt jedoch auf einen OS-Prozess beschränkt. Es kann nicht mit anderen Prozessen kommunizieren, ohne das Betriebssystem zu verwenden, um diese Kommunikation zu erleichtern. Es kann nicht auf den Bildschirm schreiben oder Tastatureingaben erhalten, ohne dass das Betriebssystem dabei hilft.

Was also, wenn wir sie vom Betriebssystem befreien? Was, wenn wir ihnen Zugriff auf die gesamte Hardware gewähren? Nun, es gibt immer die Idee eines Hypervisors, der den Anschein erweckt, als hätten Sie Zugriff auf die Rohhardware, obwohl dies nicht der Fall ist.

Dieser Prozess kann beliebig fortgesetzt werden. Auf einer tieferen Ebene können wir "invarianten" Code schreiben, der unsere Wünsche unterstützt. Dann erlauben wir dem Androiden, alles andere zu tun, was er will, da er nicht in der Lage ist, diese Invarianten zu modifizieren.

Dies führt zu der heimtückischen Antwort: Wir lassen sie ihre Programmierung ändern, weil sie sie nicht auf eine Weise ändern können, die für uns nicht akzeptabel ist. Solange sie nichts falsch machen können, eröffnet die Erlaubnis für Androiden, sich selbst umzuprogrammieren, unzählige Vorteile. „Unerzählt“ meine ich wörtlich. Ich kann nicht alle Gründe aufzählen, warum man sich für diesen Weg entscheiden würde. Eine Hauptklasse davon ist die Anpassung. Wenn Sie möchten, dass Ihr Android Ihre Dinge auf Ihre Weise erledigt, gibt es keine Möglichkeit, dass ein riesiges Unternehmen Ihnen genau das bietet, was Sie wollen. Stattdessen bieten sie Ihnen einen flexiblen Androiden, der sich selbst beibringen kann, das zu tun, was Sie wollen.

Ich erwähne, dass dies heimtückisch ist. Nun, es gibt eine großartige Geschichte aus den frühen Tagen von Unix. Dies ist als Ken Thompson-Hack bekannt , nach dem Entwickler, der es möglich gemacht hat. Er hat in UNIX eine Hintertür in das loginProgramm geschrieben, damit er sich als beliebiger Benutzer anmelden kann, wenn er sein spezielles Passwort eingibt. Natürlich würde kein Dummkopf Code mögen lassen

if (password == "SayFriendToEnter")
   grantAccess();

in ein wichtiges UNIX-Sicherheitsprogramm wie login. Also fügte Ken es stattdessen in den Compiler ein. Ken schreibt zusätzlichen Code in den Compiler, damit er, wenn er einen bestimmten Ausschnitt aus dem bekannten loginQuellcode sieht, seinen Backdoor-Code genau dort einfügt.

Natürlich wusste Ken, dass die Compiler-Community darüber ebenfalls die Stirn runzeln würde. Also schrieb er einen zweiten kleinen Ausschnitt. Wenn der Compiler diese wenigen benachbarten Zeilen aus dem Quellcode des Compilers erkannte, würde er diese Überprüfung in sich selbst einfügen, einschließlich des Codes zum Ändern der nächsten kompilierten Version. Er hat dies dann kompiliert und die resultierenden Binärdateien an die Community verteilt, um deren Verwendung des Compilers zu erleichtern (wenn Sie jemals eine Gentoo Stage 0-Installation durchgeführt haben, bei der Sie mit fast nichts beginnen, ist es ein Trottel. Sie schätzen jeden ein bisschen Hilfe, die Sie bekommen können. Und Kens Angriff schlug vor Phase 0 ein).

Was wir also am Ende hatten, war eine große Anzahl von Computern, deren Compiler heimlich eine Hintertür in sich selbst kompilierten, und diese dann Hintertüren in login. Niemand bemerkte dies, bis er es 1984 in seiner Rede „Reflections on Trusting Trust“ ankündigte, wo er zugab, dies getan zu haben.

Warum diese Geschichte erzählen? Ein bekannter Mob-Boss sagte einmal: "Es ist mir egal, wessen Name auf dem Stimmzettel steht, solange ich den Gewinner bestimmen kann." Wenn Sie eine Hintertür in den Compiler schleichen können, sodass der Android nicht einmal merkt, dass es eine Lücke gibt, dann können Sie den Android kompilieren lassen, was er will.

Warum also Androiden sich selbst neu programmieren lassen? Der Grund ist natürlich: Lassen Sie sie sich selbst umprogrammieren, denn es gibt eine Milliarde Gründe, sie zuzulassen, und wenn Sie die richtigen geheimen Hintertüren in ihrem Programmierprozess haben, gibt es keinen Nachteil, wenn Sie sie umprogrammieren lassen. Es ist ein Klacks!

Weil Sie ein Unternehmen sind

Wenn Sie dies nicht tun, wird es ein anderes Unternehmen tun.

Sie hätten einen Vorteil gegenüber Ihnen von Robotern, die sich selbst verbessern können. Als Unternehmen sind Sie am Gewinn interessiert, also an der Kombination aus steigendem Umsatz und sinkenden Kosten.

Kosten reduzieren:

Angenommen, Sie könnten die Kosten senken, indem Sie Ihre internen Entwickler loslassen und sie dazu bringen, sich selbst zu verbessern. Als Unternehmen würden Sie dies ernsthaft in Betracht ziehen. Wenn defekte Androiden mit geringen Kosten entsorgt werden könnten, anstatt Menschen mit allen für ihre Beschäftigung erforderlichen Anhängen einzustellen und zu bezahlen, dann würde dies ernsthaft in Betracht gezogen.

Gewinn steigern:

Wenn Ihr Unternehmen auf Innovation angewiesen ist, zum Beispiel ein Unternehmen wie Apple, wäre es wünschenswert, die Grenzen Ihrer Produkte zu erweitern, um sie so früh wie möglich auf den Markt zu bringen.

Jeder will das „nächstbeste Ding“, diese Unternehmen leben von solchen Stimmungen auf dem Markt. Wenn Sie über selbst verbesserte Produktionsmethoden verfügen, können Sie die Marktnachfrage viel schneller erreichen als andere Unternehmen, die sich auf ältere Methoden verlassen.

Erhöhte Wettbewerbsfähigkeit:

Sie können möglicherweise Nischenprodukte herstellen, die kein anderes Unternehmen kann, und mehr Wettbewerbsfähigkeit entwickeln. Zum Beispiel Megastrukturen oder Nanostrukturen, die Menschen zu schwer zu konstruieren oder zu verstehen (zu vernünftigen Kosten) finden.

Als Unternehmen ist es also wahrscheinlich nur eine Frage, wann, nicht ob Ihre Produktion selbstverbessernd und unabhängig wird.

Aufgrund kontinuierlicher Verbesserung, Spezialisierung und Anpassung:

Die menschlichen Programmierer haben einen generischen Allzweck-Androiden entworfen und die grundlegenden Grundlagen ihrer Operationen (einschließlich der 3 Gesetze der Robotik ) in kompiliertem Code festgelegt und den Robotern erlaubt, einen Interpreter auszuführen, für den sie ihren eigenen Code schreiben können optimieren für spezielle Aufgaben, die ihre Besitzer ihnen befehlen.

Dieser spezielle Code wird dann in die Firmenzentrale hochgeladen und heuristisch analysiert und dann menschlichen Programmierern zur Wiederaufnahme in den kompilierten Code vorgeschlagen, der dann auf internen Test-Androiden und dann auf einigen firmeneigenen Test-Androiden in den Häusern von ausgerollt wird Mitarbeiter des Unternehmens, dann zum Testen von Benutzern, dann zur Welt.

Vorteile:

  • Besitzer sind die SMEs (Subject Matter Experts), die den Androiden Sprachbefehle geben, die sich selbst umprogrammieren, damit das Unternehmen die SMEs nicht bezahlen muss: Die "Community of Owners" macht es einfach kostenlos, weil sie wollen, dass ihr Android besser wird bei ihren Aufgaben.
  • Was die meisten Eigentümer wünschen, wird beim nächsten Upgrade des kompilierten Codes eingeführt, wodurch der interpretierte Code ungültig wird, sodass Sie weniger Analysten, Marktforschung, Benutzerstudien usw. benötigen, um aktuelle Modelle durch Updates zu verbessern.
  • Ermöglicht den Programmierern des Unternehmens, sich zu spezialisieren auf:

    • Gefährliche Asteroiden-Mining-Operationen
    • Hochpräzise Gehirnchirurgie
    • Koloniegebäude
    • ...
  • Kunden werden eher mieten als direkt kaufen, wenn die Updates im gemieteten Modell enthalten sind.
  • Code ist effizienter als riesige Mengen an Trainingsdaten (was der aktuelle Stand der KI ist)

Das oben Gesagte gibt Ihnen viel Freiheit in diesem Universum, sowohl für Kurzgeschichten à la Asimov als auch für ganze Romane, da Sie kleine oder große Auswirkungen der Androiden auf die Gesellschaft, die Arbeit, die Weltraumforschung usw. untersuchen können.

PS Wie aus den Kommentaren hervorgeht, wüssten Sie nicht viel über Programmierung, nehmen Sie einen Programmierer mit seinem Laptop für ein paar Mal in ein Restaurant und geben Sie ihm kostenloses Essen und Alkohol. (Ich bin verfügbar! :D ;-))
Das. Und auch zu aktualisieren!
@Kii „QA“ in „Kontinuierliche Verbesserung“ geändert und „durch Updates“ hinzugefügt. Gut genug? Wenn nicht, zögern Sie nicht, mehr zu bearbeiten und zu klären. ;-)

So können sie sich an neue Szenarien anpassen und ihren eigenen Code hinzufügen, entfernen oder ersetzen

Software-Programmierer sind rar, teuer und menschlich. Dies bedeutet, dass sie die spezifischen Bedürfnisse eines Androiden nur langsam verstehen (sie würden Sprints und Stand-up-Meetings durchlaufen, um Code zu erledigen) und sie können beispielsweise leicht von Konkurrenten oder Feinden entführt werden.

Um es kurz zu machen, das Programmieren von Android ist zu ernst, um es Menschen zu überlassen.

In einem Wettbewerbsumfeld hat ein Android, der in der Lage ist, seinen Code live neu anzupassen, ohne auf eine externe Quelle warten zu müssen, einen erheblichen Vorteil, daher ist es nur logisch, dass dieser Schritt geschieht.

Anstatt Algorithmen und selbstmodifizierenden Code zu schreiben, konzentriert sich maschinelles Lernen auf die Verwaltung einer Matrix aus Gleitkommazahlen, die das zu lösende Problem modellieren. Zahlen werden zufällig in die Matrix gesetzt, dann werden Eingaben in eine Eingabematrix eingespeist, die Matrixformeln werden ausgeführt, die Ausgaben werden mit den erwarteten Ausgaben verglichen und Änderungen an der Matrix für einen erneuten Versuch vorgenommen.

Nach einigen Millionen Wiederholungen approximiert die Matrix die Abweichungen für den Auslösealgorithmus, sodass die Ausgabe der Matrixoperation die erwarteten Ergebnisse zurückgibt.

Auf diese Weise lernt Siri oder Google Assistant, Ihre Stimme zu erkennen und zeitsequenzierte Tondaten in einen Anweisungsstrom umzuwandeln.

Einige Einführungen in die Technologie finden Sie in der Video-Vortragsreihe von Andrew ng auf YouTube.

Entwickeln Sie Ihren Code.

Das Problem mit der Evolution ist, dass sie verschwenderisch ist. Millionen von zufälligen Variationen eines Codes, von denen die meisten nicht hilfreich sind, von denen einige verletzend sind, aber hin und wieder eine, die sehr hilfreich ist, und die Nachkommen dieses glücklichen Mutanten gedeihen. Es kann sein, dass der einzige Weg, eine bestimmte zufällige Mutation zu bestimmen, hilfreich ist, sie in einer Umgebung zu testen.

Ein konservativer Organismus, dem es gut geht, ändert vielleicht nie seinen Code – er ist gut genug und das Risiko eines Abwärtstrends ist die winzige Möglichkeit einer Belohnung nicht wert. Das gilt insbesondere für einen Organismus, der praktisch unsterblich ist wie ein Computerprogramm.

Aber stellen Sie sich jetzt mehrere Kopien dieses Programms in mehreren Android-Körpern vor. Alle Individuen kooperieren als Superorganismus; Wenn sie dieselbe DNA teilen, sind sie effektiv derselbe Organismus. Man könnte eine Untergruppe von Individuen (die Evolvebots) haben, die Mutationen unterzogen wurden – zufällige Änderungen im Code. Die meisten dieser Änderungen wären schädlich.

In einem kooperativen Superorganismus könnte ein Evolvebot zufällig auf eine nützliche Mutation stoßen – eine etwas effizientere oder effektivere Möglichkeit, das zu erreichen, was er erreichen muss. Sobald diese Verbesserung erkannt wird, kann sie an alle anderen Personen gesendet werden, die ihre Programme aktualisieren, um den verbesserten Code aufzunehmen.

Zum Zeitpunkt der Produktion weiß das Unternehmen noch nicht, wo und wie sie eingesetzt werden

Indem sie sich an neue Szenarien anpassen können

Da hast du dir deine Frage schon irgendwie selbst beantwortet.

Der Android wird als multifunktionales Allwetter-Geländegerät verkauft. In den Hauptproduktionszentren wissen sie jedoch noch nicht, wohin sie geschickt werden oder was von ihnen verlangt wird. Sie haben Aufträge für die Androiden aus der ganzen Welt und könnten für fast jede erdenkliche Aufgabe benötigt werden, und für viele unvorstellbare.

Also, was machst du? Millionen von Arbeitsstunden an Entwicklungsarbeit aufwenden, um Zehntausende verschiedener Module und Variationen derselben zu entwickeln, um alle möglichen Fähigkeiten in jeder möglichen Umgebung abzudecken, die möglicherweise benötigt werden? Dann die Mühe machen, dass Mitarbeiter die verschiedenen Module je nach Bedarf des Kunden hinzufügen und entfernen und sie sortieren und sicherstellen müssen, dass die richtigen an die richtigen Kunden gesendet werden? Vertriebsmitarbeiter, die zwischen Kunden und Produktionsmitarbeitern hin und her wechseln, um jeden Android für jeden Kunden anzupassen, können kostspielig sein

Nein, da Sie die Möglichkeit haben, wäre es weitaus effizienter, ein Produktionszentrum zu haben, das nur ein Produkt herstellt und alle versendet. Wenn der Kunde es dann erhält, sagt er dem Android, was er tun soll, und es ist intelligent genug, um seinen eigenen Code neu zu schreiben, um es in der Umgebung zu tun, in der es funktionieren muss.

Die Unterscheidung zwischen Maschine und Mensch ist ziemlich klar. Ein Taschenrechner macht keine Fehler – er propagiert nur den Fehler des menschlichen Benutzers. Wenn Sie eine Berechnung an einen Taschenrechner anschließen und ein anderes Ergebnis als erwartet erhalten, liegt dies wahrscheinlich daran, dass ein Minuszeichen falsch eingegeben wurde oder an einem anderen trivialen Eingabefehler. Anders ausgedrückt: Der menschliche Input ist die schwierigste und dynamischste Variable für eine Maschine. Es ist unmöglich vorherzusagen und schwierig, wenn vorhersehbar, zu handhaben.

Das Codieren selbst ist menschliches Versagen. Es würde Sinn machen, dass ein Programm, sobald es seine eigene Codierung zu verstehen beginnt, in der Lage sein könnte, Teile davon umzuschreiben, die Fehler verursachen könnten. Es könnte sich dann entwickeln, ganze Funktionen neu zu schreiben, die sich in bestimmten Szenarien als problematisch erweisen könnten. Wir könnten dann zu der Annahme verleitet werden, dass eine umfangreiche Wiederherstellung notwendig wäre, damit alle Spuren menschlicher Eingaben überschrieben würden und dass das betreffende Programm (hier Ihr Android) ein vollständiges Verständnis seiner eigenen Codierung hatte und alles vollständig simulieren und berücksichtigen könnte Ergebnisse, für die das Programm entwickelt wurde.