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


11

Я завжди відчуваю себе роз'єднаним між абстрактними машинами (такими як машини Тьюрінга) та комп'ютерними архітектурами (включаючи архітектури віртуальних машин, архітектуру Фон Ноймана). Тож я хотів би знати, як вони пов’язані? Як один впливає на іншого? Посилання також високо оцінені. Дякую.


7
Машини Тьюрінга - це теоретична модель інформатики, яка міркує про обчислюваність . Аналогічно, обчислення лямбда - це модель інформатики для обчислень, але така, яка знайшла практичне застосування в дизайні мови програмування. Хоча обчислення лямбда, машини тюрінгу та фактичні комп’ютери рівнозначні один одному щодо речей, які вони можуть обчислити, вони по-різному відрізняються тим, як працюють. Зокрема, ці теоретичні моделі обчислення не описують, що реальне обладнання може зробити ефективно.
амон

2
@amon Здається, ви вже написали більшу частину відповіді, навіщо дозволити "піти на сміття" в коментарі

Як зазначали інші, існує декілька математичних моделей для "комп'ютерів": деякі ближче до мов (часткові рекурсивні функції, лямбда-числення), деякі ближче до апаратних. Якщо ви хочете, варто переглянути машини RAM ( посилання Вікіпедії ): вони ближче до реального обладнання, ніж машини Тьюрінга.
Лоренцо Дематте

Відповіді:


23

Машини Тьюрінга та подібні "машини" є моделями обчислень , вони призначені для дослідження таких проблем, як:

  • Що можна обчислити
  • Клас складності проблем
  • Відносини між класами складності
  • Еквівалентність різних способів обчислити щось

Для цього сама машина повинна бути максимально простою. Зручність програмістів або задимливі проблеми в реалізації не мають значення, оскільки це математичні об'єкти, і лише дуже мало програм написано безпосередньо для них.

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

Тож два підходи принципово не розходяться. Окрім того, що обидва знаходяться в галузі інформатики, вони не мають багато спільного між собою.


1
Дякую. Але я знайшов " машини Тьюрінга та універсальні машини Тьюрінга з аналогією до віртуальних машин ", які могли б підказати їх відносини, але немає деталей.
Тім

4
@Tim Я здогадуюсь, що цей курс просто сприймає машини Тьюрінга як вихідну точку для впровадження концепції абстрактної машини, а потім швидко переходить до більш корисних абстрактних машин.

4

Основний взаємозв'язок полягає в тому, що ви можете змоделювати теоретичну конструкцію у фізичній.

Те, що фізична здатна до всього, що є теоретичним, породжує здатність теоретичного тестування та аналізу теоретичної машини бути визнаною реалізованою у реальному світі.

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

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

Зараз люди розробляють аналіз та тестування теоретичної моделі, відомої як "квантова машина Тюрінга", щоб побачити, які засоби будуть доступні для квантових обчислювальних машин. Має сенс люди працювати з цими моделями, коли фізична версія їхньої моделі є надмірно дорогою, рідкісною, а сучасних реалізацій ще дуже не вистачає. Теоретичні моделі використовуються, щоб показати, що ми можемо зробити, коли наші фізичні реалізації вдосконаляться.


1

Вони пов'язані приблизно так само, як космічний човник пов’язаний з повітряною кулею, яку ти надуваєш диханням, а потім відпускаєш і спостерігаєш, як відлітаєш.

Фундаментальний принцип вигнання чогось в одну сторону, щоб привести щось у зворотний бік, є.

На цьому схожість закінчується.


1

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


1

Важливо знати, що визначення обчислень - це не "ті речі, якими займаються комп'ютери". Обчислення передують комп'ютерам. Комп'ютери отримали свою назву тому, що вони були створені для сприяння виконанню завдань обчислення, а не тому, що вони визначають його.

Отже, машина Тьюрінга - це не про те, як працюють комп'ютери. Йдеться про те, чи обчислюється проблема чи ні - тобто вирішується формальним логіко-математичним процесом. Це нічого не говорить про те, як цей процес може бути реалізований. Якщо вона обчислюється, її можна вирішити людьми за допомогою олівців і паперу, приділяючи достатньо часу, або за допомогою комп'ютерів, або (це важливо) з будь-якою системою, яка може бути показана Тюрінгом завершеною .

Тож машина Тьюрінга робить дві дуже важливі речі:

  1. Забезпечує перевірку обчислюваності будь-якої проблеми / завдання.
  2. Забезпечує тест будь-якої системи, щоб показати, чи може вона обчислити будь-яку обчислювальну задачу.

