применение конечных автоматов

Тема в разделе "WASM.HEAP", создана пользователем Freya, 5 окт 2008.

  1. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Booster
    Я возразил лишь против поста 33. Спорить на тему оптимальности решения в общем случае я не собираюсь. Каждой задаче своё решение. Поэтому с радикальными утверждениями вида: "Серьёзное применение отсутствует", - я не соглашусь.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    l_inc
    Ну вот и ладненько, а я только сказал, что это решение не тянет на полноту, так как не решена проблема бесконечной памяти.
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Booster
    Да ладно. Проблема бесконечной памяти для развёрнутого цикла равносильна проблеме бесконечного времени исполнения программы для обычного цикла.
    Единственная разница в том, что в случае развёрнутого цикла программа упадёт самостоятельно, а в случае обычного её завершит пользователь (Завершить процесс/Reset).
    В любом случае любая программа пишется, принимая некоторые допущения. Для развёрнутого цикла с неизвестным количеством итераций это допущение - определённый заранее выделенный объём памяти. Впрочем, как, например, и для рекурсии с неопределённым количеством вложений: стэк-то тоже не бесконечный, хоть и резиновый по умолчанию.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    l_inc
    Мы тут не про рекурсию. Что в теории может помешать например пустому циклу выполняться бесконечно? Я кроме внешних факторов, которые от работы самого цикла не зависят, не вижу. А вот память по определению конечна, если только она не кольцевая.
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Booster
    Не. Это уже издевательство, а не аргументация. :) Бесконечно - это ж действительно бесконечно. Так что не будем скупиться на возможные варианты развития событий:
    1) Коррозия контактов платы ОЗУ.
    2) Падение метеорита.
    3) Поглощение планеты разрастающимся Солнцем.
    А на случай, если Вы возразите, что это типа внешние факторы... Ну так тогда ограничение памяти - это тоже внешний фактор по отношению к программе. Действительно, программа ж не виновата, что у незадачливого юзера видите ли памяти не хватает.
    Ограничение по времени - это никак не меньшая проблема, чем ограничение памяти.
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    l_inc
    Ладно, если сделать кольцевую память, то он будет работать вечно. Так что это действительно только проблема памяти.
     
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    l_inc
    #27 - весьма пугающий пример:) к тому же, я просил пример прослушки порта или, например, как быть с функами, где колво входных параметров заранее неопределено?
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    UbIvItS
    Вообще-то я предложил взглянуть на пост 27 не для того, чтобы Вас напугать, а чтобы эти вопросы исчезли. Судя по тому, что вопросы остались, пример Вы не разобрали. Так о чём можно дальше говорить, если Вы не слушаете?
    В двух словах итеративность и ветвления достигаются последовательным самокопированием кода в памяти и командами типа cmp, cmc, cdq, sbb и т.п. Т.о. команды перехода не являются необходимыми для удовлетворения условия полноты Тьюринга.
     
  9. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Развернуть прослушку порта?

    while(condition)
    {
    first
    if (!condition) break;
    second
    }
    сойдет?
     
  10. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    l_inc
    это не более чем оригинальный изврат - это никак не может быть признано заменой итерации/ветвления. лишнии операции записи в память, расход памяти можно уменьшить, конечно, засчёт затирания предыдущей итерации, но всё равно изврат. подобные вещи могут иметь место для разработки "умного кода", но для обычного применения - нет.
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    UbIvItS
    Нельзя. :) Т.к. это уже не будет считаться "разворотом цикла" и для этого понадобятся команды перехода.
    Изврат - не изврат, а вполне успешно опровергает фразу:
    Вы вообще не читаете! Пост 38!
     
  12. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    l_inc
    вы правы, но это даёт есчо больше веса выражению: "Это изврат":))) Бустер, верно сказал о расходе памяти и опровергнуть этот момент не выйдет. да, и сомнительно довольно, что прирост скорости будет:
    А. доп. время тратится на запись в память.
    Б. памяти не хватает и всё сбрасывается в жуткий своп.
    я всё - таки имел ввиду стат. развёртку цикла (во время компиляции).
    читаю:
    человек совершенно прав: "Если". теперь отметим ещё одну вещь - от цикла мы всё же не ушли: вместо нормального вызова кода по адресу мы юзаем извратное копирование кода, но по сути имеем другой вариант цикла:derisive:
     
  13. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    UbIvItS
    > цикл можно развернуть только при заведомо известном колве проходов;
    можно и при неизвестном.
    самый тяжелый случай - это цикл с выходом (выходами) по условию.
    пусть у нас имеется k условий (бум считать, что одно условие - один переход).
    тогда неразвернутый цикл состоит из k+1 переходов (+1 переход на огранизацию цикла).
    при разворте цикла на n итераций тело цикла будет состоять из k*n+1 переходов.
    в зависимости от кол-ва команд в теле цила и специфики самих переходов... гм, короче, в общем случае мы получаем ub.
     
  14. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    немного странно сам топик задан -- посмотрите на великое множество парсеров, валидаторов, интерпретаторов, лексеров, анализаторов, итд, все они так или иначе используют КА в явном или неявном виде.
     
  15. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    varnie
    сосо не использует. За что его люблю, ну.. не только за это конечно.
    ++:
    Легко найти ошибку в граммаре. И компиле и рантаймовую.
    Меньше полученый бинарь.
    Как минимум не медленее (полученый бинарь).
    Очень читабелен полученый C/C++ (еще ряд форматов) исходник.
    Исходники самого коко просты для понимания, дополнения, изменения.
     
  16. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    kaspersky
    каким именно образом? то, за что ратовал l_inc - просто иная реализация цикла и такое применять можно ввиду чудовищной безысходности:))) ага...... кстати, давай - ка определимся с термином "развёртка цикла". я имею в виду: код содежит столько повторов, сколько раз он используется.
    +++++++++++++++++++
    и в той последовательности, в которой используется.
     
  17. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    UbIvItS
    Ну наконец-то здравая мысль. А то уж думал, не дождусь. А вот теперь обратите внимание на то, что этот термин использовался до Вашего появления в теме (а именно в посте 27). А т.к. Вы в посте 33 не указали своё определение, то Вы автоматически приняли существующее на данный момент. Иначе непонятно, против чего Вы возражали.
    :) Это звучит смешно: цикл можно развернуть только при заведомо известном количестве проходов, если разворот цикла при заранее неизвестном количестве проходов не считается разворотом цикла.
     
  18. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    l_inc
    это - то понятно, я изначально и говорил об этом.
    ну, вы юморист - такие точные определения делать (это похоже на анекдот, который Крипто рассказал про математика ):)))
     
  19. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    UbIvItS
    ЛОЛ. Так это ж я Вас и "цитирую". :) И это не точное определение, а определение-насмешка. Просто перефразировал фразу, которая "звучит смешно".
     
  20. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    l_inc
    я вас не могу понять. что вы мне хотите доказать, что #27- это разворот цикла? ну, если вам так хочется.... это уже игра понятиями и доказать вы можете своё - я своё, но с одним вы спорить не сможете: этот извратный способ никому не нужен, т. ч. называйте его как вам угодно.