Я искал в Интернете и нашел несколько противоречивых ответов.Некоторые источники утверждают, что язык / машина / что-у-вас завершается по Тьюрингу в том и только в том случае, если он имеет и условное и безусловное ветвление (что, я думаю, является своего рода избыточным), некоторые говорят, что только безусловное являетсятребуется, другие требуются только условные.
Чтение о немецком Z3 и ENIAC , Википедия говорит:
Немецкий Z3(показан работающим в мае 1941 года) был разработан Конрад Цузе.Это был первый цифровой компьютер общего назначения, но он был электромеханическим, а не электронным, поскольку он использовал реле для всех функций.Он рассчитан логически с использованием двоичной математики.Он был программируем с помощью перфорированной ленты, но не имел условной ветви.Хотя он и не был разработан для полноты по Тьюрингу, он был случайно, как выяснилось в 1998 году (но для использования этой полноты по Тьюрингу были необходимы сложные, умные хаки).
Какие сложные, умные хакиТочно?
В статье 1998 года Р. Рохаса также говорится (обратите внимание, что я не читал эту статью, это просто фрагмент из IEEE.):
ВычисленияМашина Z3, построенная Конрадом Цузе между 1938 и 1941 годами, могла выполнять только фиксированные последовательности арифметических операций с плавающей запятой (сложение, вычитание, умножение, деление и квадратный корень), закодированных в перфорированной ленте.С точки зрения истории вычислений интересным является вопрос о том, являются ли эти операции достаточными для универсальных вычислений.В документе показано, что фактически один программный цикл, содержащий эти арифметические инструкции, может моделировать любую машину Тьюринга, лента которой имеет заданный конечный размер.Это делается путем моделирования условного ветвления и косвенной адресации чисто арифметическими средствами.Поэтому Zuse Z3, по крайней мере в принципе, столь же универсален, как современные компьютеры с ограниченным адресным пространством.
Короче говоря, SOers, какой тип ветвления в точности необходим для полноты по Тьюрингу?Предполагая бесконечную память, можно ли считать язык с только ветвящейся конструкцией goto
или jmp
(без конструкций if
или jnz
) полным по Тьюрингу?