OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 24 Июль, 2019 01:16

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 96 ]  На страницу Пред.  1, 2, 3, 4, 5
Автор Сообщение
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Воскресенье, 03 Февраль, 2019 12:01 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
9 лет писать цикл... это круто, а я то думал, почему с обероном так всё плохо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Воскресенье, 03 Февраль, 2019 12:08 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 692
Откуда: Псков
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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Воскресенье, 03 Февраль, 2019 13:07 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8169
Откуда: Троицк, Москва
Kemet писал(а):
9 лет писать цикл... это круто, а я то думал, почему с обероном так всё плохо.
Kemet, у Вас доминанта ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Воскресенье, 03 Февраль, 2019 17:17 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Воскресенье, 03 Февраль, 2019 20:02 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8169
Откуда: Троицк, Москва
Люди развлекаются -- otium post negotium -- при чём тут "смысл жизни"?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Вторник, 05 Февраль, 2019 18:29 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1198
http://bookre.org/reader?file=531465


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 06:39 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 08:14 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1198
Kemet писал(а):
Увы, читать некогда, но если там снова про циклы...)))

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 09:09 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 530
Откуда: Москва
Да нет там откровений.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 09:40 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Ответить можно парой предложений из этого чудного документа
Цитата:
Why do we allow ourselves to be fooled? Because it is easier than solving the real problem.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 09:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9127
Откуда: Россия, Орёл
Kemet, тем не менее, упражнения тренировочные полезны.

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

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 13:43 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Среда, 06 Февраль, 2019 14:32 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 692
Откуда: Псков
Kemet писал(а):
предпочту, чтобы по завершению цикла мне не нужно было проверять условия его окончания

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Четверг, 07 Февраль, 2019 05:59 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Не знаю, что за цикл такой - репорт Оберона просмотрел, все 16 страниц, нет такого цикла.
А так, если мы навешали охрану цикла во все места, а потом, после завершения снова начинаем проверять с каким всё-таки результатов мы пришли к финищу, снова нагородив трехэтажных условий, то за это нужно сильно бить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Четверг, 07 Февраль, 2019 09:10 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 692
Откуда: Псков
Недоумение вызвало это - "не нужно было проверять условия его окончания", то есть, как понимаю, ни трёхэтажных, ни одноэтажных условий.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Убираю LOOP'ы
СообщениеДобавлено: Четверг, 07 Февраль, 2019 19:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8169
Откуда: Троицк, Москва
Trurl писал(а):
http://bookre.org/reader?file=531465
Большое спасибо за ссылочку.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 96 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB