Почти все используемые языки программирования Turing Complete, и хотя это дает язык для представления любого вычислимый, он также имеет свой собственный набор проблем. Поскольку все алгоритмы, которые я пишу, предназначены для остановки, я хотел бы иметь возможность представлять их на языке, который гарантирует их остановку.
Регулярные выражения, используемые для сопоставления строк, и конечные машины используются, когда lexing, но мне интересно, есть ли более общий, широко используемый язык, который не завершает Тьюринга?
изменить: Я должен уточнить, "по общему назначению" я не обязательно хочу писать все алгоритмы остановки на языке (я не думаю, что такой язык будет существовать), но я подозреваю, что существуют общие потоки в прекращении доказательств, которые могут быть обобщены для создания языка, на котором гарантируются все алгоритмы.
Есть и другой способ решить эту проблему - устранить необходимость теоретически бесконечной памяти. Когда вы ограничиваете объем памяти, который разрешен машиной, количество состояний, в которых находится устройство, является конечным и счетным, и поэтому вы можете определить, будет ли алгоритм остановлен (не позволяя машине переходить в состояние, в котором он находился раньше).