Как стать автором
Обновить

Комментарии 41

Невероятно. Осталось только написать на brainfuck интерпретатор java и запустить в нем linux.
И ник у Вас такой… подходящий!
Мне кажется, теперь самое время переходить к реализации Whitespace.
Яву не потяну. Максимум Forth. Осталось решить, он на батнике будет реализован или на Brainfuck.
Эмм, тупанул. Я имел в виду javascript и недавно пробегавший здесь эмулятор linux на нём ^_^
Вряд ли получится. Эмулятор Linux на JS использует типизированные массивы и основанные на них хитрые манипуляции с памятью — вряд ли это возможно сделать с помощью bat-файлов.
Большая беда здесь будет не реализация, а скорость работы. Батники выполняются мучительно долго независимо от производительности процессора. Пример, приведенный в статье, у меня выполнялся 76 сек на i7-2600. Результата работы эмулятора мы рискуем вовсе не дождаться.
Стоп. А разве этот же пост не публиковался утром?
угу, только он был не в песочнице и с предваряющим текстом, что автор не против получить инвайт.
видимо попросили оформить правильно, чтобы посредник не получал «лишние» инвайты.
«Посредник» третий в рейтинге хабралюдей, ему лишние инвайты ни к чему, своих хватает. А теперь его забанили на месяц. Не справедливо я считаю
Согласен, на мой взгляд, слишком жесткое решение.
А я ему даже завидую немного — теперь спокойно можно отдохнуть от Хабра!
В результате k06a, выложивший мою статью был забанен на месяц.
Он просил передать, чтобы не повторяли его ошибок.
А за что? За то что выложил статью из песочницы?
Статья с первого раза в песочницу даже не прошла. Я попросил дать рецензию. Благодаря его рецензии я переделал статью. И k06a предложил ее опубликовать. Я на свою больную голову согласился. В результате получилось, что получилось.
Просто, чего спрашиваю. Мой коллега писал статью в песочницу по тестированию ифон приложений, но инвайт так и не получил. Я вот на днях собирался её дополнить слегка и опубликовать, не пропадать же ценной инфе, за одно может и инвайт ему пробью. Или мне тоже бан за это грозит?
Так это от имени другого пользователя Хабра. А от имени человека сидящего за соседним столом, но не имеющего аккаунта?
Вот и еще одна реализация brainfuck. Хотя brainfuck на brainfuck менее чем в 512 байт — это наверное все же круче.
Так написание интерпретатора brainfuck на каком-либо языке — уже классика, как Hello world.
я всегда считал, что язык бат-файлов это брейнфак в комуфляже
Немного ошибочное утверждение. Доказано, что Brainfuck обладает полнотой по Тьюрингу, т.е. на нем можно решить любую вычислимую функцию. А вот в полноте языка бат-файлов я сомневаюсь.
Ну, если на bat-файлах можно реализовать brainfuck (что мы тут видим), а на brainfuck решить любую вычислимую функцию, то из этого по законам формальной логики однозначно следует, что как минимум через этот шаг на bat-файлах можно решить любую вычислимую функцию. А то и попрямее…
напишу на Bash для разминки мозгов
> Из-за того, что символы "" используются для перенаправления ввода/вывода использовать их не представляется возможным.
Хорошая вещь хелп. Используйте "^".

> Напрямую символ (подстроку) вырезать не удастся.
Да ладно.

setlocal ENABLEDELAYEDEXPANSION

set string=12345
set index=3
set char=

(
set char=!string:~%index%,1!
)

echo char=%char%

> Работает все очень медленно независимо от производительности компьютера. Microsoft позаботилась, чтобы владельцы медленных компьютеров не завидовали владельцам быстрых.
Еще бы, вы ж на каждый символ новый процесс создаете. Но виноват в этом, понятно, 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 не выпилит саму возможность их использования.

Да и топик называется «Ненормальное программирование». Что означает, по моему мнению, что здесь приветствуется вырезание гланд через левый мизинец правой ноги с попутным выворачиванием мозгов наизнанку. Поэтому спор об целесообразности примененного инструмента не продуктивен. Опять же по моему мнению.
Согласен, спор — совершенно непродуктивен. Особенно потому, что я и не спорил.
///и не допилит хелпы и тулзы для быстрого и удобного написания на своих скриптовых бейсиках.
упс, теперь я таки знаю про то, что такое есть этот PowerShell.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Не слабо, но не интересно. Ибо PowerShell — вполне себе нормальный язык программирования.
Тогда это будет тема не для блога «ненормальное программирование». А для блога посвященном повершеллу.

Я считаю, что все, реализованное на батниках сложней запуска двух идущих друг за другом программ, уже ненормально.
Зачем использовать это некрасивое слово rem?
rem Набор выводимых символов

Так смотрится куда красивее
:: Набор выводимых символов
Пару раз я попадал на ситуацию когда :: примененные в качестве комментария приводили к непредсказуемому результату. Здесь тоже рекомендуются воздерживаться от их применения.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации