Полнота по Тьюрингу

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

Значит ли это, что я теоретически могу реализовать Google, используя JavaScript или Brainf_ck?

4 ответа

Вы можете реализовать Google из стековой машины, сделанной из спичечных коробок и камней. Yabba-Dabba-Ду?

Нет, для приведенных примеров это было бы невозможно. Завершение полноты заключается в реализации алгоритмов и тому подобного, но вам не будет сказано, не можете ли вы внедрить в него какое-либо программное обеспечение. Google в основном зависит от их баз данных, с которыми вы не можете напрямую работать через JavaScript, поэтому нет DB == нет Google.

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

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

Другие вопросы по тегам