Знакомьтесь: язык программирования BrainFuck
|
|
Сообщений: 825
|
Опубликовано: 06.01.2011, 22:57:25
Для начала или вводный курс в эзотерический язык 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
|
|
|
|
Сообщений: 825
|
Опубликовано: 06.01.2011, 23:06:16
Вот написал на нем простой калькулятор: ,>++++++[<-------->-] ,>++++++[<-------->-] ,>++++++[<-------->-] <<[>>+>>+<<<<-] >[>+>>-<<<-] <<[>>+<<-]>> [>]> >>>++++++[<<<++++++++>>>-]<<<. Программа сделана таким образом, что если первый символ будет «0» то программа выведет результат сложения, если ввести какое либо другое число, то выведет разность чисел. Например введем 163, «1» – значит будет разность, то есть 6-3, и выведет 3 если введем 063 то выведет 9 Не вводим числа сумма которых больше 9, так как произойдет переход на следующий символ находящейся после 9, либо в этом случае используем BrainFuck Developer и в нем смотрим на память Кого заинтересовало могу выложить статью про разбор моего калькулятора (статья моя и с картинками :) )
:3
|
|
|
|
Сообщений: 1850
|
Опубликовано: 06.01.2011, 23:39:14
Знакомтесь:sonic пользователь который имеет желания расширять свои познания в языках программирования
Как в старые добрые
|
|
|
|
Сообщений: 825
|
Опубликовано: 06.01.2011, 23:41:24
этот язык программирования фактически для мазохистов либо для тех у кого много свободного времени)
:3
|
|
|
|
Сообщений: 1850
|
Опубликовано: 06.01.2011, 23:43:52
а не для мазохистов какой?
Как в старые добрые
|
|
|
|
Сообщений: 825
|
Опубликовано: 06.01.2011, 23:47:55
[WEC]SonicX, их много, начинают программировать обычно с basic и pascal
:3
|
|
|
|
Сообщений: 3813
|
Опубликовано: 07.01.2011, 00:04:06
Quote (Lex-Serest) «Hello World!» +++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++.+++++++++++++++++ ++++++++++++.+++++++..+++.--------- ------- --- --------------------------------------------- ---------------.+++++++++++++++++++++++++++++ ++++++++++++++++++++++++++.++++++++++++++ ++++ ++++++.+++.------.--------.------------------ --------------------------------------------- ----.-----------------------. На хрен оно надо ИМХО... лучше вместо того чтобы сутками писать всякое УГ на этом языке, лучше заняться написанием какой-то действительно нужной проги на нормальном языке программирования.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 825
|
Опубликовано: 07.01.2011, 00:07:43
firsacho, я на нем программирую когда куда нибудь еду или на скучной паре, на смартфоне Quote (firsacho) всякое УГ на этом языке этот язык развивает: логику и гибкость ума, один человек на нем написал мини морской бой (видимо ему вообще делать нечего) Quote (firsacho) нужной проги на нормальном языке программирования мне лень :D
:3
|
|
|
|
Сообщений: 1850
|
Опубликовано: 08.01.2011, 00:38:38
Увидев учебник начальных курсов pascal неподготовленный юзер может упасть в обморок :DДобавлено (08.01.2011, 00:38) --------------------------------------------- У меня пару вопросов по программе PHP Devel Studio 2.0 к firsacho. Как открыть файл по имени а не по пути размещения (они всех людей путь к папке worms 4 разный а надо чтобы открыл именно Worms 4.EXE) и как то же самое сделать с программой которой в событии при нажатии кнопки мыши на кнопку в окне открывался файл tweaks.xml то есть открыть файл tweaks.xml прогой notepad.exe при том что пути к ним неизвестны
Как в старые добрые
|
|
|
|
Сообщений: 3813
|
Опубликовано: 08.01.2011, 01:19:48
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)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 825
|
Опубликовано: 08.01.2011, 02:27:45
php не для создания программ, пхп обычно используется для вэб программирования следовательно ты на нем не напишешь полноценных программ для винды используй visual basic очень простая среда разработки и язык программирования очень прост 3.Ы. может тему о программировании создать? З.Ы. третий час ночи поэтому могу нести щас всякий бред, надеюсь завтра над этим сообщением я ржать не буду
:3
|
|
|
|
Сообщений: 1850
|
Опубликовано: 08.01.2011, 02:29:55
ну а как выглядит твой код Я пробовал Run("ps_open_file(WORMS 4 MAYHEM.EXE)", true);
Как в старые добрые
|
|
|
|
Сообщений: 825
|
Опубликовано: 08.01.2011, 02:37:44
я на бэйсике программировал всего 2 раза потом понял его ущербность, откуда мне знать минута гугления: http://forum.codenet.ru/showthread.php?t=7695
:3
|
|
|
|
Сообщений: 1850
|
Опубликовано: 08.01.2011, 02:59:27
Firsacho короче дашь мне свой код я посмотрю его и сделаю для себя выводы чем щас в 3 часа ночи ломать мозг себе и другим Добавлено (08.01.2011, 02:59) --------------------------------------------- Функция ps_open_file(переменная) При том переменная может содержать psdoc или имя файла открываемого для проги Но сколько я не мучил мозг возвращаемое значение всегда false
Как в старые добрые
Сообщение отредактировал [WEC]SonicX - СБ, 08.01.2011, 02:59:58
|
|
|
|
Сообщений: 2115
|
Опубликовано: 08.01.2011, 06:58:27
а разве в команде 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); но как я и сказал, языка я не знаю. такчто могу ошибаться.
|
|
|
|
Сообщений: 3813
|
Опубликовано: 08.01.2011, 11:56:29
Quote (Lex-Serest) php не для создания программ, пхп обычно используется для вэб программирования следовательно ты на нем не напишешь полноценных программ для винды используй visual basic очень простая среда разработки и язык программирования очень прост PHP Devel Studio - это проект интерплитатора языка PHP для написания приложений. Разумеется функции PHP дополнены http://develstudio.ru/ . Мне это показалось интересным, т.к. PHP мне известен лучше всего и влом изучать язык, ради пары небольших приложений) Но сразу при написании первой же проги заметился большой недостаток DevelStudio - остсутствие нормального справочника-учебника, содержащего все новые функции добавленные в язык и примеры их использования. Поэтому приходилось долго ковырять форум или писать методом тыка (прога подсказывает названия функций, но не объясняет их значение). Хотя может ща они уже и исправили этот недостаток. Quote (|WEC|SonicX) Firsacho короче дашь мне свой код я посмотрю его и сделаю для себя выводы чем щас в 3 часа ночи ломать мозг себе и другим Я тебе в другой раз как-нибудь могу исходный код кинуть, сейчас я не на своем компе, а мой на другом конце города.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|
Сообщений: 825
|
Опубликовано: 08.01.2011, 17:07:30
соник, кстати говоря, если хочешь получить исходный код Creating super weapon v2 запусти ее с параметром /i про это написано внутри инструкции в проге
:3
|
|
|
|
Сообщений: 1240
|
Опубликовано: 09.01.2011, 00:31:32
По поводу Brainfuck - одна из моих первых программ на C# была интерепретатором брейнфака) Даже попробовал сделать бой в памяти 2-х бегущих навстречу программ =) P.S. C# - один из последних изученных мною языков.. Присоединяюсь к Lex-у в их споре с firsacho по поводу необходимости таких явлений как брейнфак.
________________________ __|____|____|____|____|__ |____|____|____|____|____| __|___бицца головой___|__ |____|____|сюда|____|____| __|____|____|____|____|__ |____|____|____|____|____|
|
|
|
|
Сообщений: 1099
|
Опубликовано: 09.01.2011, 10:28:41
Взрослые дядьки спорят по поводу "нужен или нет нецензурный программный язык" :D
Сообщение отредактировал Drun - ВС, 09.01.2011, 10:29:34
|
|
|
|
Сообщений: 3813
|
Опубликовано: 09.01.2011, 14:11:52
А кто спорит, никто не спорит. Просто я считаю что это непрактичный язык и на него только время и силы уходят... Если хочется погрузить мозг лучше как Герыч писать искусственный интеллект или программировать физику воды) запар не меньше чем с калькулятором на Брейнфаке, но результат намного интереснее и более востребован.
Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005) Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
mod.worms.pro - мод Worms Renewation для Worms4
|
|
|
|