Полные языки, отличные от Тьюринга, предлагают большое преимущество перед языками, полными на языке Тьюринга, поскольку они намного более анализируемы и, следовательно, предлагают гораздо более широкие возможности оптимизации. Тем не менее, они почти не используются, и полнота Тьюринга на самом деле продается как хорошая особенность.
Существуют ли сегодня какие-либо распространенные языки, не полные по Тьюрингу, которые предназначены для программирования общего назначения?
programming-languages
turing-completeness
MaiaVictor
источник
источник
Ответы:
На сегодняшний день не существует общепринятых многоцелевых языков Тьюринга. Однако существует несколько языков, не соответствующих Тьюрингу. ANSI SQL, регулярные выражения, языки данных (HTML, CSS, JSON и т. Д.) И s-выражения являются некоторыми примечательными примерами.
На самом деле нет пользы для многоцелевых языков, не относящихся к тьюрингу. «Гораздо более анализируемый» аспект, который, как я предполагаю, является намеком на теорему Райса, действительно применим, но он не имеет особого смысла для языков, нацеленных на несколько различных областей применения, другие требования имеют приоритет. Гибкость полноты по Тьюрингу намного важнее, чем ее сложность. Языки программирования, как и любая другая часть программного обеспечения, связаны с компромиссами.
С другой стороны, для доменных языков это может быть наоборот. Если вы не создаете «один язык, чтобы управлять ими всеми», вы можете использовать только те функции, которые имеют смысл для конкретной цели вашего языка. И чаще всего полнота по Тьюрингу не входит в их число.
источник
Причина того, что неполные языки не являются общепринятыми, заключается в том, что легко реализовать свой собственный язык, когда бы он вам ни понадобился, и, тем не менее, он вам нужен. Интересным примером является биткойн-скрипт: https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp
источник