Невозможно написать язык программирования, который позволяет всем машинам, которые останавливаются на всех входах, и никаким другим. Тем не менее, кажется, что легко определить такой язык программирования для любого стандартного класса сложности. В частности, мы можем определить язык, на котором мы можем выразить все эффективные вычисления и только эффективные вычисления.
Например, для чего-то вроде : возьмите свой любимый язык программирования, и после того, как вы напишите свою программу (соответствующую Turing Machine ), добавьте три значения в заголовок: целое число и целое число и вывод по умолчанию . Когда программа скомпилирована, выведите машину Тьюринга которой задан ввод размера выполняющий на для шагов. Если не останавливается до выполнения шагов , выведите вывод по умолчанию, Если я не ошибаюсь, эти языки программирования позволят нам выразить все вычисления в и ничего более. Однако этот предложенный язык по своей сути неинтересен.
Мой вопрос: существуют ли языки программирования, которые захватывают подмножества вычислимых функций (таких как все эффективно вычисляемые функции) нетривиальным способом? Если нет, есть ли причина для этого?