É impossível escrever uma linguagem de programação que permita todas as máquinas que param em todas as entradas e nenhuma outra. No entanto, parece ser fácil definir uma linguagem de programação para qualquer classe de complexidade padrão. Em particular, podemos definir uma linguagem na qual podemos expressar todos os cálculos eficientes e apenas cálculos eficientes.
Por exemplo, para algo como : pegue sua linguagem de programação favorita e depois de escrever seu programa (correspondente à Máquina de Turing ), adicione três valores ao cabeçalho: um número inteiro , e número , e uma saída padrão . Quando o programa é compilado, imprima uma máquina de Turing que, dada a entrada do tamanho execute em para etapas . Se não parar antes que as etapas sejam executadas, faça a saída padrãoM ′ c k d M x n M ′ x c n k M ′ c n k d P. A menos que eu esteja enganado, essa linguagem de programação nos permitirá expressar todos os cálculos em e nada mais. No entanto, essa linguagem proposta é inerentemente não interessante.
Minha pergunta: existem linguagens de programação que capturam subconjuntos de funções computáveis (como todas as funções eficientemente computáveis) de uma maneira não trivial? Se não houver, existe uma razão para isso?