<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=BrainFuck</id>
	<title>BrainFuck - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://t8.lbstr.eu/index.php?action=history&amp;feed=atom&amp;title=BrainFuck"/>
	<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=BrainFuck&amp;action=history"/>
	<updated>2026-11-03T09:48:15Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://t8.lbstr.eu/index.php?title=BrainFuck&amp;diff=907&amp;oldid=prev</id>
		<title>127.0.0.1: ссыль сдохла</title>
		<link rel="alternate" type="text/html" href="https://t8.lbstr.eu/index.php?title=BrainFuck&amp;diff=907&amp;oldid=prev"/>
		<updated>2021-01-09T10:21:50Z</updated>

		<summary type="html">&lt;p&gt;ссыль сдохла&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{moar|разных эзотерических символов и слов}}&lt;br /&gt;
&lt;br /&gt;
{{Q|In Soviet Russia brain fucks YOU|na}}&lt;br /&gt;
&lt;br /&gt;
{{borq|&amp;lt;ssd.meister&amp;gt; Когда я сказал студентам принести лабу по алгоритмизации на любом языке программирования, я не подозревал, что на потоке найдётся мудак, который напишет её на.. BRAINFUCK&amp;#039;е!|360086}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BrainFuck&amp;#039;&amp;#039;&amp;#039; (не путать с [[Mindfuck]]) — один из эзотерических языков программирования, язык-головоломка. Тем не менее, на нём вполне успешно пишут программы. Целью его создателя был [[:w:Полнота по Тьюрингу|тьюринг-полный]] язык с компилятором минимального размера.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
{|&lt;br /&gt;
 !Command&lt;br /&gt;
 !Description&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Move the pointer to the right&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Move the pointer to the left&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Increment the memory cell under the pointer&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Decrement the memory cell under the pointer&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Output the character signified by the cell at the pointer&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Input a character and store it in the cell at the pointer&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Jump past the matching &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt; if the cell under the pointer is 0&lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
 |Jump back to the matching &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt;&lt;br /&gt;
 |}&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
Синтаксис брейнфака состоит из команд сдвига исполнительной каретки влево-вправо, уменьшения-увеличения текущего значения на единицу, чтения-записи и организации while-цикла. Всего — восемь команд.&lt;br /&gt;
&lt;br /&gt;
== Хелловорлд ==&lt;br /&gt;
Хелловорлд на брейнфаке:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;--[+++++++&amp;lt;----&amp;gt;&amp;gt;--&amp;gt;+&amp;gt;+&amp;gt;+&amp;lt;&amp;lt;&amp;lt;&amp;lt;]&lt;br /&gt;
 &amp;lt;.&amp;gt;++++[-&amp;lt;++++&amp;lt;++&amp;gt;&amp;gt;&amp;gt;-&amp;gt;--&amp;lt;&amp;lt;]&amp;gt;&amp;gt;-.&amp;gt;--..&amp;gt;+.&amp;lt;&amp;lt;&amp;lt;.&amp;lt;&amp;lt;-.&amp;gt;&amp;gt;+&amp;gt;-&amp;gt;&amp;gt;.+++[.&amp;lt;]&amp;lt;&amp;lt;++.&lt;br /&gt;
&lt;br /&gt;
Бессмысленный набор символов становится чуть более понятным после ознакомления с коротким описанием синтаксиса[[:en.w:Brainfuck#Commands| здесь]] или [[:w:Brainfuck | здесь]]. Программы пишутся достаточно легко, но недостаток выразительных средств даёт о себе знать.&lt;br /&gt;
&lt;br /&gt;
== Обфускация ==&lt;br /&gt;
В действительности те, кто пишут программы на Brainfuck, специально игнорируют отступы и пишут все в одну строку, чтобы еще больше запутать исходный код программы и напугать непосвященных. Например, нечитабельный код:&lt;br /&gt;
&lt;br /&gt;
 ,&amp;gt;,&amp;gt;,&amp;lt;&amp;lt;[&amp;gt;+&amp;lt;[&amp;lt;+&amp;gt;-]].&amp;gt;.&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
можно разбить на отдельные инструкции и проставить табуляции в отдельных блоках:&lt;br /&gt;
&lt;br /&gt;
 ,&amp;gt;,&amp;gt;,&lt;br /&gt;
 &amp;lt;&amp;lt;&lt;br /&gt;
 [&lt;br /&gt;
 	&amp;gt;+&amp;lt;&lt;br /&gt;
 	[&lt;br /&gt;
 		&amp;lt;+&amp;gt;-&lt;br /&gt;
 	]&lt;br /&gt;
 ]&lt;br /&gt;
 .&amp;gt;.&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Согласитесь, из непонятного «шоыэтазанахуй», код становится вполне читабельным и доступным для понимания. А если учесть, что в Brainfuck используется только 8 символов-команд — можно еще комментариев налепить, в любой удобной для вас форме:&lt;br /&gt;
&lt;br /&gt;
 ,&amp;gt;,&amp;gt;,			// считать символ, перейти к следующей ячейке, считать следующий символ...&lt;br /&gt;
 &amp;lt;&amp;lt;			// вернуться на 2 ячейки назад&lt;br /&gt;
 [			// открыть цикл&lt;br /&gt;
 	&amp;gt;+&amp;lt;		// ползем вправо, увеличиваем тамошнюю ячейку на 1, возвращаемся обратно&lt;br /&gt;
 	[		// еще один цикл&lt;br /&gt;
 		&amp;lt;+&amp;gt;-	// влево плюс, обратно минус&lt;br /&gt;
 	]		// вернуться в начало цикла &amp;quot;еще один цикл&amp;quot;&lt;br /&gt;
 ]			// вернуться в начало цикла &amp;quot;открыть цикл&amp;quot;&lt;br /&gt;
 .&amp;gt;.&amp;gt;.			// вывод&lt;br /&gt;
&lt;br /&gt;
== Употребление ==&lt;br /&gt;
Как самый известный из [[:w:Эзотерические языки программирования|эзотерических языков программирования]], BrainFuck стал (нередко ошибочно, так как создавался для других целей, а для списка ниже есть примеры более целевых языков) синонимом&lt;br /&gt;
* Нечитаемости программ&lt;br /&gt;
* Неудобства или непродуманности синтаксиса&lt;br /&gt;
{{Цитата|[[Перл]] — это тот же brainfuck, только автор его, почему-то, воспринимает серьезно. Может, конечно, это он так издевается, и тащится от того, что мир подхватил его версию brainfuck и строчит на нем да фанатеет...|2=[http://www.linux.org.ru/jump-message.jsp?msgid=2068951&amp;amp;cid=2070791 ЛОР]}}&lt;br /&gt;
* Неудобства инструмента разработки&lt;br /&gt;
{{Цитата|— Нормальному программисту не важно на чем и под какую платформу писать...&amp;lt;br /&amp;gt;— Брейнфак под [[дос]].|2=[http://www.linux.org.ru/jump-message.jsp?msgid=2464082&amp;amp;cid=2469806 ЛОР]}}&lt;br /&gt;
* Мазохизма&lt;br /&gt;
{{Цитата|—...если вы настоящий мазохист-извращенец, если вам нравится преодолевать непреодолимое и выполнять невыполнимое, то ваш выбор — это BAT-скрипты.&amp;lt;br /&amp;gt;— С машиной Тьюринга (или с BrainFuck, что почти то же самое) не сравнить...|2=[http://90h.livejournal.com/23564.html?thread=84236 ЖЖ]}}&lt;br /&gt;
* Примера, чем чревато излишнее упрощение&lt;br /&gt;
{{Цитата|— В российских школах будут преподавать программирование на [[Delphi]] и [[C++]]Builder.&amp;lt;br /&amp;gt;— ...слава богу, хоть не [[лисп]]...&amp;lt;br /&amp;gt;— Надо вообще на COBOL&amp;#039;е или на FORTRAN&amp;#039;е учить. Хотя, самый простой, конечно Brainfuck.|2=[https://www.linux.org.ru/forum/talks/2475375?cid=2479868 ЛОР]}}&lt;br /&gt;
* Мозгокрутных логических задач, не имеющих практической ценности&lt;br /&gt;
{{Цитата|text=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;Brainfuck. Задача для детей дошкольного возраста. [[Забудьте всё, чему вас учили|Забудь то, чему тебя учили в школе]]. Детишки дошколята решают ее в среднем за 3 минуты.&lt;br /&gt;
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.&amp;lt;br /&amp;gt;&lt;br /&gt;
2581=? {{Spoiler|2. Ответ — это число замкнутых кружочков и овальчиков в начертании числа}}|source=[http://forum.bobr.by/viewtopic.php?f=1&amp;amp;t=568 forum.bobr.by]}}&lt;br /&gt;
* Насмешки при сравнении языков программирования&lt;br /&gt;
{{Цитата|— [[PHP|Пых-пых]] что-то достал, хочется чего-то нового, с большими возможностями... &lt;br /&gt;
…&amp;lt;br /&amp;gt;— Ну автору сабжа же нужно «что-то новое, с большими возможностями». Вот brainfuck ему как раз и подойдет. Утрамбует его моск немножко. Научиться яснее выражать свои мысли, и мы ему быстрее сможем помочь.|2=[http://www.linux.org.ru/jump-message.jsp?msgid=1844700&amp;amp;cid=1846185 ЛОР]}}&lt;br /&gt;
&lt;br /&gt;
== Кроме того ==&lt;br /&gt;
* Из-за практической бесполезности трансляторы брейнфака, байндинги для распространённых библиотек, модули для Apache и т. п. не получают распространения.&lt;br /&gt;
** Тем не менее, реально автоматически перекомпилировать содержимое [[C|нормального языка]] программирования в [[сабж]].&lt;br /&gt;
* Из-за простоты языка писать их сравнительно легко.&lt;br /&gt;
** Что делает написание подобных вещей полезным для тренировки и самоутверждения.&lt;br /&gt;
* Для настоящих ценителей имеются [http://esolangs.org/wiki/Dbfi реализации сабжа на сабже]. Они даже соревнуются в скорости исполнения, что особенно доставляет, учитывая стремящуюся к нулю практическую полезность языка.&lt;br /&gt;
* Существует ряд Brainfuck-based языков программирования, например, любители [[Терри Пратчетт]]а оценят язык [http://esoteric.voxelperfect.net/wiki/Ook Ook]&lt;br /&gt;
* Поговаривают, что для bf был спаян целый релейный компьютер с нативой поддержкой инструкций bf. [https://hackaday.io/project/18599-brainfuckpc-relay-computer И не врут.]&lt;br /&gt;
* Существует язык программирования [[:w:Malbolge|Malbolge]], который гораздо страшнее Brainfuck’а. Настолько, что первую работающую программу создали только через 2 года после выпуска интерпретатора Malbolge, да и то с помощью другой программы.&lt;br /&gt;
* BrainFuck — жанр [[гуро]]. Так-то.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
* [[Perl]]&lt;br /&gt;
* [[LISP]]&lt;br /&gt;
* [[Regexp]]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
* [http://arduino.ru/forum/programmirovanie/razrabotka-sketchei-na-yazyke-brainfuck Реализация BrainFuck для Ардуино. Мигание сетодиодом и прочие ардуинофенечки. Особые лулзы от некоторых комментов ардуиноводов.]&lt;br /&gt;
* [http://xcont.com/bf/ Интерпретатор языка программирования Brainfuck на JavaScript (v0.1)]&lt;br /&gt;
* [http://hashcode.ru/questions/121/есть-ли-практическая-польза-от-языка-brainfuck Есть ли практическая польза от языка Brainfuck?]&lt;br /&gt;
* [http://rsdn.ru/article/philosophy/languages.xml Годная статья про эзотерические языки программирования — тысячи их и покоширней BrainFuck&amp;#039;а! Тут же железная Brainfuck-машина.]&lt;br /&gt;
* [[:en.w:Ivory tower|Ivory tower]]&lt;br /&gt;
* [http://esoteric.sange.fi/brainfuck/bf-source/prog/ Всякие сырцы на BrainFuck&amp;#039;ке.]&lt;br /&gt;
* [http://www.google.ru/#q=quine+brainfuck Доска почета адептов BrainFuck&amp;#039;а]&lt;br /&gt;
* [http://habrahabr.ru/sandbox/32031/ Как создать компилятор BrainFuck с блэкджек…^W с оптимизацией и кроссплатформенностью]&lt;br /&gt;
* [https://geektimes.ru/post/297007/ Интерпретатор Brainfuck на Arduino с экраном и кнопками]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Педивикия|[[:w:Brainfuck|Brainfuck]]}}&amp;lt;!-- ?! --&amp;gt;&lt;br /&gt;
{{Языки программирования}}&lt;br /&gt;
{{Software}}&lt;br /&gt;
&lt;br /&gt;
[[w:Brainfuck]]&lt;br /&gt;
[[en.w:Brainfuck]]&lt;br /&gt;
[[ae:Brainfuck]]&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>