Ogólnie rzecz biorąc, gdy matematyka jest wykorzystywana do badania niektórych X , najpierw trzeba mieć model X , a następnie opracować teorię, zestaw wyników na temat tego modelu. Chyba, że teoria może być uznane za „podstawy teoretyczne” dla X . Teraz ustaw X = obliczenia. Istnieje wiele modeli obliczeń, z których wiele obejmuje „stan”. Każdy model ma swoją „teorię” i czasami można „tłumaczyć” między modelami. Uważam, że trudno powiedzieć, który model jest bardziej „podstawowy” - są one po prostu zaprojektowane z myślą o różnych celach.
Maszyny Turinga zostały zaprojektowane w celu zdefiniowania, co jest obliczalne . Tworzą więc dobry model, jeśli zależy Ci na tym, czy istnieje algorytm dla określonego problemu. Ten model jest czasem nadużywany do badania wydajności algorytmów lub twardości problemów, pod pretekstem, że jest wystarczająco dobry, przynajmniej jeśli dbasz tylko o wielomian / nie-wielomian. Model pamięci RAM jest bliższy prawdziwemu komputerowi i dlatego jest lepszy, jeśli chcesz precyzyjnej analizy algorytmu. Aby postawić dolne granice twardości problemów, lepiej nieużyj modelu, który zbytnio przypomina dzisiejsze komputery, ponieważ chcesz objąć szeroką gamę możliwych komputerów, a jednocześnie być bardziej precyzyjnym niż zwykły wielomian / nie-wielomian. W tym kontekście widziałem na przykład zastosowany model sondy komórkowej.
Jeśli zależy Ci na poprawności , przydatne są jeszcze inne modele. Tutaj masz semantykę operacyjną (która powiedziałbym, że jest to analogiczny rachunek lambda dla stanowych obliczeń), semantykę aksomatyczną (opracowaną w 1969 r. Przez Hoare'a na podstawie indukcyjnych twierdzeń Floyda z 1967 r., Które są spopularyzowane przez Knutha w sztuce programowania komputerowego , tom 1) i inne.
Podsumowując, myślę , że szukasz modeli obliczeniowych. Istnieje wiele takich modeli, opracowanych z myślą o różnych celach, a wiele z nich ma stan, więc odpowiadają one programowaniu imperatywnemu. Jeśli chcesz wiedzieć, czy coś da się obliczyć, spójrz na maszyny Turinga. Jeśli zależy Ci na wydajności, spójrz na modele pamięci RAM. Jeśli zależy Ci na poprawności, spójrz na modele zakończone „semantyką”, takie jak semantyka operacyjna.
Na koniec, pozwól mi wspomnieć, że jest duża książka online tylko o modelach obliczeniowych Johna Savage'a. Chodzi przede wszystkim o wydajność. W części dotyczącej poprawności zalecam zacząć od klasycznych artykułów Floyda (1967) , Hoare (1969) , Dijkstra (1975) i Plotkin (1981) . Wszystkie są całkiem fajne.