Знакомьтесь: язык программирования BrainFuck - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: firsacho, Woitek, 4erveR, Unaited, Renny, ivan210303mitenkov


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 212»
Форум » Свободная зона » Обычные темы » Знакомьтесь: язык программирования BrainFuck (да простят меня админы за название темы)
Знакомьтесь: язык программирования BrainFuck
Lex-Serest
Дата: ЧТ, 06.01.2011, 22:57:25 | Сообщение # 1
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
Для начала или вводный курс в эзотерический язык

Brainfuck придуман Урбаном Мюллером в 1993 году, в основном для забавы. Уникальный, вполне себе интересный Тьюринг-полный язык программирования с размером компилятора в 240 байт! В нём используется всего лишь 8 команд, каждая из них записывается одним символом. Программа на языке Brainfuck представляет собой последовательность этих самых команд.

То что может выполнять этот язык:
BrainFuck Developer - с продвинутыми функциями, там внизу ссылка есть на файл
http://brainfuck.progopedia.ru/ - выполнение программ в вашем браузере

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

Список всех команд языка

> перейти к следующей ячейке
< перейти к предыдущей ячейке
+ инкремент значения в текущей ячейке на 1
- декремент значение в текущей ячейке на 1
. напечатать значение из текущей ячейки
, ввести извне значение и сохранить в текущей ячейке
[ если значение текущей ячейки равно 0, перейти вперёд по тексту программы на ячейку, следующую за соответствующей закрывающей ] (с учётом вложенности)
] если значение текущей ячейки не равно 0, перейти назад по тексту программы на ячейку, следующую за соответствующей открывающей [ (с учётом вложенности)

Изначально задумывалось число ячеек в 30 тыс., каждая размером в байт. По умолчанию указатель находится в левой ячейке (ячейка 0); значения всех ячеек равны 0. Ввод/вывод значений происходит по таблице ASCII, точнее по числовому смещению в этой таблице. Например 32 знака "+" и точка — выведут на экран пробел в нулевой позиции, последующий знак ">" переведёт нас к следующей ячейке. Если теперь ввести 72 знака "+" и точку — выведется буква «H». Конструкция +++[.-] по сути цикл, вносим в ячейку значение 3, выводим на экран значение из ячейки и уменьшаем его, соответственно получится вывод символов с кодами 3, 2 и 1.

Параметры языка могут отличаться от разновидностей!

«Hello World!»

+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.+++++++++++++++++
++++++++++++.+++++++..+++.---------------- ---
---------------------------------------------
---------------.+++++++++++++++++++++++++++++
++++++++++++++++++++++++++.++++++++++++++ ++++
++++++.+++.------.--------.------------------
---------------------------------------------
----.-----------------------.

Собст венно 72 вывод «H», в этой же ячейке прибавляем ещё 29 вывод «e» и т.д., манипулируя прибавлением/убавлением значения в одной единственной ячейке. Значения не пишутся в ячейку, а выводятся на лету.

Прокачанный «Hello World!»

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

Так сказать хрестоматийный пример. Основан на предварительной подготовке 4 ячеек со значениями 70, 100, 30 и 10, чтобы проще было прибавлять или убавлять. Блок ++++++++++[>+++++++>++++++++++>+++>+<<<<-] 10 раз выполнит операции в цикле — прибавить 7 в первой ячейке, 10 во второй, 3 в третьей и 1 в четвёртой, после чего вернуться к ячейке 0 и уменьшить её. В последующих действиях можно уже разобраться и так.

Стырено с Хабра


:3
 
Lex-Serest
Дата: ЧТ, 06.01.2011, 23:06:16 | Сообщение # 2
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
Вот написал на нем простой калькулятор:

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

Программа сделана таким образом, что если первый символ будет «0» то программа выведет результат сложения, если ввести какое либо другое число, то выведет разность чисел. Например введем 163, «1» – значит будет разность, то есть 6-3, и выведет 3
если введем 063 то выведет 9

Не вводим числа сумма которых больше 9, так как произойдет переход на следующий символ находящейся после 9, либо в этом случае используем BrainFuck Developer и в нем смотрим на память

Кого заинтересовало могу выложить статью про разбор моего калькулятора (статья моя и с картинками :) )


:3
 
killeroi
Дата: ЧТ, 06.01.2011, 23:39:14 | Сообщение # 3
killeroi
Pinkie Pie
Группа: Хранители порядка
Сообщений: 1846
Репутация: 88
Статус: Offline
Знакомтесь:sonic пользователь который имеет желания расширять свои познания в языках программирования

Как в старые добрые
 
Lex-Serest
Дата: ЧТ, 06.01.2011, 23:41:24 | Сообщение # 4
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
этот язык программирования фактически для мазохистов либо для тех у кого много свободного времени)

:3
 
killeroi
Дата: ЧТ, 06.01.2011, 23:43:52 | Сообщение # 5
killeroi
Pinkie Pie
Группа: Хранители порядка
Сообщений: 1846
Репутация: 88
Статус: Offline
а не для мазохистов какой?

Как в старые добрые
 
Lex-Serest
Дата: ЧТ, 06.01.2011, 23:47:55 | Сообщение # 6
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
[WEC]SonicX, их много, начинают программировать обычно с basic и pascal

:3
 
firsacho
Дата: ПТ, 07.01.2011, 00:04:06 | Сообщение # 7
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3631
Репутация: 71
Статус: Offline
Quote (Lex-Serest)
«Hello World!»

