Комментарии 11
А почему для [+]
и [-]
были выбраны триграфы, а не пара вида {
и }
?
Это 3 разные инструкции языка, которые приводят к обнулению ячейки, а не одна инструкция. Это означает, что инструкция +
или -
будет выполняться до тех пор, пока значение текущей ячейки не равно нулю. Поскольку bf использует минимальное количество инструкций, то добавлять новую инструкцию для операции обнуления нет смысла.
Лет 5-6 назад на Хабре была целая неделя Brainfuck'a — народ писал интерпретаторы/компиляторы для различных платформ/языков/виртуальных машин. Эх, были времена...
Я как-то писал вроде самый пока сильно оптимизирующий интерпретатор/компилятор —https://github.com/bolknote/brainfuck. По ссылке его порт с JS. Основной приход с развёртки циклов в конструкции без циклов. Правда я его подзабросил, надоело, в нём так и остались неисправленные баги.
Ещё один интерпретатор Brainfuck