Язык программирования для развлечений

Язык программирования для развлечений

Когда обычный пользователь хочет развлечься - он запускает любимую игру. Когда программист хочет развлечься - он начинает писать всякую фигню.

 

А если есть время и вдохновение, то изучает новый, никому не нужный, язык программирования.

Brainfuck является одним из самых известных, так называемых, эзотерических языков программирования. Эзотерическими называют языки, которые не предназначены для практического применения, это больше такой своеобразный юмор, средство развлечься. Brainfuck был придуман в 1993 году Урбаном Мюллером, как just for fun. Вообще, название языка полностью отражает ее сущность. Итак, попробуем немножко поразмять мозг.

Язык программирования для развлечений

Займемся изучением самого языка

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

Bf включает всего восемь операторов, каждый из которых обозначается одним символом.

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

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

Давайте и мы что-то напишем. Начнем с классического примера - вывод на экран фразы Hello World!

Наша программа будет иметь следующий вид:

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

.> +. +++++++ .. +++.> ++. << +++++++++++++++.>. +++.

------.--------.> +.>.

На первый взгляд, ничего не понятно. Поэтому давайте рассмотрим нашу программный код более подробно.

++++++++++    Записываем в нулевую ячейку значение 10 это будет наш счетчик

[     Начинаем цикл и продолжаем, пока в нулевой ячейке появления ноль

> +++++++> ++++++++++> +++> +  последовательно прибавляем 7, 10, 3 и 1 к следующим ячейкам

<<<< -   Возвращаемся к нулевой ячейки и уменьшаем ее значение на 1

]    Пока в нулевой ячейке не равно нулю, продолжаем цикл, поскольку он будет повторяться 10 раз, то в ячейках 1-4 появятся числа 70, 100, 30 и 10

> ++.    переходим в ячейку 1 и увеличиваем ее значение на 2, что даст 72, то есть ASCII код буквы H, затем выводим ее на экран

> +.     выводим 'e' (код 101)

+++++++.        выводим 'l' (код 108)

.   выводим 'l' еще раз

+++.    выводим 'o' (код 111

> ++.      выводим пробел (код 32)

<< +++++++++++++++.    выводим 'W' (код 87)

>.     выводим 'o' (код 111

+++.    выводим 'r' (код 114)

------.    выводим 'l' (код 108)

--------.    выводим 'd' (код 100)

> +.     выводим '!' (Код 33)

>.       переводим строку (код 10)

Чтобы убедиться в том, что данная программа действительно работает, просто сохраните текст в файл test.bf и запустите на выполнение.

Все. Не знаю, как ваш мозг, а мой уже начал плавиться, поэтому статью на этом заканчиваю.

***

Как установить модуль, плагин, компонент Joomla

Как сделать фото с экрана

Установка Joomla 3 - инструкция