OberonCore
https://forum.oberoncore.ru/

Убираю LOOP'ы
https://forum.oberoncore.ru/viewtopic.php?f=82&t=2547
Страница 5 из 5

Автор:  Kemet [ Воскресенье, 03 Февраль, 2019 12:01 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

9 лет писать цикл... это круто, а я то думал, почему с обероном так всё плохо.

Автор:  albobin [ Воскресенье, 03 Февраль, 2019 12:08 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Comdiv писал(а):
Добавьте ещё одну переменную.

Типа так?
Код:
ok:=FALSE;
notEndOf:=TRUE;
WHILE notEndOf & ~ok  DO
  notEndOf := Proc1 ();
   IF notEndOf THEN
      SomeCode ();
      ok := Proc2 ();
   END;
END;


Что тоже самое, что Ваше:
Код:
ok := FALSE;
WHILE ~ok & Proc1() DO
   SomeCode ();
   ok := Proc2 ()
END

только корявее выглядит

Автор:  Info21 [ Воскресенье, 03 Февраль, 2019 13:07 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Kemet писал(а):
9 лет писать цикл... это круто, а я то думал, почему с обероном так всё плохо.
Kemet, у Вас доминанта ))

Автор:  Kemet [ Воскресенье, 03 Февраль, 2019 17:17 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Info21 писал(а):
Kemet писал(а):
9 лет писать цикл... это круто, а я то думал, почему с обероном так всё плохо.
Kemet, у Вас доминанта ))
Отнюдь, зацикленность на циклах, особенно циклическая, это настораживает. Зашоренность какая-то чувствуется. Сделать смыслом жизни избавление от LOOP'ов это как-то печально. Потому что в разных ситуациях нужны разные подходы, учитывающие контекст использования конечного результата, куда особенности целевой архитектуры тоже входят.
И если мы хотим получить максимальную производительность, то и писать должны соответствующе.
Читаемость это субъективный подход, очень субъективный.
Вообще, когда мы пишем цикл и должны после его завершения проверять условия выхода ... за такое бить надо. Не должны кишки цикла торчать наружу, это уже какой-то взрыв на макаронной фабрике. Некоторые архитектуры содержат специальный стек возвратов, и когда мы делает RETURN из цикла, это будет быстрее чем EXIT и где-то там RETURN. Поэтому говорить однозначно, что наличие RETURN это однозначно плохо - это плохо))) Говорить, что LOOP с IF-ами однозначное зло - это однозначное зло. Потому-что это не понимать разнообразия контекста применения и требований к производительности, особенности архитектуры и вообще моветон.

Автор:  Info21 [ Воскресенье, 03 Февраль, 2019 20:02 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Люди развлекаются -- otium post negotium -- при чём тут "смысл жизни"?

Доминанта у Вас, Кемет, не отнекивайтесь ))

Автор:  Trurl [ Вторник, 05 Февраль, 2019 18:29 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

http://bookre.org/reader?file=531465

Автор:  Kemet [ Среда, 06 Февраль, 2019 06:39 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Trurl писал(а):
http://bookre.org/reader?file=531465
Увы, читать некогда, но если там снова про циклы...)))
У циклов одна-единственная проблема - зацикливание на них)))
Бесконечный цикл можно получит при любой форме цикла, не зависимо, безусловный ли это цикл с выходом по EXIT, или циклы с условием ( продолжения, выхода, счётчик ) и количество веток проблемы не решают. Ряд рекомендаций ( не догм! ) позволят сделать ваши волосы гладкими и шелковистыми, правда есть одно но - при этом они могут выпасть вовсе.
Поэтому лучше дурью не маяться, а использовать наиболее подходящую форму цикла исходя из контекста. Ибо в цикле важна не форма, а этот, как его, инвариант. Инвариант, Карл!

Автор:  Trurl [ Среда, 06 Февраль, 2019 08:14 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Kemet писал(а):
Увы, читать некогда, но если там снова про циклы...)))

Посмотрите стр. 3-4.

Автор:  Peter Almazov [ Среда, 06 Февраль, 2019 09:09 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Да нет там откровений.

Автор:  Kemet [ Среда, 06 Февраль, 2019 09:40 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Ответить можно парой предложений из этого чудного документа
Цитата:
Why do we allow ourselves to be fooled? Because it is easier than solving the real problem.

Автор:  Илья Ермаков [ Среда, 06 Февраль, 2019 09:50 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Kemet, тем не менее, упражнения тренировочные полезны.

В конце концов, качество кода - основа надёжности.

Внимание к рефакторингу "по крупному" Вас не пугает? Отчего же внимание к циклам пугает?

Что, это пример не стоило прочищать? А это промышленный цикл был, на секундочку. Из Excelsior JET, их программист приводил его.

https://oberoncore.ru/library/ermakov_s ... nogo_cikla

Автор:  Kemet [ Среда, 06 Февраль, 2019 13:43 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Полезны, но без фанатизьму. Тем не менее, самое лучшее упражнение для тренировки, - думать во время разработки.
Я всегда следую простому правилу - всё, что можно сделать ДО цикла, оно должно быть сделано, так как линейный код быстрее ветвящегося, а ветвящийся быстрее ( в общем случае ), чем циклический с ветвлениями ( возможно скрытыми ). Поэтому я предпочту раскрутить цикл на пол-оборта или один оборот, если это действительно нужно для запечатывания цикла. Так же я предпочту, чтобы по завершению цикла мне не нужно было проверять условия его окончания - не должны кишки цикла торчать во все стороны. Исходя из таких соображений я и пишу циклы). Они не идеальны, в них могут быть потенциальные ошибки ( но, учитывая описанный подход, они локализуются в цикле, который выступает в роли запечатанного черного ящика ). В общем, я всё больше склоняюсь к совсем запечатанным итераторам. Жаль с их наличием проблемы.
Пример с промышленным циклом не смотрел, вернее, не смотрел решение примера, однако, сразу видно, что-то там не так, и это "что-то" явно не цикл. Цикл это уже следствие.

Автор:  albobin [ Среда, 06 Февраль, 2019 14:32 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Kemet писал(а):
предпочту, чтобы по завершению цикла мне не нужно было проверять условия его окончания

О чём это в двух словах, имея ввиду, к примеру, любой цикла поиска?

Автор:  Kemet [ Четверг, 07 Февраль, 2019 05:59 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Не знаю, что за цикл такой - репорт Оберона просмотрел, все 16 страниц, нет такого цикла.
А так, если мы навешали охрану цикла во все места, а потом, после завершения снова начинаем проверять с каким всё-таки результатов мы пришли к финищу, снова нагородив трехэтажных условий, то за это нужно сильно бить.

Автор:  albobin [ Четверг, 07 Февраль, 2019 09:10 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Недоумение вызвало это - "не нужно было проверять условия его окончания", то есть, как понимаю, ни трёхэтажных, ни одноэтажных условий.

Автор:  Info21 [ Четверг, 07 Февраль, 2019 19:16 ]
Заголовок сообщения:  Re: Убираю LOOP'ы

Trurl писал(а):
http://bookre.org/reader?file=531465
Большое спасибо за ссылочку.

Страница 5 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/