Es ist unmöglich, eine Programmiersprache zu schreiben, die alle Maschinen zulässt, die an allen Eingaben anhalten, und keine anderen. Es scheint jedoch einfach zu sein, eine solche Programmiersprache für jede Standardkomplexitätsklasse zu definieren. Insbesondere können wir eine Sprache definieren, in der wir alle effizienten Berechnungen und nur effiziente Berechnungen ausdrücken können.
Zum Beispiel für etwas wie : Nehmen Sie Ihre bevorzugte Programmiersprache und fügen Sie nach dem Schreiben Ihres Programms (entsprechend Turing Machine ) dem Header drei Werte hinzu: eine Ganzzahl und eine Ganzzahl sowie eine Standardausgabe . Wenn das Programm kompiliert wird, ein Ausgang Turing Maschine , dass die Eingabe gegeben der Größe läuft auf für cn ^ k Schritten. Wenn M ' nicht anhält, bevor die cn ^ k- Schritte abgelaufen sind, geben Sie den Standardausgang d ausM ' c k d M x n M '. Wenn ich mich nicht irre, können wir mit diesen Programmiersprachen alle Berechnungen in und nicht mehr ausdrücken . Diese vorgeschlagene Sprache ist jedoch von Natur aus nicht interessant.
Meine Frage: Gibt es Programmiersprachen, die Teilmengen von berechenbaren Funktionen (z. B. alle effizient berechenbaren Funktionen) auf nicht triviale Weise erfassen? Wenn nicht, gibt es einen Grund dafür?