Преодоление разрыва между абстрактными машинами и компьютерными архитектурами? [закрыто]

11

Я всегда чувствую себя разъединенным между абстрактными машинами (такими как машины Тьюринга) и компьютерными архитектурами (включая архитектуры виртуальных машин, архитектуру фон Неймана). Итак, я хотел бы знать, как они связаны? Как одно влияет на другое? Ссылки также приветствуются. Спасибо.

Тим
источник
7
Машины Тьюринга - это теоретическая модель информатики, позволяющая понять вычислимость . Точно так же лямбда-исчисление - это компьютерная модель для вычислений, но она нашла практическое применение в дизайне языка программирования. Хотя лямбда-исчисление, машины Тьюринга и настоящие компьютеры эквивалентны друг другу в отношении того, что они могут вычислить, они совершенно отличаются по своей работе. Примечательно, что эти теоретические модели вычислений не описывают, что может реально делать реальное оборудование.
Амон
2
@amon Похоже, вы уже написали большую часть ответа, зачем оставлять это в комментариях?
Как указывали другие, существует несколько математических моделей для «компьютеров»: некоторые ближе к языкам (частично рекурсивные функции, лямбда-исчисление), некоторые ближе к аппаратным средствам. Если хотите, посмотрите на машины с ОЗУ ( ссылка на Википедию ): они ближе к реальному оборудованию, чем машины Тьюринга.
Лоренцо Дематте

Ответы:

23

Машины Тьюринга и подобные «машины» являются моделями вычислений , они предназначены для исследования таких проблем, как:

  • Что можно вычислить
  • Класс сложности задач
  • Отношения между классами сложности
  • Эквивалентность различных способов вычисления чего-либо

Для этого сама машина должна быть максимально простой. Удобство программиста или неприятные проблемы реализации не имеют значения, поскольку это математические объекты, и только очень немногие программы когда-либо написаны непосредственно для них.

И наоборот, архитектура виртуальных машин и фактическая архитектура машин на основе кремния сосредоточены на выполнении данной программы . Машина сделана более сложной, чем это строго необходимо для решения вышеуказанных задач, и, в свою очередь, требуется меньше (и более очевидных) инструкций, чтобы делать интересные вещи. Не слишком сложно, поскольку они все еще должны быть понятными (и эффективно осуществимыми), но более сложными.

Таким образом, два подхода в корне противоречат друг другу. Помимо того, что оба находятся в области компьютерных наук, они не имеют много общего друг с другом.


источник
1
Спасибо. Но я нашел « машины Тьюринга и универсальные машины Тьюринга с аналогией с виртуальными машинами », в которых можно предположить их связь, но подробностей нет.
Тим
4
@ Тим, я думаю, что курс просто использует машины Тьюринга в качестве отправной точки для представления концепции абстрактной машины, а затем быстро переходит к более полезным абстрактным машинам.
4

Основное отношение заключается в том, что вы можете смоделировать теоретическую конструкцию в физической.

Тот факт, что физический способен на все, что является теоретическим, дает возможность для теоретического тестирования и анализа теоретической машины быть признанным осуществимым в реальном мире.

Проблема остановки является прекрасным примером того, что на машине Тьюринга было показано, что она неразрешима, и, доказав на машине Тьюринга, можно, таким образом, установить ее неразрешимость на реальной машине, которая подчиняется законам машины Тьюринга.

Разница между суммированием и подсчетом и записью на бумаге заключается в том, что доказано, что реальность подсчета соответствует тем же правилам, что и суммирование на листе бумаги. Поэтому, когда вы симулируете физический подсчет вещей, ваши результаты распознаются как применимые к реальному миру - таким образом, вы знаете, сколько будут стоить две моноблоки, мысленно симулируя счет без необходимости подсчитывать физические деньги, чтобы получить результат.

В настоящее время люди разрабатывают анализ и тестируют теоретическую модель, известную как «Квантовая машина Тьюринга», чтобы посмотреть, какие возможности будут доступны с квантовыми вычислительными машинами. Имеет смысл, что люди будут работать с этими моделями, когда физическая версия их модели является чрезмерно дорогой, редкой, а текущие реализации все еще очень отсутствуют. Теоретические модели используются, чтобы показать, что мы можем сделать, когда наши физические реализации улучшатся.

Джимми Хоффа
источник
1

Они связаны примерно так же, как космический челнок связан с воздушным шаром, который вы накачиваете своим дыханием, а затем отпускаете и наблюдаете, как он улетает.

Фундаментальный принцип выталкивания чего-либо в одном направлении для продвижения чего-либо в противоположном направлении существует.

На этом сходство заканчивается.

Майк Накис
источник
1

Я вижу теоретические машины как преодоление разрыва между вычислениями в реальном мире и математикой. Машина Тьюринга достаточно мощна, чтобы имитировать любую реальную архитектуру или язык программирования, достаточно проста, чтобы ее можно было легко симулировать, и, самое главное, достаточно проста, чтобы быть предметом достаточно простых математических рассуждений и доказательств.

Патриция Шанахан
источник
1

Важно знать, что определение вычислений - это не «то, что делают компьютеры». Вычисления предшествуют компьютерам. Компьютерам дали свое имя, потому что они были созданы, чтобы помочь вычислительной задаче, а не потому , что они ее определяют.

Так что машина Тьюринга не о том, как работают компьютеры. Речь идет о том, является ли проблема вычислимой - то есть разрешимой формальным логическим / математическим процессом. В нем ничего не говорится о том, как этот процесс может быть реализован. Если он вычислим, он может быть решен людьми с помощью карандашей и бумаги, если у него достаточно времени, или с помощью компьютеров, или (это важно) с любой системой, которая может быть показана как завершенная по Тьюрингу .

