Booster Я возразил лишь против поста 33. Спорить на тему оптимальности решения в общем случае я не собираюсь. Каждой задаче своё решение. Поэтому с радикальными утверждениями вида: "Серьёзное применение отсутствует", - я не соглашусь.
l_inc Ну вот и ладненько, а я только сказал, что это решение не тянет на полноту, так как не решена проблема бесконечной памяти.
Booster Да ладно. Проблема бесконечной памяти для развёрнутого цикла равносильна проблеме бесконечного времени исполнения программы для обычного цикла. Единственная разница в том, что в случае развёрнутого цикла программа упадёт самостоятельно, а в случае обычного её завершит пользователь (Завершить процесс/Reset). В любом случае любая программа пишется, принимая некоторые допущения. Для развёрнутого цикла с неизвестным количеством итераций это допущение - определённый заранее выделенный объём памяти. Впрочем, как, например, и для рекурсии с неопределённым количеством вложений: стэк-то тоже не бесконечный, хоть и резиновый по умолчанию.
l_inc Мы тут не про рекурсию. Что в теории может помешать например пустому циклу выполняться бесконечно? Я кроме внешних факторов, которые от работы самого цикла не зависят, не вижу. А вот память по определению конечна, если только она не кольцевая.
Booster Не. Это уже издевательство, а не аргументация. Бесконечно - это ж действительно бесконечно. Так что не будем скупиться на возможные варианты развития событий: 1) Коррозия контактов платы ОЗУ. 2) Падение метеорита. 3) Поглощение планеты разрастающимся Солнцем. А на случай, если Вы возразите, что это типа внешние факторы... Ну так тогда ограничение памяти - это тоже внешний фактор по отношению к программе. Действительно, программа ж не виновата, что у незадачливого юзера видите ли памяти не хватает. Ограничение по времени - это никак не меньшая проблема, чем ограничение памяти.
l_inc Ладно, если сделать кольцевую память, то он будет работать вечно. Так что это действительно только проблема памяти.
l_inc #27 - весьма пугающий пример к тому же, я просил пример прослушки порта или, например, как быть с функами, где колво входных параметров заранее неопределено?
UbIvItS Вообще-то я предложил взглянуть на пост 27 не для того, чтобы Вас напугать, а чтобы эти вопросы исчезли. Судя по тому, что вопросы остались, пример Вы не разобрали. Так о чём можно дальше говорить, если Вы не слушаете? В двух словах итеративность и ветвления достигаются последовательным самокопированием кода в памяти и командами типа cmp, cmc, cdq, sbb и т.п. Т.о. команды перехода не являются необходимыми для удовлетворения условия полноты Тьюринга.
l_inc это не более чем оригинальный изврат - это никак не может быть признано заменой итерации/ветвления. лишнии операции записи в память, расход памяти можно уменьшить, конечно, засчёт затирания предыдущей итерации, но всё равно изврат. подобные вещи могут иметь место для разработки "умного кода", но для обычного применения - нет.
UbIvItS Нельзя. Т.к. это уже не будет считаться "разворотом цикла" и для этого понадобятся команды перехода. Изврат - не изврат, а вполне успешно опровергает фразу: Вы вообще не читаете! Пост 38!
l_inc вы правы, но это даёт есчо больше веса выражению: "Это изврат")) Бустер, верно сказал о расходе памяти и опровергнуть этот момент не выйдет. да, и сомнительно довольно, что прирост скорости будет: А. доп. время тратится на запись в память. Б. памяти не хватает и всё сбрасывается в жуткий своп. я всё - таки имел ввиду стат. развёртку цикла (во время компиляции). читаю: человек совершенно прав: "Если". теперь отметим ещё одну вещь - от цикла мы всё же не ушли: вместо нормального вызова кода по адресу мы юзаем извратное копирование кода, но по сути имеем другой вариант цикла
UbIvItS > цикл можно развернуть только при заведомо известном колве проходов; можно и при неизвестном. самый тяжелый случай - это цикл с выходом (выходами) по условию. пусть у нас имеется k условий (бум считать, что одно условие - один переход). тогда неразвернутый цикл состоит из k+1 переходов (+1 переход на огранизацию цикла). при разворте цикла на n итераций тело цикла будет состоять из k*n+1 переходов. в зависимости от кол-ва команд в теле цила и специфики самих переходов... гм, короче, в общем случае мы получаем ub.
немного странно сам топик задан -- посмотрите на великое множество парсеров, валидаторов, интерпретаторов, лексеров, анализаторов, итд, все они так или иначе используют КА в явном или неявном виде.
varnie сосо не использует. За что его люблю, ну.. не только за это конечно. ++: Легко найти ошибку в граммаре. И компиле и рантаймовую. Меньше полученый бинарь. Как минимум не медленее (полученый бинарь). Очень читабелен полученый C/C++ (еще ряд форматов) исходник. Исходники самого коко просты для понимания, дополнения, изменения.
kaspersky каким именно образом? то, за что ратовал l_inc - просто иная реализация цикла и такое применять можно ввиду чудовищной безысходности)) ага...... кстати, давай - ка определимся с термином "развёртка цикла". я имею в виду: код содежит столько повторов, сколько раз он используется. +++++++++++++++++++ и в той последовательности, в которой используется.
UbIvItS Ну наконец-то здравая мысль. А то уж думал, не дождусь. А вот теперь обратите внимание на то, что этот термин использовался до Вашего появления в теме (а именно в посте 27). А т.к. Вы в посте 33 не указали своё определение, то Вы автоматически приняли существующее на данный момент. Иначе непонятно, против чего Вы возражали. Это звучит смешно: цикл можно развернуть только при заведомо известном количестве проходов, если разворот цикла при заранее неизвестном количестве проходов не считается разворотом цикла.
l_inc это - то понятно, я изначально и говорил об этом. ну, вы юморист - такие точные определения делать (это похоже на анекдот, который Крипто рассказал про математика )))
UbIvItS ЛОЛ. Так это ж я Вас и "цитирую". И это не точное определение, а определение-насмешка. Просто перефразировал фразу, которая "звучит смешно".
l_inc я вас не могу понять. что вы мне хотите доказать, что #27- это разворот цикла? ну, если вам так хочется.... это уже игра понятиями и доказать вы можете своё - я своё, но с одним вы спорить не сможете: этот извратный способ никому не нужен, т. ч. называйте его как вам угодно.