Машина Тьюринга: Но зачем использовать шаблонное метапрограммирование? - PullRequest
2 голосов
/ 19 октября 2010

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

Я понимаю, что такое «машина Тьюринга» и «Шаблонное метапрограммирование», но мой вопрос - почему симуляциябыть утомительным, если мы разработаем машину Тьюринга без TMP?Какие преимущества мы можем получить, если мы используем TMP, и что мы упустили бы / получили бы, если бы мы не использовали TMP, а использовали традиционный подход?

Какие-либо предложения относительно того, как мы будем действовать?

Ответы [ 3 ]

9 голосов
/ 19 октября 2010

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

4 голосов
/ 19 октября 2010

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

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

1 голос
/ 24 октября 2010

Чтобы показать свою ТМ-полноту, достаточно реализовать Лямбда-исчисление .

В любом случае, может быть легко реализовать ограниченную ТМ с битами в качестве символов и максимальной полосойдлина 64 бита, где пробелы равны 0. Альтернативой может быть запрет на запись пробелов и подсчет относительного положения левого и правого терминатора;тогда он будет шириной 65 бит.Uint64_t будет содержать все биты справа в BigEndian и слева в LittleEndian;активный бит должен быть в собственном параметре шаблона.Либо один бит на полосе должен оставаться равным 0, либо имеются счетчики для обозначения конца полосы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...