]]> ]]>

Smallfuck

Диалект языка программирования Brainfuck

Smallfuck — еще более лаконичный диалект языка Brainfuck, который оперирует не байтами, а битами, имеет ограниченную емкость памяти и не определяет команды ввода-вывода. Таким образом, остается всего 5 команд:

  • * : инвертировать бит в текущей ячейке;
  • > : сдвинуть указатель данных на один бит вправо;
  • < : сдвинуть указатель данных на один бит влево;
  • [ : “начало цикла”: если текущий бит = 1, сдвинуть указатель инструкций на одну команду вправо, иначе сдвинуть его на команду, следующую за парной командой ];
  • ] : “конец цикла”: если текущий бит = 0, сдвинуть указатель инструкций на одну команду вправо, иначе иначе сдвинуть его на команду, следующую за парной командой [. Может также быть представлен как безусловный переход указателя инструкций на парную команду [, т.к. [ выполняет отдельную проверку на вход в тело цикла;

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

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

Язык был придуман Nikita Ayzikovsky в 2002 году. Предполагалось, что Smallfuck будет компилироваться в язык SMETANA. Язык идентичен Boolfuck, за исключением ограниченности памяти и команд ввода-вывода.


Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам