Язык программирования Brainfuck

Brainfuck — один из известнейших эзотерических языков программирования, придуман Урбаном Мюллером в 1993 году. Язык известен своим минимализмом и часто его приводят в пример, когда хотят показать, непонятный или сложный синтаксис. Но так ли он сложен на самом деле?

Программа на Brainfuck

Программа на Brainfuck выглядит следующим образом:

>+++++++[<++++++++++>-]<++>>++++++++++[<++++++++++>-]<+>>++++++++++[<++++++++++>-]<++++++++>>++++++++++[<++++++++++>-]<++++++++>>+++++++++++[<++++++++++>-]<+<<<<.>.>.>.>.>

Немного непонятно, что происходит, но так я вывел на экран слово “Hello”. Даже не “Hello World!”, но это все, на что меня хватило. (В момент написания статья я понял, что можно было бы написать программу короче, ведь в слове “Hello” идут подряд две буквы “l”.)

Brainfuck очень простой

Когда кто-то вам говорит что Brainfuck сложный, вас обманывают и вводят в заблуждение. Язык очень простой, и стократно попроще ваших Python, Java и C++. Brainfuck состоит всего лишь из 8 команд:

< — сдвинуть указатель на следующий элемент списка.
> — сдвинуть указатель на предыдущий элемент списка.
+ — увеличить значение текущего элемента на 1.
— — уменьшить значение текущего элемента на 1.
. — вывести значение текущего элемента .
, — считать значение текущего элемента .
[ — начало цикла, который выполняется пока текущий элемент не ноль.
] — конец цикла. Если значение текущего элемента ноль, то цикл прекращается, иначе — выполняется от предыдущего знака [.

Собственно, это все операторы языка. Все остальные символы считаются комментариями. Хоть язык содержит всего восемь операторов, он обладает полнотой по Тьюрингу, что означает, что на нём можно реализовать любой алгоритм.

Начало работы

Чтобы научиться работать с Brainfuck первое что нужно понять, это как устроена память в языке. Память в Brainfuck представляет собой «бесконечную» ленту начинающуюся в первом элементе. Язык Brainfuck — это фактически реализация машины Тьюринга. Есть указатель, который указывает на текущую ячейку в этой ленте. В каждой ячейке храниться число от 0 до 255. Сначала во всех ячейках значение — ноль.У вас есть указатель, который изначально указывает на первый элемент списка.

Вы можете сдвигать указатель на один элемент вперед или назад, таким образом вы выбираете с каким элементом списка хотите производить манипуляции.

Вы можете увеличивать или уменьшать на единицу значение элемента списка, на который указывает указатель.

Еще одним важным элементом Brainfuck является ввод/вывод. Вы можете вывести ввести с клавиатуры некоторое значение в текущую ячейку, либо вывести на экран ASCII значение текущей ячейки.

ASCII (American standard code for information interchange) — название таблицы (кодировки), в которой некоторым распространённым печатным и непечатным символам сопоставлены числовые коды.

Вывод на экран слова “Hello” на Brainfuck

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

Чтобы сократить код программы можно воспользоваться циклами, поддерживаются даже вложенные циклы. Но гифок с циклами не будет, не обессудьте.

0 Shares:
1 comment
Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

You May Also Like