Перший момент дозволяє нам думати про проблеми, не відволікаючись на реальні реалізації світу. Це добре, тому що справжнє обладнання часто відволікає людей невідповідними деталями (наприклад, "що станеться, якщо у нас не вистачить пам'яті чи місця для зберігання?", Оскільки у машин Тьюрінга нескінченний ресурс). Для машини Тьюрінга можна розробити доказове теоретичне рішення, і тоді все, що хтось повинен зробити, це перетворити його на те, що буде працювати над заданою архітектурою.

Другий момент дозволяє нам перевірити можливості будь-якої реалізації без необхідності запускати на ній безліч різних тестів. Якщо вона може імітувати машину Тьюрінга, вона може зробити все, що може зробити машина Тьюрінга. Оскільки машини Тьюрінга можуть обчислити будь-що, що можна обчислити, так можна.

Що означає, що взаємозв'язок між машиною Тьюрінга та будь-якою справді практичною архітектурою комп'ютера (навіть віртуальною) - це лише одне: вони можуть обчислити.

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


-1

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

Перевага машин Тьюрінга полягає в тому, що існує безліч корисних доказів, які дуже легко зробити за допомогою машини Тюрінга. Неважко довести, що будь-яка машина, достатньо потужна для імітації машини Тьюрінга, може вирішити будь-яку проблему, яку може машина Тьюрінга (так). Однак це стає цікавішим, коли ви визначаєте функцію " Обчислювальна система" . Виявляється, існує багато сумісних визначень обчислюваної функції. Якщо ви можете визначити всю свою поведінку як обчислювані функції, ви можете імітувати в машині Тьюрінга.

Скажімо, у вас є архітектура, яка безпосередньо підтримує програми стилю LISP, та інша, як x86, яка є більш процедурною. Ваш друг стверджує, що "LISP є більш виразним, тому ви можете писати програми на цій машині, які ви ніколи не могли написати на своєму x86". Це жорстоко протидіяти (тим більше, що ви, мабуть, не знаєте достатньо LISP). Однак ви можете зловживати кількома абстрактними машинами, такими як машина Тюрінга:

  • Ваш LISP-апарат може бути фантазійним, але все, що він може зробити, можна звести до обчислення лямбда. Ваш друг нетерпляче киває. Обчислення лямбда - це культова річ для функціональних програмістів.
  • Мій x86 може бути фантазійним, але все, що він може зробити, можна звести до машини реєстрації. Ще раз, жодного питання від вашого друга. У сучасній теорії комп’ютерів регістри - це ТАК!
  • Будь-яка реєстраційна машина може бути змодельована як машина Тьюрінга, що імітує цю реєстраційну машину. Тепер твій друг цікавиться, чому ти повертаєшся до епохи ударних стрічок.
  • А ваш апарат для обчислення лямбда можна також звести до машини Тьюрінга. * Ваш друг заперечує, але ви вказуєте їх на тезу Церкви Тьюрінга, і вони соромлять голову.
  • Таким чином, мій блок x86 може робити все, що може зробити ваш фантазійний апарат на базі LISP!

Звичайно, є багато інших прикладів. Гра Життя Конуея була доведена як Тюрінг повною, тобто теоретично вона могла зробити все, що може зробити ваш комп’ютер. Найпростіший спосіб зробити це - побудувати машину Тюрінга в Life . Я доводжу це, тому що це був би випадок того, що ви назвали абстрактною машиною, яка трактується як буквальна архітектура! Ви можете собі уявити, наскільки важким було б твердження про обчислюваність у Life без допомоги абстрактних моделей (я впевнений, що, як чорт, не моделює x64, у комплекті з визирним кешем, просто для того, щоб довести, що життя обчислюється!)


Зрештою, велика різниця між архітектурами та абстрактними машинами полягає в тому, що архітектури зазвичай стосуються продуктивності. Архітектури хочуть знати, наскільки швидко ви можете щось зробити. Абстрактні машини, як правило, задоволені лише знанням того, чи зможете ви. Розглянемо універсальний конструктор, розроблений для державних машин фон Неймана. Це було досить, щоб довести, що UC може працювати, не маючи на увазі, що автори ніколи не мали достатньо обчислювальної потужності, щоб насправді це побачити.

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


1
Ваші наведені приклади міркувань не є технічно коректними - якщо ви заявляєте, що машина Turing може робити все, що може зареєструвати машина або x86 mahine, це не обов'язково означає, що машина x86 може робити все, що зареєструє машина чи машина turing може. Як контрприклад, будь-який кінцевий автомат також може бути зведений до машини Тьюрінга, але, очевидно, не еквівалентний обчисленню лямбда або LISP. Спрямоване значення має значення - якщо ви хочете сказати, що "мій ящик x86 може зробити все, що може зробити ваш фантазійний апарат на базі LISP", тоді це вимагатиме зменшення з Тьюрінга на x86, а не з x86 на Тьюрінга.
Петріс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.