Pull to refresh

Comments 12

Очень рекомендую что-нибудь написать на самом Brainfuck и запустить в вашем эмуляторе. Мне в своё время очень помогло получить ощущение контроля:

  • память это ячейки, интерпретируй как хочешь,

  • алгоритмы это про логику, а не конструкции языка

  • в программировании есть свой юмор

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

На кодоварсах есть сумасшедшая ката с компиляцией "ассемблера" в код на брейнфаке.

Звучит довольно интересно)

Друг мой, статья оказалась очень интересной и познавательной. Я узнала много нового о данном языке программирования. Оказывается, вот оно как, язык, имеющий всего 8 команд, которые позволяют написать что-то простенькое. Мне особенно понравилось, как легко можно читать и понимать ваш исходный код. Как будет свободное время, скачаю ваш интерпретатор и начну пытаться что-то на нём писать.

Я рад, что Вам понравилось)

У меня где то лежала старенькая Raspberry Pi 3 с Ubuntu, может попробую, так сказать, портировать туда вашу прогу. Авось, что то и получится

В смысле портировать, код же платформонезависимый, он итак будет работать без всяких усилий с вашей стороны? Можно портировать на малинку какой-нибудь компилятор brainfuck.

Извиняюсь, но я особо за Raspberry не шарю, так что могу только пожелать Вам удачи в этом деле.

for i in range(len(program)):
    command = program[i]

for index, command in enumerate(program):
    ...

Буква A может выглядеть так:

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

Вместо 65 плюсов можно было показать в статье как организуются и работают циклы, и заодно сократить длину программы. Согласен с комментарием @bfDeveloper по поводу того, что алгоритмы - это про логику, а не конструкции языка. Было бы отлично показать больше логики в статье, на мой вкус получилось так себе, хоть и не минусовал. Плюс, для такого транслятора разворачивать аж целый python runtime чувствуется как солидный оверхэд. Но это ладно. Если использовать match (с версии 3.10, если не ошибаюсь), код можно сделать проще. Плюс начало цикла "[" само по себе ничего не делает, а просто служит точкой останова для "]". ] - это буквально "проверить значение в текущей ячейке, и, если не ноль, уменьшать индекс рабочей ячейки в массиве программы, пока не найдено [, увеличить индекс на 1 (>)". Как-то так.

Если интересуют "более другие" варианты писать на BF, есть отличная среда программирования bfdev (HTTP без S), включающая в том числе расширения языка и автоматическую оптимизацию кода, насколько помню. Я ее использовал, когда преподавал курс по BF лет 7 назад.

Sign up to leave a comment.

Articles