BrainFuck

Материал из Lurkmore
Версия от 10:21, 9 января 2021; 127.0.0.1 (обсуждение) (ссыль сдохла)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску
В эту статью нужно добавить как можно больше разных эзотерических символов и слов.
Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи.
«

In Soviet Russia brain fucks YOU

»
<ssd.meister> Когда я сказал студентам принести лабу по алгоритмизации на любом языке программирования, я не подозревал, что на потоке найдётся мудак, который напишет её на.. BRAINFUCK'е!

360086

BrainFuck (не путать с Mindfuck) — один из эзотерических языков программирования, язык-головоломка. Тем не менее, на нём вполне успешно пишут программы. Целью его создателя был тьюринг-полный язык с компилятором минимального размера.

Синтаксис

Синтаксис брейнфака состоит из команд сдвига исполнительной каретки влево-вправо, уменьшения-увеличения текущего значения на единицу, чтения-записи и организации while-цикла. Всего — восемь команд.

Хелловорлд

Хелловорлд на брейнфаке:

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

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

Обфускация

В действительности те, кто пишут программы на Brainfuck, специально игнорируют отступы и пишут все в одну строку, чтобы еще больше запутать исходный код программы и напугать непосвященных. Например, нечитабельный код:

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

можно разбить на отдельные инструкции и проставить табуляции в отдельных блоках:

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

Согласитесь, из непонятного «шоыэтазанахуй», код становится вполне читабельным и доступным для понимания. А если учесть, что в Brainfuck используется только 8 символов-команд — можно еще комментариев налепить, в любой удобной для вас форме:

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

Употребление

Как самый известный из эзотерических языков программирования, BrainFuck стал (нередко ошибочно, так как создавался для других целей, а для списка ниже есть примеры более целевых языков) синонимом

  • Нечитаемости программ
  • Неудобства или непродуманности синтаксиса

Перл — это тот же brainfuck, только автор его, почему-то, воспринимает серьезно. Может, конечно, это он так издевается, и тащится от того, что мир подхватил его версию brainfuck и строчит на нем да фанатеет...

ЛОР
  • Неудобства инструмента разработки

— Нормальному программисту не важно на чем и под какую платформу писать...
— Брейнфак под дос.

ЛОР
  • Мазохизма

—...если вы настоящий мазохист-извращенец, если вам нравится преодолевать непреодолимое и выполнять невыполнимое, то ваш выбор — это BAT-скрипты.
— С машиной Тьюринга (или с BrainFuck, что почти то же самое) не сравнить...

ЖЖ
  • Примера, чем чревато излишнее упрощение

— В российских школах будут преподавать программирование на Delphi и C++Builder.
— ...слава богу, хоть не лисп...
— Надо вообще на COBOL'е или на FORTRAN'е учить. Хотя, самый простой, конечно Brainfuck.

ЛОР
  • Мозгокрутных логических задач, не имеющих практической ценности

Brainfuck. Задача для детей дошкольного возраста. Забудь то, чему тебя учили в школе. Детишки дошколята решают ее в среднем за 3 минуты. 8809=6; 7111=0; 2172=0; 6666=4; 1111=0; 3213=0; 7662=2; 9312=1; 0000=4; 2222=0; 3333=0; 5555=0; 8193=3; 8096=5; 7777=0; 9999=4; 7756=1; 6855=3; 9881=5; 5531=0.
2581=? (спойлер: 2. Ответ — это число замкнутых кружочков и овальчиков в начертании числа)

forum.bobr.by
  • Насмешки при сравнении языков программирования

— Пых-пых что-то достал, хочется чего-то нового, с большими возможностями... …
— Ну автору сабжа же нужно «что-то новое, с большими возможностями». Вот brainfuck ему как раз и подойдет. Утрамбует его моск немножко. Научиться яснее выражать свои мысли, и мы ему быстрее сможем помочь.

ЛОР

Кроме того

  • Из-за практической бесполезности трансляторы брейнфака, байндинги для распространённых библиотек, модули для Apache и т. п. не получают распространения.
  • Из-за простоты языка писать их сравнительно легко.
    • Что делает написание подобных вещей полезным для тренировки и самоутверждения.
  • Для настоящих ценителей имеются реализации сабжа на сабже. Они даже соревнуются в скорости исполнения, что особенно доставляет, учитывая стремящуюся к нулю практическую полезность языка.
  • Существует ряд Brainfuck-based языков программирования, например, любители Терри Пратчетта оценят язык Ook
  • Поговаривают, что для bf был спаян целый релейный компьютер с нативой поддержкой инструкций bf. И не врут.
  • Существует язык программирования Malbolge, который гораздо страшнее Brainfuck’а. Настолько, что первую работающую программу создали только через 2 года после выпуска интерпретатора Malbolge, да и то с помощью другой программы.
  • BrainFuck — жанр гуро. Так-то.

См. также

Ссылки


BrainFuck — это не баг, это фича!
Мета  DRM (SecuROM • StarForce) • Баг • Бот (Автоответчик) • Ботнет • Варез • Глюк • Гуй • Донат • Копирайт (By design) • Лог • Нюк • Рут (Не работай под рутом) • Спортивное программирование
Фичи  12309 • BSOD • Cookies • Embrace, extend and extinguish • FL Studio • Sheep.exe • Winlogon.exe • Бубен • Защита от дурака • Костыль • Машинный перевод • Пасхальные яйца • Свистелки и перделки • См. рис. 1 • Съешь ещё этих мягких французских булок • Таблэтка
Вредоносное  BonziBuddy • MediaGet • Винлок • Звонилка • Китайские пингвины • Пиксель смерти • Троян • Червь Морриса
Компании  1С • Apple • Denuvo • Google • Microsoft • SAP • Яндекс
Движения  8-bit • Open source (Красноглазики • Линуксоиды) • Вирусная сцена • Даунгрейд • Демосцена • Моддинг
Офис  3DS MAX • GIMP • GNU Emacs • Movie Maker • MS Paint • OpenOffice • PowerPoint • vi • Word • Блокнот • Фотошоп
ОС  Android • BSD • DOS • MenuetOS • ReactOS • Windows (Phone 7 • Phone 8 • Seven • Vista) / Маздай • Линукс • Русская ОС • Фантом ОС
Браузеры  Internet Explorer • Opera • Тормозилла (Огнелис • Lolifox) • Хром
Интернет  Flash • I2P • Low Orbit Ion Cannon • Tor • Tunatic • Чат−клиенты (Miranda • QIP • Skype • Аська • Жаббер)
Разработка  BrainFuck • C • C++ • Java • Haskell • Ассемблер
Люди  LovinGOD • Балмер • Гейтс • Генерал Фейлор • Джобс • Митник • Поттеринг • де Раадт • Спольски • Столлман • Торвальдс • Чернов • Шахиджанян
Костыли  Cygwin • PunkBuster • T9 • Wine • Wishmaster • Антивирусы • Хакинтош
Команды  ^H • ^W • Alt+F4 • Ctrl+Alt+Del • man • /me • /quit • rm -rf

w:Brainfuck en.w:Brainfuck ae:Brainfuck