È impossibile scrivere un linguaggio di programmazione che consenta a tutte le macchine che si fermano su tutti gli input e nessun altro. Tuttavia, sembra facile definire un tale linguaggio di programmazione per qualsiasi classe di complessità standard. In particolare, possiamo definire un linguaggio in cui possiamo esprimere tutti i calcoli efficienti e solo i calcoli efficienti.
Ad esempio, per qualcosa come : prendi il tuo linguaggio di programmazione preferito e dopo aver scritto il tuo programma (corrispondente a Turing Machine ), aggiungi tre valori all'intestazione: un numero intero un numero intero , e un output predefinito . Quando il programma viene compilato, emettere una macchina di Turing che ha dato input di dimensione esegue su per passi . Se non si interrompe prima che i passaggi di siano attivi, emette l'output predefinito. A meno che non mi sbagli, questo linguaggio di programmazione ci permetterà di esprimere tutti i calcoli in e niente di più. Tuttavia, questa lingua proposta è intrinsecamente non interessante.
La mia domanda: ci sono linguaggi di programmazione che catturano sottoinsiemi di funzioni calcolabili (come tutte le funzioni calcolabili in modo efficiente) in modo non banale? Se non ci sono, c'è una ragione per questo?