Smallfuck
Диалект языка программирования BrainfuckSmallfuck — еще более лаконичный диалект языка Brainfuck, который оперирует не байтами, а битами, имеет ограниченную емкость памяти и не определяет команды ввода-вывода. Таким образом, остается всего 5 команд:
-
*
: инвертировать бит в текущей ячейке; -
>
: сдвинуть указатель данных на один бит вправо; -
<
: сдвинуть указатель данных на один бит влево; -
[
: “начало цикла”: если текущий бит = 1, сдвинуть указатель инструкций на одну команду вправо, иначе сдвинуть его на команду, следующую за парной командой]
; -
]
: “конец цикла”: если текущий бит = 0, сдвинуть указатель инструкций на одну команду вправо, иначе иначе сдвинуть его на команду, следующую за парной командой[
. Может также быть представлен как безусловный переход указателя инструкций на парную команду[
, т.к.[
выполняет отдельную проверку на вход в тело цикла;
Поскольку команды ввода-вывода не определены, считается, что входные данные закодированы как начальные состояния памяти, а выходные — считываются из памяти после конца работы программы. Таким образом, язык может рассматриваться как автомат по преобразованию состояний памяти; для оценки работы программы ее следует запускать на всех возможных входных состояниях памяти, или же оговаривать нужное состояние.
Из-за ограниченности размеров памяти язык не является Тьюринг-полным и принадлежит к классу машин с ограниченной памятью.
Язык был придуман Nikita Ayzikovsky в 2002 году. Предполагалось, что Smallfuck будет компилироваться в язык SMETANA. Язык идентичен Boolfuck, за исключением ограниченности памяти и команд ввода-вывода.
Комментарии
]]>blog comments powered by Disqus
]]>