Комментарии 41
Невероятно. Осталось только написать на brainfuck интерпретатор java и запустить в нем linux.
И ник у Вас такой… подходящий!
Мне кажется, теперь самое время переходить к реализации Whitespace.
Яву не потяну. Максимум Forth. Осталось решить, он на батнике будет реализован или на Brainfuck.
Эмм, тупанул. Я имел в виду javascript и недавно пробегавший здесь эмулятор linux на нём ^_^
Вряд ли получится. Эмулятор Linux на JS использует типизированные массивы и основанные на них хитрые манипуляции с памятью — вряд ли это возможно сделать с помощью bat-файлов.
Стоп. А разве этот же пост не публиковался утром?
угу, только он был не в песочнице и с предваряющим текстом, что автор не против получить инвайт.
видимо попросили оформить правильно, чтобы посредник не получал «лишние» инвайты.
«Посредник» третий в рейтинге хабралюдей, ему лишние инвайты ни к чему, своих хватает. А теперь его забанили на месяц. Не справедливо я считаю
В результате k06a, выложивший мою статью был забанен на месяц.
Он просил передать, чтобы не повторяли его ошибок.
Он просил передать, чтобы не повторяли его ошибок.
А за что? За то что выложил статью из песочницы?
Статья с первого раза в песочницу даже не прошла. Я попросил дать рецензию. Благодаря его рецензии я переделал статью. И k06a предложил ее опубликовать. Я на свою больную голову согласился. В результате получилось, что получилось.
Просто, чего спрашиваю. Мой коллега писал статью в песочницу по тестированию ифон приложений, но инвайт так и не получил. Я вот на днях собирался её дополнить слегка и опубликовать, не пропадать же ценной инфе, за одно может и инвайт ему пробью. Или мне тоже бан за это грозит?
Опубликовал чужой пост — потерял аккаунт
QA: Можно-ли публикавать статью от имени другого пользователя Хабра?
Вот и еще одна реализация brainfuck. Хотя brainfuck на brainfuck менее чем в 512 байт — это наверное все же круче.
Так написание интерпретатора brainfuck на каком-либо языке — уже классика, как Hello world.
я всегда считал, что язык бат-файлов это брейнфак в комуфляже
Немного ошибочное утверждение. Доказано, что Brainfuck обладает полнотой по Тьюрингу, т.е. на нем можно решить любую вычислимую функцию. А вот в полноте языка бат-файлов я сомневаюсь.
напишу на Bash для разминки мозгов
На Bash уже есть http://habrahabr.ru/blogs/crazydev/112989/
> Из-за того, что символы "" используются для перенаправления ввода/вывода использовать их не представляется возможным.
Хорошая вещь хелп. Используйте "^".
> Напрямую символ (подстроку) вырезать не удастся.
Да ладно.
setlocal ENABLEDELAYEDEXPANSION
set string=12345
set index=3
set char=
(
set char=!string:~%index%,1!
)
echo char=%char%
> Работает все очень медленно независимо от производительности компьютера. Microsoft позаботилась, чтобы владельцы медленных компьютеров не завидовали владельцам быстрых.
Еще бы, вы ж на каждый символ новый процесс создаете. Но виноват в этом, понятно, Microsoft.
Хорошая вещь хелп. Используйте "^".
> Напрямую символ (подстроку) вырезать не удастся.
Да ладно.
setlocal ENABLEDELAYEDEXPANSION
set string=12345
set index=3
set char=
(
set char=!string:~%index%,1!
)
echo char=%char%
> Работает все очень медленно независимо от производительности компьютера. Microsoft позаботилась, чтобы владельцы медленных компьютеров не завидовали владельцам быстрых.
Еще бы, вы ж на каждый символ новый процесс создаете. Но виноват в этом, понятно, Microsoft.
Парсер тоже хелп не читал.
По первому пункту. Чтение файла программы происходит в строке
попробуйте ему скормить что то примерно с таким с содержимым ">>-<<>" Причем как с экранирующим символом, как без оного.
Можно, конечно изменить код на такой SET bf_prog=!bf_prog!"%%I". Тогда текст программы считывается, но начинают вылезать ошибки в других местах. Проще изменить словарь языка.
По второму пункту. В Вашем варианте выглядит все красивей и работает шустрей.
В моем варианте тестовый пример выполнялся с 10:18:11,59 по 10:19:45,20 — 93 сек
Переделанный вариант — с 10:19:45,21 по 10:21:01,66 — 75 сек
Запустив тест на динозавре вообще получил цифры порядка 6 и 4 минут.
За подсказку спасибо. Код переделал.
А Microsoft все равно виноват, что работает очень медленно. Как уже было показано, падение скорости из-за создания новых процессов не такое уж и катастрофическое.
FOR /F "eol=c delims=*" %%I IN (%1) DO SET bf_prog=!bf_prog!%%I
попробуйте ему скормить что то примерно с таким с содержимым ">>-<<>" Причем как с экранирующим символом, как без оного.
Можно, конечно изменить код на такой SET bf_prog=!bf_prog!"%%I". Тогда текст программы считывается, но начинают вылезать ошибки в других местах. Проще изменить словарь языка.
По второму пункту. В Вашем варианте выглядит все красивей и работает шустрей.
В моем варианте тестовый пример выполнялся с 10:18:11,59 по 10:19:45,20 — 93 сек
Переделанный вариант — с 10:19:45,21 по 10:21:01,66 — 75 сек
Запустив тест на динозавре вообще получил цифры порядка 6 и 4 минут.
За подсказку спасибо. Код переделал.
А Microsoft все равно виноват, что работает очень медленно. Как уже было показано, падение скорости из-за создания новых процессов не такое уж и катастрофическое.
Провел небольшое исследование по поводу падения скорости работы от простого вызова call :metka. В шоке. Результаты простого теста поместил в конец статьи.
Я надеюсь вы уже пришли к выводу, что батники это, чем сегодня просто не нужно пользоваться?
А они разве когда нибудь пользовались в большей мере, чем для того чтобы просто запустить пару программ на исполнение?
Иначе бы не было бы таких проектов как 4DOS или KiXtart.
Иначе бы сама MS не забросила бы его (интерпретатор командных файлов cmd) развитие еще в версии w2k. Как тогда написали вторую версию обработки команд, так с тех пор нет больше развития. С другой стороны, MS с 1998 пытаются сделать ему замену в виде всяческих sript. Доросли уже до PowerShell. Но батники будут жить до тех пор, пока MS не выпилит саму возможность их использования.
Да и топик называется «Ненормальное программирование». Что означает, по моему мнению, что здесь приветствуется вырезание гланд через левый мизинец правой ноги с попутным выворачиванием мозгов наизнанку. Поэтому спор об целесообразности примененного инструмента не продуктивен. Опять же по моему мнению.
Иначе бы не было бы таких проектов как 4DOS или KiXtart.
Иначе бы сама MS не забросила бы его (интерпретатор командных файлов cmd) развитие еще в версии w2k. Как тогда написали вторую версию обработки команд, так с тех пор нет больше развития. С другой стороны, MS с 1998 пытаются сделать ему замену в виде всяческих sript. Доросли уже до PowerShell. Но батники будут жить до тех пор, пока MS не выпилит саму возможность их использования.
Да и топик называется «Ненормальное программирование». Что означает, по моему мнению, что здесь приветствуется вырезание гланд через левый мизинец правой ноги с попутным выворачиванием мозгов наизнанку. Поэтому спор об целесообразности примененного инструмента не продуктивен. Опять же по моему мнению.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Не слабо, но не интересно. Ибо PowerShell — вполне себе нормальный язык программирования.
Тогда это будет тема не для блога «ненормальное программирование». А для блога посвященном повершеллу.
Я считаю, что все, реализованное на батниках сложней запуска двух идущих друг за другом программ, уже ненормально.
Тогда это будет тема не для блога «ненормальное программирование». А для блога посвященном повершеллу.
Я считаю, что все, реализованное на батниках сложней запуска двух идущих друг за другом программ, уже ненормально.
Зачем использовать это некрасивое слово rem?
Так смотрится куда красивее
rem Набор выводимых символов
Так смотрится куда красивее
:: Набор выводимых символов
Пару раз я попадал на ситуацию когда :: примененные в качестве комментария приводили к непредсказуемому результату. Здесь тоже рекомендуются воздерживаться от их применения.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Интерпретатор Brainfuck на BAT