Руководство по Brainfuck для новичков [8] (16.08.2014)
К началу

7 Ответы на частые вопросы

7.1 Что такое эзотерический язык программирования?

Разработка таких языков производится в качестве эксперимента, реализации нестандартных подходов к разработке ПО, ну или просто для смеха. Для решения серьезных задач эзотерические языки, как правило, не подходят.

7.1.1 Является ли таковым Brainfuck?

Разумеется. Вряд ли вы когда-либо в практических целях станете использовать программу на Brainfuck. Даже при создании простых алгоритмов, проще использовать С, куда легко портировать команды языка. Сложностей при разработке добавляет плохая читаемость исходного кода, который неминуемо превращается в кашу при попытке написать что-либо полезное, а также ограниченные возможности ввода-вывода.

7.2 Это самый маленький язык программирования?

7.2.1 И да...

Взглянув на набор команд кажется, что больше из языка при сохранении функциональности вырезать ничего нельзя. Мы имеем
  Присвоения: + и -
  Ввод-вывод: , и .
  Цикл и ветвление: [ и ]
  Перемещение по памяти < и >
Мы можем представить себе и более компактные языки, часто являющиеся наследниками Brainfuck, например
  с ограниченной функциональностью (к примеру, входные данные уже должны содержаться в памяти);
  с урезанным набором значений (Bitfuck работает с битами вместо байтов)
Все это делает программу еще более громоздкой.

7.2.2 И нет...

Вдохновившись Brainfuck энтузиасты делают относительно успешные попытки создания языков с еще меньшим набором команд.
Boolfuck использует однобитные ячейки памяти, что позволяет сократить команды присвоения с двух до одной - достаточно только инверсии бита (команда *).
Аналогичный ему Bitfuck также состоит из семи команд, однако, четыре из них записываются двумя символами. Всего для записи программы требуется 4 символа, чем авторы и гордятся.
Можно также избавиться от ввода-вывода, объединить по две команды в одну и оставить всего четыре реальных команды:
  [ начать цикл
  ] завершить цикл
  ( передвинуться влево и инвертировать бит
  > передвинуться вправо

Для дальнейшего упрощения предлагается не разделять данные и инструкции в памяти. В абстрактной машине с архитектурой URISC (Ultimate Reduced Instruction Set Computer) используется одна команда, чье поведение определяется состоянием битов под указателем. Вариантом такой команды является BitBitJump. Инструкция работает с тремя адресами - копирует бит по первому адресу во второй адрес и перемещает указатель к третьему адресу, который становится “первым” и так далее.

7.3 Как выучить Brainfuck?

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

Можно прислушаться к экспертному мнению
Brainfuck
comments powered by Disqus
JavaScript (13)
PHP (11)
Brainfuck (8)
adm (8)
Joomla (4)
Canvas (3)
answers (2)
API (2)
CMS (2)
Modx (2)
jQuery (1)
Ajax (1)
SQL (1)
Shell (1)
batch (1)
10-6