BRAINFUCK
(aka БРЕЙНФАК, aka BF, aka БФ, aka МОЗГОЁ#КА)
Здравствуйте! (если вы никогда не связывались с программированием, то можете покинуть этот сайт, потому что вы все равно в ряд ли что-то тут поймете :D)
brainFAQ:
А почему у вас оформление хромает?
Что? Оформление? Хромает? Да вы что? Вы просто слепой или ничего не понимаете в оформлении. Оно что надо! (еще раз настоятельно рекомендую покинуть сайт, если вы не шарите!)
Это сайт-прикол?
Нет. х_х
А что такое брейнфак?
Епт! Я вам, что, энциклопедический словарь?! Откройте википедию и почитайте!
Я почитал о брейнфаке в википедии, но ничего не понял..
Вы дебил.. х_х Вы точно читали то, что я писал в скобочках немного выше? Закройте уже браузер и идите спать!
В википедии написано, что на брейнфаке нормальные люди ничего не пишут. К чему тогда этот сайт?
Ну вот и валите с него, раз не хотите оказаться в числе "НЕнормальных" людей, которые все пишут на брейнфаке. Я его создал отнюдь не только ради вас, а для того чтобы заинтересовать в БФ тех, кто думает что программы можно создавать только перетаскиванием мышью компонентов в дельфи. Возможно, читателей страниц этого сайта даже "затянет" в программирование на БФ: все зависит от их отношения к необычным вещам и разносторонности логики и мышления.
Если я не шарю в программировании, можно мне все же почитать сайт, если я буду помалкивать?
Разумеется! ^^ Читайте наздоровье, только не нае#ните себе мозг за чтением столь увлекательной бредятины. (:

Итак. Сайт посвящен языку программирования brainfuck. Перевести, я думаю, каждый сам сможет. Если вы читали об этом языке в википедии, то, наверняка, уже догадались, почему он так назван. х_х Если же нет, то я, пожалуй, покажу маленький кусочек кода, выводящий в stdout строку "Hello, world!":

Код:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

Этот код выглядит устрашающим, потому что вы можете наблюдать в нем только 7 знаков: < > + - [ ] .
В общем-то это и еще один символ - , - и есть весь арсенал языка(1 знак = 1 команда), но стоит только разобраться и все кажется простым, как дважды-два! Помочь вам это сделать я и попробую сейчас :D
В общем суть языка для понятности можно выразить описанием доски с рядом ячеек, каждая из которых хранит в себе число. Ячеек оооочень много, поэтому доску будем считать бесконечно длинной. Конца у нее нет, и начала - тоже, а точнее: ее каонец - и есть ее начало, то есть она кольцевая, но это сейчас нам знать не обязательно. Выполнение программы на БФ начинается с некоторой ячейки(ее принято считать n-ной, потому что ее номер совершенно не важен: он может быть равен как одному, так и тысяче). На самом то деле это нулевая ячейка, но это, опять же, не важно. Итак, в начале программы каретка стоит на ячейке n. Команда < перемещает каретку влево, т.е. после ее применения каретка будет находиться на ячейке (n-1). По аналогии, > - перемещение каретки вправо, т.е. она будет стоять на ячейке (n+1). Принцип понятен? Идем дальше.
Все ячейки изначально заполнены нулем. Команды - и + уменьшают/увеличивают значение текущей(т.е. той, на которой стоит каретка) ячейки на единицу.
Теперь поговорим о работе с консолью. Простейшие операции: ввод данных из stdin и вывод в stdout - предусмотрены в брейнфаке. Это команды . и ,. Точка выводит в stdin один символ, код которого записан в текущей ячейке, а запятая - наоборот: читает один символ с клавиатуры и записывает его код в текущую ячейку. Ну вот. Все проще, чем вы думали. Осталось разобрать цикл. Цикл в БФ - это просто последовательность команд между знаками [ и ](с учетом вложенности, конечно), которая выполняется, пока значение текущей ячейки не станет равным нулю. Выполнение проходит с начала и до конца(слева-направо) и ЕСЛИ число в текущей ячейке НЕ равно нулю, то выполнение повторяется по новой, но (ВНИМАНИЕ) ЕСЛИ число в текущей ячейке было равно нулю еще до начала цикла, то он НЕ выполняется.
Если вы уже имели дело с программированием на других языках, вероятно появился вопрос "А как же ветвление?". Увы, но IF-THEN-ELSE в БФ не предусмотрен. Но вспомните про то самое замечательное свойство цикла не выполняться, если значение равно нулю! Именно оно поможет нам сконструировать ветвление. Пусть у нас в стартовой ячейке записано число, которое может быть нулем или любым другим числом больше нуля:

Код:
>[-]+<[ команды, которые выполнятся, если в ячейке n число больше нуля >[-]<[-] ]

> [ команды, которые выполнятся, если в ячейке n число, равное нулю [-] ] <

Что насчет комментариев? Вообще в БФ комментами считаются все символы кроме < > + - [ ] , . Но существуют такие компиляторы и интерпретаторы, в которых предусмотрены префиксы комментариев, например BFDev(скачать его вы можете на странице загрузок).

Даунлоадс (тут можно скачать некоторые средства для разработки на брейнфаке)
Трюки мозготрахера (здесь вы найдете парочку интересных фишек, которые, возможно, помогут вам в написании простеньких программок)

Сайт долго не обновлялся по той причине, что автор тупо забыл про него %) но теперь, благодаря некоторым чилавегам, которые написали ему на старое мыло, на которое он случайно заглянул, информация на сайте слегка пополнилась, исправились некоторые ошибки а также кое-что новое появилось в разделе загрузок. Имена этих товарищей, благодаря которым я вернулся в мозготрах, называть не обязательно, ибо они и так знают, что я говорю о них. Так или иначе, спасибо вам большое, друзья! ;)
Копирайт (ц) nitnatsnok 2009-2010
Free Web Hosting