В эту статью нужно добавить как можно больше разных эзотерических символов и слов.Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи.«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 — жанр гуро. Так-то.См. такжеPerlLISPRegexpСсылкиРеализация BrainFuck для Ардуино. Мигание сетодиодом и прочие ардуинофенечки. Особые лулзы от некоторых комментов ардуиноводов.Интерпретатор языка программирования Brainfuck на JavaScript (v0.1)Есть ли практическая польза от языка Brainfuck?Годная статья про эзотерические языки программирования — тысячи их и покоширней BrainFuck'а! Тут же железная Brainfuck-машина.Ivory towerВсякие сырцы на BrainFuck'ке.Доска почета адептов BrainFuck'аКак создать компилятор BrainFuck с блэкджек…^W с оптимизацией и кроссплатформенностьюИнтерпретатор Brainfuck на Arduino с экраном и кнопкамиДанный текст был спасен из загнивающей Педивикии.Пруфлинк: Brainfuck.Любой программист без словаря поймёт, что такое BrainFuckЯзыки программирования
Промышленные: 1С • BAT • C# • C • C++ • Java • JavaScript (AJAX) • Pascal • Perl • PHP • Python • Ruby • ABAP • Ассемблер • Васик • Фортран
Эзотерические: BrainFuck • Erlang • Forth • Haskell • LISP (My other car) • Prolog • Tcl • TeXПрофессииБыдлокодер • Программист • Тестировщик • Хакер • Хеллоуворлдщик
Методы и стилиReverse Engineering • Анти-паттерн • Выстрелить себе в ногу • Грязный хак • Код (индусский) • Костыль • Метод научного тыка • Помолясь • Свистелки и перделкиПрочее++i + ++i • Deadline • %s • 640 килобайт • CMS • Dummy mode • ЕГГОГ • Foobar • God is real, unless explicitly declared as integer • GOTO • Ifconfig • KISS • RegExp • SICP • sql.ru • Xyzzy • Дискета • Инжалид дежице • КОИ-8 • Лог • Ман • Рекурсия • СУБД • Тест Тьюринга • Умение разбираться в чужом коде • Фаза Луны • Фатальный недостатокBrainFuck — это не баг, это фича!Мета
DRM (SecuROM • StarForce) • Баг • Бот (Автоответчик) • Ботнет • Варез • Глюк • Гуй • Донат • Копирайт (By design) • Лог • Нюк • Рут (Не работай под рутом) • Спортивное программированиеФичи12309 • BSOD • Cookies • Embrace, extend and extinguish • FL Studio • Sheep.exe • Winlogon.exe • Бубен • Защита от дурака • Костыль • Машинный перевод • Пасхальные яйца • Свистелки и перделки • См. рис. 1 • Съешь ещё этих мягких французских булок • ТаблэткаВредоносноеВинлок • Звонилка • Китайские пингвины • Пиксель смерти • Троян • Червь МоррисаКомпании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 • Опера • Тормозилла (Огнелис • 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