Эти виды программ могут существовать на каждом полном по Тьюрингу языке?

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

  • Компилятор для себя, который сначала работает на интерпретаторе, записанном на некотором другом языке, и затем компилирует свой собственный исходный код? (Начальная загрузка)

  • Стандарты-Compilant компилятор C++, который выходные двоичные файлы для, например: Windows?

  • Regex Parser и Evaluater?

  • Клон World of Warcraft? (Принятие языка получает необходимую привязку API как, например, OpenGL и исходный код WoW доступны),

(Все здесь теоретическое)

Давайте возьмем Brainf*ck в качестве языка в качестве примера.

7
задан John Feminella 8 April 2010 в 18:30
поделиться

8 ответов

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

Если кто-нибудь создаст клиент WoW в BF, я буду очень впечатлен!

1
ответ дан 6 December 2019 в 08:14
поделиться

Turing-Complete только выражает вычислительные возможности , ничего о возможности ввода / вывода !

8
ответ дан 6 December 2019 в 08:14
поделиться

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

-2
ответ дан 6 December 2019 в 08:14
поделиться

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

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

0
ответ дан 6 December 2019 в 08:14
поделиться

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

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

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

8
ответ дан 6 December 2019 в 08:14
поделиться

Да, конечно, все эти. В конце концов, именно это и означает «полный по Тьюрингу»: он может вычислить все, что можно вычислить.

2
ответ дан 6 December 2019 в 08:14
поделиться

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

0
ответ дан 6 December 2019 в 08:14
поделиться

Нет, полнота по Тьюрингу не имеет ничего общего с Ввод-вывод и оборудование. Однако вы можете представить, что ввод-вывод, аппаратные системы и графические системы существуют, используя переменные (или «ленту памяти»). В BF вы можете использовать первые 2 ячейки ( x , y ) для «мнимого» разрешения экрана, затем еще x раз y ячеек для всех пикселей на экране, затем следующая ячейка ( n ) для «предполагаемого» размера файловой системы, затем следующие n ячеек для содержимого файловой системы ...

5
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: