brainfuck

Про brainfuck я слышал давно. Вчера наконец-то познакомился с этим замечательным представителем эзотерических языков программирования.

Принцип brainfuck прост.

Для работы используется регистр из некоторого количества байт, каждый из которых в начале исполнения программы имеет нулевое значение. Для доступа к каждой ячейке массива исользуется byte pointer - указатель, при старте установленный в левейшую ячейку регистра.

Должен отметить, что размер регистра, а также максимальное значение каждой ячейки, ровно как и поведение при выходе указателя за пределы массива, при выходе значение ячейки за допустимые рамки и некоторые другие условия в целом зависят от реализации интерпретатора brainfuck, но классика - 30000-байтный регистр (то есть значение каждой ячейки - от 0 до 2^8-1, то есть 0-255)

Весь синтаксис brainfuck состоит из 8 команд:

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

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

Интерпретаторы для всяких платформ здесь: The Brainfuck Programming Language, в принципе зная принцип brainfuck можно написать его интерпретатор на любом языке. На том же PHP.

Другое дело, написать интерпретатор PHP на brainfuck - шутка такая... :)

Нашёл себе The Brainfuck Studio для КПК - теперь развлекаюсь с brainfuck в любом удобном месте :)

На brainfuck базируется не один другой язык программирования, почитать можно здесь

Оставить комментарий:





x−7−8+2=-7,

Бесконечно много решений? F5!

← О пользе SVG Дневной Дозор →