Готово ли пакетное обучение?

19

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

    
задан PinkElephantsOnParade 20.06.2012 в 21:12
источник

2 ответа

13

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

    
ответ дан Wug 20.06.2012 в 21:20
  • Я также укажу, что людям удается совершать какие-то совершенно нелепые вещи, используя только чистое командные сценарии. : S –  Wug 20.06.2012 в 21:27
  • Я чувствую, что есть немного больше, чем это. Машина Тьюринга не просто «хранит состояние», но имеет в основном стек с двойным концом. У FSM есть слабые версии состояния, ветвления и итерации, а не TC. У КПК даже есть стек и по-прежнему не TC; для КПК требуется КПК с двумя стеками. –  Dave Cousineau 04.03.2017 в 20:41
18

Я только что «проверенный» пакет завершен, создав интерпретатор мозгового укуса в партии (потому что brainfuck доказано, что Turing завершен):

Ссылка

Кстати, полный язык программирования turing означает его либо:

  • невозможно создать программу, которая может определить, будет ли другая программа (на том же языке) в конечном итоге остановится или будет работать навсегда (я не знаю, как это работает, и я не думаю, что кто-либо когда-либо использовал этот для доказательства полноты Тьюринга).
  • возможно создать программу, которая может запускать все возможные программы на языке (переводчик: интерпретатор Brainfuck в Brainfuck (Есть лучшая версия, которую я, к сожалению, не могу найти. Это ужасно медленно))
  • Возможно действовать или моделировать машину Тьюринга и, таким образом, содержать как минимум следующие аспекты:
    • Запись в память (т. е. изменение значения переменной на любое другое значение; только возможность изменения true до false и наоборот). В случае пакета: SET A=5 )
    • «Бесконечная» память (т. е. мне нужно больше одного бита / байта, который вы можете написать тоже, желательно бесконечно много). Строки, массивы, таблицы, битовые поля или даже целые числа действительны, если мы можем писать в цельный объект. Обратите внимание, что из-за адреса должно быть возможно читать и записывать в переменную по адресу: должны быть бит-сдвиги, если вы хотите, чтобы целые числа были действительными, и вы должны иметь возможность индексировать ваш массив, чтобы что-то вроде array[index]; .)
    • Операторы условного перехода (т. е. IF %A%==0 GOTO LABEL (переход на метку, если A равен нулю), while (var) {/*code*/} (переход назад к началу кода, в то время как var не равен нулю) или jmp0 exit; (переход на выход, если текущее значение на стек равен нулю))

Традиционная машина Тьюринга требует, чтобы у вас была лента, которая бесконечна с обеих сторон, но будет работать простой массив, строка, таблица (объект) или двоичное число (бит-поле). Например, в моем «Brainfuck in Batch» я использовал объект массива / таблицы для хранения памяти (так как пакет позволяет вам изменить ключ значения, например: SET ARRAY[%KEY%]=%VALUE% )

    
ответ дан YoYoYonnY 10.05.2015 в 14:58