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, у Вас доминанта ))И если мы хотим получить максимальную производительность, то и писать должны соответствующе. Читаемость это субъективный подход, очень субъективный. Вообще, когда мы пишем цикл и должны после его завершения проверять условия выхода ... за такое бить надо. Не должны кишки цикла торчать наружу, это уже какой-то взрыв на макаронной фабрике. Некоторые архитектуры содержат специальный стек возвратов, и когда мы делает 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/ |