Dies ist eine Folge der Turing Completeness ist, das ist etwas, das viele Jahrzehnt gegründet wurde s vor.
Alan Turing, der berühmte Computerwissenschaftler, bewies, dass jede berechenbare Funktion mit einem Turing Machine berechnet werden konnte. Eine Turingmaschine ist ein sehr einfaches theoretisches Gerät, das nur wenige Dinge kann. Er kann auf ein Band (dh Speicher) lesen und schreiben, einen internen Zustand beibehalten, der durch den aus dem Speicher gelesenen Inhalt geändert wird, und den internen Zustand und die letzte gelesene Speicherzelle verwenden, um zu bestimmen, in welche Richtung das Band bewegt werden soll Speicherzelle.
Die Operationen Zuweisung, Bedingung und Schleife reichen aus, um eine Turing-Maschine zu simulieren. Das Lesen und Schreiben von Speicher und das Aufrechterhalten des Zustands erfordert eine Zuweisung.Das Ändern der Bandrichtung basierend auf dem Status und dem Speicherinhalt erfordert Bedingungen und Schleifen. "Loops" sind tatsächlich etwas höher als das, was tatsächlich benötigt wird. Alles was wirklich benötigt wird ist, dass der Programmablauf irgendwie zurückspringen kann. Dies bedeutet, dass Sie Schleifen erstellen können, wenn Sie möchten, aber die Sprache muss kein explizites Schleifenkonstrukt haben.
Da diese drei Operationen die Simulation einer Turing-Maschine ermöglichen und eine Turing-Maschine in der Lage ist, jede berechenbare Funktion zu berechnen, ist jede Sprache, die diese Operationen bereitstellt, auch in der Lage, jede berechenbare Funktion zu berechnen.
Edit: Und wie andere Beantworter darauf hingewiesen haben, müssen diese Operationen nicht diskret sein. Sie können eine einzelne Anweisung erstellen, die alle drei dieser Dinge (Zuweisen, Vergleichen und Verzweigen) so ausführt, dass sie eine Turing-Maschine selbst simulieren kann.
Was meinst du mit bedingt? Ich nehme an, die Zuweisung behandelt Ganzzahlen? Ich würde denken, wenn Sie Schleifen haben, brauchen Sie nicht wirklich Bedingungen, da Bedingungen nur ein Sonderfall einer Schleife sind. – recursive
Zumindest brauchen Sie auch etwas wie "inc". – sepp2k
@ sepp2k Sie wirklich nicht.Sie könnten ein Konstrukt wie "if (a == 1) a = 2 elseif (a == 2) a = 3 elseif (a == 3) a = 4" usw. erstellen. Dies sind nur Bedingungen und Zuweisungen. –