Таким образом, машина Тьюринга делает две очень важные вещи:

  1. Предоставляет тест на вычислимость любой задачи / задачи.
  2. Предоставляет тест для любой системы, чтобы показать, может ли она вычислить любую вычислимую задачу.

Первый момент позволяет нам думать о проблемах, не отвлекаясь на реализацию в реальном мире. Это хорошо, потому что реальное оборудование часто отвлекает людей несущественными деталями (например, «что произойдет, если у нас закончится память или место для хранения?», Поскольку у машин Тьюринга бесконечный ресурс). Для машины Тьюринга может быть разработано доказуемое теоретическое решение, и тогда все, что нужно, - это перевести его во что-то, что будет работать на заданной архитектуре.

Второй момент позволяет нам проверять возможности любой реализации без необходимости запускать множество различных тестов. Если он может моделировать машину Тьюринга, он может делать все, что может делать машина Тьюринга. Так как машины Тьюринга могут вычислить все, что можно вычислить, то же самое можно сделать.

Это означает, что связь между машиной Тьюринга и любой действительно практичной компьютерной архитектурой (даже виртуальной) - это только одно: они могут вычислять.

Архитектура фон Неймана была попыткой создать шаблон дизайна для эффективных электронных цифровых компьютеров общего назначения . Работа Тьюринга предоставила доказательство его обоснованности

itsbruce
источник
-1

Если вы думаете об этом, архитектуры являются абстрактными машинами. Они описывают, как «должен» вести себя кусок тщательно сделанного кремния. Разница между архитектурами и машинами Тьюринга больше зависит от масштаба, чем от фундаментального изменения подхода.

Преимущество машин Тьюринга состоит в том, что существует множество полезных доказательств, которые очень легко сделать с помощью машины Тьюринга. Просто доказать, что любая машина, достаточно мощная, чтобы имитировать машину Тьюринга, может решить любую проблему, которую может сделать машина Тьюринга (да). Однако становится интереснее, когда вы определяете вычислимую функцию . Оказывается, существует множество совместимых определений вычислимой функции. Если вы можете определить все свое поведение как вычислимые функции, вы можете имитироваться на машине Тьюринга.

Допустим, у вас есть архитектура, которая напрямую поддерживает программы в стиле LISP, а другая, например, x86, является более процедурной. Ваш друг утверждает, что «LISP более выразителен, поэтому вы можете писать программы на этом компьютере, которые вы никогда не сможете написать на своем x86». Это жестоко противостоять (тем более что вы, вероятно, недостаточно знаете LISP). Однако вы можете использовать несколько абстрактных машин, таких как машина Тьюринга:

  • Ваша машина LISP может быть причудливой, но все, что она может сделать, сводится к лямбда-исчислению. Твой друг нетерпеливо кивает. Лямбда-исчисление - немного культовая вещь для функциональных программистов.
  • Мой x86 может быть причудливым, но все, что он может сделать, сводится к машине регистрации. Еще раз, нет вопросов от вашего друга. Регистры - это ТАКая паза в современной компьютерной теории!
  • Любая машина регистрации может быть смоделирована как машина Тьюринга, имитирующая эту машину регистрации. Теперь ваш друг задается вопросом, почему вы возвращаетесь к эпохе перфоленты.
  • И ваша машина лямбда-исчисления также может быть превращена в машину Тьюринга. * Ваш друг возражает, но вы указываете им на тезис Черча-Тьюринга, и они стыдятся своей головы.
  • Таким образом, мой x86-блок может делать все, что может делать ваша модная машина на базе LISP!

Есть, конечно, много других примеров. Было доказано, что игра Жизни Конвея завершена по Тьюрингу, то есть теоретически она может делать все, что может делать ваш компьютер. Самый простой способ сделать это - создать машину Тьюринга в Life . Я поднимаю это, потому что это был бы случай, когда вы называли абстрактную машину трактовкой буквальной архитектуры! Вы можете себе представить, насколько сложно было бы претендовать на вычислимость в Life без помощи абстрактных моделей (я уверен, что, черт возьми, я не моделирую x64 с полным подсмотром кеша, просто чтобы доказать, что Life вычислима!)


В конце концов, большая разница между архитектурами и абстрактными машинами заключается в том, что архитектуры обычно связаны с производительностью. Архитектура хочет знать, как быстро вы можете что-то сделать. Абстрактные машины, как правило, довольствуются только знанием, если можно. Рассмотрим универсальный конструктор, разработанный для конечных автоматов фон Неймана. Этого было достаточно, чтобы доказать, что UC может работать, не говоря уже о том, что у авторов никогда не было достаточно вычислительной мощности, чтобы на самом деле увидеть это.

Ценовая архитектура, которую платят за демонстрацию того, насколько быстро они могут работать, заключается в том, что зачастую очень сложно доказать, что они могут вычислить все . Для этого архитектуры развернулись и начали использовать абстрактные машины.

Корт Аммон
источник
1
Приведенные вами примеры рассуждений не являются технически правильными - если вы заявляете, что машина Тьюринга может делать все, что может машина регистрации или машина x86, это не обязательно означает, что машина х86 может делать все, что машина регистрации или машина Тьюринга может. В качестве контрпримеров, любой конечный автомат также может быть сведен к машине Тьюринга, но явно не эквивалентен лямбда-исчислению или LISP. Направленность имеет значение - если вы хотите заявить, что «мой x86-блок может делать все, что может делать ваша необычная машина на базе LISP», то это потребует сокращения с Turing до x86, а не с x86 до Turing.
Петерис