Wenn Mathematik zum Studieren von X verwendet wird , benötigt man im Allgemeinen zuerst ein Modell von X und entwickelt dann eine Theorie, eine Reihe von Ergebnissen zu diesem Modell. Ich vermute, dass die Theorie eine "theoretische Basis" für X ist . Stellen Sie nun X = Berechnung ein. Es gibt viele Berechnungsmodelle, von denen viele den "Zustand" betreffen. Jedes Modell hat seine eigene "Theorie" und es ist manchmal möglich, zwischen Modellen "zu übersetzen". Ich glaube, es ist schwer zu sagen, welches Modell "grundlegender" ist - sie wurden einfach mit Blick auf unterschiedliche Ziele entworfen.
Turingmaschinen wurden entwickelt, um zu definieren, was berechenbar ist . Sie sind also ein gutes Modell, wenn Sie sich Gedanken darüber machen, ob für ein bestimmtes Problem ein Algorithmus existiert. Dieses Modell wird manchmal missbraucht, um die Effizienz von Algorithmen oder die Härte von Problemen zu untersuchen, unter dem Vorwand, dass es gut genug ist, zumindest wenn Sie sich nur für Polynome / Nicht-Polynome interessieren. Das RAM-Modell ist näher an einem realen Computer und daher besser, wenn Sie eine genaue Analyse eines Algorithmus wünschen. Um die Härte der Probleme zu begrenzen, ist es besser, dies nicht zu tunVerwenden Sie ein Modell, das zu sehr den heutigen Computern ähnelt, da Sie eine Vielzahl möglicher Computer abdecken möchten und dabei präziser als nur polynomiell / nicht polynomiell sind. In diesem Zusammenhang habe ich zum Beispiel das verwendete Zell-Sonden-Modell gesehen.
Wenn Sie Wert auf Korrektheit legen , sind noch andere Modelle hilfreich. Hier haben Sie operationale Semantik (die ich als das Analogon der Lambda-Berechnung für Statefull-Berechnungen bezeichnen würde), axiomatische Semantik (entwickelt von Hoare 1969 auf der Grundlage von Floyds induktiven Behauptungen aus dem Jahr 1967, die Knuth in The Art of Computer Programming popularisiert hat). Band 1) und andere.
Zusammenfassend denke ich, dass Sie Berechnungsmodelle suchen. Es gibt viele solcher Modelle, die mit unterschiedlichen Zielsetzungen entwickelt wurden, und viele haben einen Status, sodass sie einer imperativen Programmierung entsprechen. Wenn Sie wissen möchten, ob etwas berechnet werden kann, schauen Sie sich Turing-Maschinen an. Wenn Sie Wert auf Effizienz legen, schauen Sie sich die RAM-Modelle an. Wenn Sie Wert auf Korrektheit legen, schauen Sie sich Modelle an, die mit "Semantik" enden, z. B. operative Semantik.
Lassen Sie mich zum Schluss erwähnen, dass nur über Computermodelle von John Savage ein großes Buch online ist . Es geht hauptsächlich um Effizienz. Für den Korrektheitsteil empfehle ich, mit den klassischen Papieren von Floyd (1967) , Hoare (1969) , Dijkstra (1975) und Plotkin (1981) zu beginnen . Sie sind alle ziemlich cool.