Может ли какая-либо программа быть реализована механически?


13

Можно ли создать единственную (не полную по Тьюрингу) механическую реализацию, скажем, Microsoft Word? Можно ли реализовать такие вещи, как итераторы, функции первого порядка, весь спектр методов программирования? Могут ли шестерни и другие механические части представлять структуры данных или даже программные объекты? В какой-то момент это требует создания машины общего назначения, эквивалентной по Тьюрингу, или каждая функция, переменная и т. Д. Может иметь свою собственную уникальную механическую конструкцию в виде маховиков и / или зубчатых колес, трещоток, что у вас есть? Итак, мне интересно, можно ли скомпилировать какую-либо часть программного обеспечения на стандартном компьютере в механическую схему.


Я думаю, что то, что запускает Microsoft Word, даже не должно запускаться на машине Тьюринга, так как все процедуры в Word должны быть (доказуемо) завершены (кроме случаев, когда есть ошибка c), кроме основного цикла обработки событий.
Realz Slaw


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

@Realz Slaw: нет, если вы включите I / O, макросы VBA или расширения. Например, я сомневаюсь, что Word будет жаловаться, если вы загрузите бесконечный документ Word. Это, вероятно, основная ОС, которая достигла бы предела.
reinierpost

@reinierpost, но каждая процедура не обязательно должна быть завершена; они будут либо доказуемо прекращены, либо доказуемо нет. Т.е. если бы вы выдавали ему бесконечный документ, он бы точно не закончился. Моя точка зрения заключалась в том, что большинство программ, которые мы создаем, не должны использовать полный язык Тьюринга, потому что мы можем ограничить его программами, которые мы можем доказать как завершенные при наличии бесконечных данных, и не завершенные при наличии бесконечных данных; и если вы можете сделать это, проблема с остановкой не возникает. TLDR; Если вы не можете доказать, что ваши процедуры прекращены или нет, вы ужасный программист.
Реал Слав

Ответы:


23

Да, это так. Вот как вы это делаете:

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

  1. Дэн Р. Гика. Геометрия синтеза: структурированный подход к проектированию СБИС
  2. Дэн Р. Гика, Алекс Смит. Геометрия синтеза II: от игр к схемам, нечувствительным к задержкам
  3. Дэн Р. Гика, Алекс Смит. Геометрия синтеза III: управление ресурсами через вывод типов.
  4. Дэн Р. Гика, Алекс Смит, Сатнам Сингх. Геометрия синтеза IV: составление аффинной рекурсии в статическое аппаратное обеспечение.

Затем оказывается, что схемы снова и снова появляются в инженерном деле. Джон Баез приводит большую таблицу аналогий концепций и вырабатывает множество связей в «Находках этой недели» 288-296. Поэтому принципиальные схемы, которые генерирует компилятор Дэна, могут быть созданы как механические или гидравлические системы, если вы действительно этого хотите!

╔══════════════════════════════════════════════════════════════╗
║                 displacement  flow      momentum     effort  ║
╠══════════════════════════════════════════════════════════════╣
║ Mechanics      position      velocity  momentum     force    ║
║ (translation)                                                ║
║                                                              ║
║ Mechanics      angle         angular   angular      torque   ║
║ (rotation)                   velocity  momentum              ║
║                                                              ║
║ Electronics    charge        current   flux         voltage  ║
║                                        linkage               ║
║                                                              ║
║ Hydraulics     volume        flow      pressure     pressure ║
║                                        momentum              ║
╚══════════════════════════════════════════════════════════════╝
  1. http://math.ucr.edu/home/baez/week288.html
  2. http://math.ucr.edu/home/baez/week289.html
  3. http://math.ucr.edu/home/baez/week290.html
  4. http://math.ucr.edu/home/baez/week291.html
  5. http://math.ucr.edu/home/baez/week294.html
  6. http://math.ucr.edu/home/baez/week296.html

12
Следствие: патенты на программы не имеют смысла.
Андрас Саламон

1
Фантастический ответ на вопрос, который я едва знал, как задать. Спасибо за добавленную таблицу!
Алекс Най

5

Практическим примером этого является компьютер Tic Tac Toe, изготовленный из Tinker Toys в Бостонском научном музее (первоначально созданный командой студентов MIT). Конечно, это намного проще, чем Microsoft Word.

Вот статья 1989 года от Scientific American, описывающая это.

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


Мне понравилась статья и машина lego, спасибо.
Алекс Най

1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.