Я не могу найти, если это так или нет, и мне очень любопытно - если это не квалифицируется, какая функциональность ему не подходит? Я сделал приличное количество партии и не вижу никаких очевидных промахов в возможностях.
Закончено ли пакетное обучение?
Ответ 1
Я считаю, что это соответствует. Считается, что основные требования полноты Тьюринга сводятся к нескольким простым операциям, в том числе: способность сохранять состояние (переменные), способность к ветвлению (условные обозначения) и возможность итерации (циклов). Пакет имеет все это, поэтому, если только не существует неоткрытого требования к полноте Тьюринга, квалифицируется командный скриптинг.
Ответ 2
Я только что "проверенный" пакет завершен, создав интерпретатор мозгового укуса в партии (потому что brainfuck доказано, что Turing завершен):
https://github.com/YoYoYonnY/Brainfuck-In-Batch
Кстати, полный язык программирования turing означает его либо:
- невозможно создать программу, которая может определить, будет ли другая программа (на том же языке) в конечном итоге остановится или будет работать навсегда (я не знаю, как это работает, и я не думаю, что кто-либо когда-либо использовал этот для доказательства полноты Тьюринга).
- можно создать программу, которая может запускать все возможные программы на языке (переводчик: переводчик Brainfuck в Brainfuck (Есть лучшая версия, которую я, к сожалению, могу 't найти. Это ужасно медленно))
- Возможно действовать или моделировать машину Тьюринга и, таким образом, содержать как минимум следующие аспекты:
- Запись в память (т.е. изменение значения переменной на любое другое значение, только возможность изменить
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%
)