+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++.+++++++++++++++++
++++++++++++.+++++++..+++.--------- ------- ---
---------------------------------------------
---------------.+++++++++++++++++++++++++++++
++++++++++++++++++++++++++.++++++++++++++ ++++
++++++.+++.------.--------.------------------
---------------------------------------------
----.-----------------------.

На хрен оно надо ИМХО... лучше вместо того чтобы сутками писать всякое УГ на этом языке, лучше заняться написанием какой-то действительно нужной проги на нормальном языке программирования.





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Lex-Serest
Дата: ПТ, 07.01.2011, 00:07:43 | Сообщение # 8
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
firsacho, я на нем программирую когда куда нибудь еду или на скучной паре, на смартфоне

Quote (firsacho)
всякое УГ на этом языке

этот язык развивает: логику и гибкость ума, один человек на нем написал мини морской бой (видимо ему вообще делать нечего)

Quote (firsacho)
нужной проги на нормальном языке программирования

мне лень :D


:3
 
killeroi
Дата: СБ, 08.01.2011, 00:38:38 | Сообщение # 9
killeroi
Pinkie Pie
Группа: Хранители порядка
Сообщений: 1846
Репутация: 88
Статус: Offline
Quote (Lex-Serest)
pascal

Увидев учебник начальных курсов pascal неподготовленный юзер может упасть в обморок :D

Добавлено (08.01.2011, 00:38)
---------------------------------------------
У меня пару вопросов по программе PHP Devel Studio 2.0 к firsacho. Как открыть файл по имени а не по пути размещения (они всех людей путь к папке worms 4 разный а надо чтобы открыл именно Worms 4.EXE) и как то же самое сделать с программой которой в событии при нажатии кнопки мыши на кнопку в окне открывался файл tweaks.xml то есть открыть файл tweaks.xml прогой notepad.exe при том что пути к ним неизвестны


Как в старые добрые
 
firsacho
Дата: СБ, 08.01.2011, 01:19:48 | Сообщение # 10
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3631
Репутация: 71
Статус: Offline
Quote (|WEC|SonicX)
У меня пару вопросов по программе PHP Devel Studio 2.0 к firsacho

я через нее написал лаунчер и больше не юзал пока, так что я в ней нуб.

Quote (|WEC|SonicX)
Как открыть файл по имени а не по пути размещения (они всех людей путь к папке worms 4 разный а надо чтобы открыл именно Worms 4.EXE)

Ну надо сделать чтобы пользователь указал адрес к проге наверное или кинул твою прогу в папку с червями. Еще при установке червей адрес установки забивается куда-то в реестр, его использует стандартный лаунчер червей для запускается.

Quote (|WEC|SonicX)
открыть файл tweaks.xml прогой notepad.exe при том что пути к ним неизвестны

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

Вобщем спрашивай на форуме PHP Devel Studio





Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Lex-Serest
Дата: СБ, 08.01.2011, 02:27:45 | Сообщение # 11
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
php не для создания программ, пхп обычно используется для вэб программирования следовательно ты на нем не напишешь полноценных программ для винды
используй visual basic очень простая среда разработки и язык программирования очень прост

3.Ы. может тему о программировании создать?

З.Ы. третий час ночи поэтому могу нести щас всякий бред, надеюсь завтра над этим сообщением я ржать не буду


:3
 
killeroi
Дата: СБ, 08.01.2011, 02:29:55 | Сообщение # 12
killeroi
Pinkie Pie
Группа: Хранители порядка
Сообщений: 1846
Репутация: 88
Статус: Offline
ну а как выглядит твой код
Я пробовал
Run("ps_open_file(WORMS 4 MAYHEM.EXE)", true);


Как в старые добрые
 
Lex-Serest
Дата: СБ, 08.01.2011, 02:37:44 | Сообщение # 13
Lex-Serest
Onecake-man
Группа: Админы
Сообщений: 828
Репутация: 83
Статус: Offline
я на бэйсике программировал всего 2 раза
потом понял его ущербность, откуда мне знать

минута гугления: http://forum.codenet.ru/showthread.php?t=7695


:3
 
killeroi
Дата: СБ, 08.01.2011, 02:59:27 | Сообщение # 14
killeroi
Pinkie Pie
Группа: Хранители порядка
Сообщений: 1846
Репутация: 88
Статус: Offline
Firsacho короче дашь мне свой код я посмотрю его и сделаю для себя выводы чем щас в 3 часа ночи ломать мозг себе и другим

Добавлено (08.01.2011, 02:59)
---------------------------------------------
Функция ps_open_file(переменная)
При том переменная может содержать psdoc или имя файла открываемого для проги
Но сколько я не мучил мозг возвращаемое значение всегда false


Как в старые добрые

Сообщение отредактировал [WEC]SonicX - СБ, 08.01.2011, 02:59:58
 
DrHitman27
Дата: СБ, 08.01.2011, 06:58:27 | Сообщение # 15
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
а разве в команде Run("ps_open_file(WORMS 4 MAYHEM.EXE)", true); WORMS 4 MAYHEM.EXE это не string должен быть? тоесть в ковычках его записать надо, а то его как переменную воспринимает возможно. Ну и вобще запись Run("ps_open_file(WORMS 4 MAYHEM.EXE)", true); странная, хоть я и не знаю языка её смысл выполнить исполняемый файл "ps_open_file(WORMS 4 MAYHEM.EXE)", мне кажется надо так писать Run("WORMS 4 MAYHEM.EXE", true);

но как я и сказал, языка я не знаю. такчто могу ошибаться.


 
Форум » Свободная зона » Обычные темы » Знакомьтесь: язык программирования BrainFuck (да простят меня админы за название темы)
Страница 1 из 212»
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz