OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:40

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




Начать новую тему Ответить на тему  [ Сообщений: 165 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 14:34 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Время разработчика и бонусы верифицируемости и безошибочности значительно дороже процессорного времени в подавляющем большинстве случаев. А там, где нужна жёсткая оптимизация - там она и нужна, задача такая ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 17:04 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Alexey_Donskoy писал(а):
Время разработчика и бонусы верифицируемости и безошибочности значительно дороже процессорного времени в подавляющем большинстве случаев.

Речь о базовой технике.
С поставленной техникой задачи решаются быстрее и качественнее, и с меньшими затратами на "отладку" (а часто вообще без них).

Всех, кто спорит с циклом Дейкстры -- уволить с сей секунды.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 17:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Edward Ivanov писал(а):
... Насколько быстродействущим является цикл Дейкстры? IMHO, стандартный цикл с двумя (тремя) for-ами (примеры выше) все таки будет пошустрее.

Отличия в быстродействии ничтожны, и интересны только во встроенных системах и т.п. (и то вряд ли).

Описываться в книгах и документации (комментариях) циклы должны по Дейкстре.
Отличия ради оптимизации -- оговариваться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 17:54 

Зарегистрирован: Вторник, 18 Сентябрь, 2007 08:48
Сообщения: 108
В исходниках ББ можно найти циклы Дейкстры?
Роясь в исходниках и подсистемах ББ, нашел, что довольно часто используются стандартные FOR..END.
Если следовать логике Info21, то разработчиков ББ надо разогнать в первую очередь. :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 18:06 
Модератор
Аватара пользователя

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

Цикл Дейкстры - не обязательное, а "всего лишь" очень удобное средство для грамотного программирования (метода Дейкстры). Можно обойтись простым WHILE, просто часто будет погромздчее.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 18:46 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Edward Ivanov писал(а):
В исходниках ББ можно найти циклы Дейкстры?
Роясь в исходниках и подсистемах ББ, нашел, что довольно часто используются стандартные FOR..END.
Если следовать логике Info21, то разработчиков ББ надо разогнать в первую очередь. :oops:

Если следовать моей логике, то такого вывода из такой посылки никак не выходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 19:30 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Edward Ivanov писал(а):
В исходниках ББ можно найти циклы Дейкстры?
Можно, например в исходниках компилятора. В виде такой конструкции:
Код:
LOOP
  IF ... THEN ...
  ELSEIF ... THEN ...
  ELSE EXIT END;
END;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Вторник, 18 Ноябрь, 2008 21:43 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Иван Кузьмицкий писал(а):
Владимир Лось писал(а):
Код:
foreach( ItemType item in items )
Код:
for( int i = 0; i<items.count; ++i )

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 19:19 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Я не спрашивал, поняли ли вы там что-то. Докажите, что добросовестно прочли.


Я читал Гриса. Вот вам мое честное слово. До Дейкстры не дошел, потому что по моим нынешним представлениям там я найду тоже, что и у Гриса (можете меня переубедить), но менее популяризированное и более углубленное. Эта книга для меня опоздала, ничего нового я в ней не нашел. Ее полезно прочесть в ВУЗ'е, особенно для математических специальностей. Для нематематических (тем паче гуманитарных) можно подобрать более удобоваримую литературу (мне так кажется, я не знаю реального положения дел), потому что для людей без математического склада ума книга Гриса бесполезна.

А вот вы, например, читали какую-нибудь "DDD"?

P.S. Глава про документирование у Гриса вообще безнадежно устарела. Глава про обращение программ (нигде такого не видел) выглядит как абстрактные математические игры (на самом деле пратический смысл есть, но почему-то никак не упомянут).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 19:33 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Речь о базовой технике.


Речь о читабельности. Цикл дейкстры нормально не читается (во всяком случае в существующих ЯП). Вы можете сколько угодно рассуждать о его математической элегантности, но в коде он выглядит ужасно. Это значит, что даже если вам его удалось правильно закодировать на конкретном ЯП, ваш последователь (или даже вы сами) будет долго думать, что за фигня здесь написана, неправильно поймет и внесет ошибку.

Info21 писал(а):
Всех, кто спорит с циклом Дейкстры -- уволить с сей секунды.


Сначала займите соответствующую должность :)

P.S. Ваш любимый Грис, кстати, упоминает о различиях между математикой и кодом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 20:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
(*цикл Дейкстры*)
LOOP IF ... THEN
...
ELSIF ... THEN
...
ELSE EXIT END END;

Ну, и чего тут нечитабельного?

А что взрослых переучивать бесполезно -- так для того и Информатика-21.
Тоже мне, Америка вновь открытая...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 21:22 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Info21 писал(а):
Ну, и чего тут нечитабельного?

Если это читабельно, зачем было усложнять седьмой Оберон новой конструкцией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 21:26 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Очевидно, чтобы избавиться от цикла LOOP.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 15 Январь, 2009 21:56 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Да, совсем забыл о том, что O7 выбросили LOOP. Тогда вопрос снимается :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Среда, 21 Январь, 2009 01:02 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Случайно в Яндексе всплыл текст С. Губанова о докладе Вирта в Нижнем Новгороде - и в нём абзац про тогдашнее отношение Вирта и Гуткнехта к циклу Дейкстры:

http://www.oberon2005.ru/r260905.html
Цитата:
Другой молодой человек задал вопрос о работе Дейкстры, в которой предлагались инструкции циклов с несколькими точками входа или что-то в этом роде. Вопрос был задан на русском, и переводчику понадобилось много времени, чтобы Вирт понял о чем речь. Наконец, Вирт догадался, о какой работе Дейкстры идет речь, и ответил (насколько я помню), что это всё дело легче просто заменить цепочкой инструкций if-then-end. И тут произошло чудо — неожиданно Гуткнехт проснулся!!! Юрий Эрнстович [псевдоним Юрга Гуткнехта в кругах российского Оберон-сообщества — прим. ред.] попросил, чтобы ему тоже разрешили ответить на этот вопрос. И что-то долго и активно рассказывал. Честно говоря, я не очень понял, но вроде речь шла о том, что нужно сделать так, как проще, а у Дейкстры сложновато.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Среда, 21 Январь, 2009 01:16 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
http://www.oberon2005.ru/r260905.html ... Вирт догадался, о какой работе Дейкстры идет речь, и ответил (насколько я помню), что это всё дело легче просто заменить цепочкой инструкций if-then-end. ... нужно сделать так, как проще, а у Дейкстры сложновато.

С одной стороны, множить запись ELSIF в WHILE - несколько сбивает с толку: можно когда-нибудь СЕРЬЁЗНО наколоться: перепутаешь к чему,собственно ELSIF этот относится: к WHILE или IF. С другой стороны, Запись IF ??? THEN EXIT END ну просто показывает, что тут к чему... Да и просто IF ??? THEN DOSomething() END в заблуд не вводит, хоть в циклической конструкции, хоть - нет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Среда, 21 Январь, 2009 01:28 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Цикл Дейкстры выражает наиболее общий случай алгоритмического процесса с обратной связью....
Поэтому хорошо его иметь явно. Это ведь не частный паттерн.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Среда, 21 Январь, 2009 12:03 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
Цикл Дейкстры выражает наиболее общий случай алгоритмического процесса с обратной связью....
Поэтому хорошо его иметь явно. Это ведь не частный паттерн.

Я - не про то! (Хотя, слова какие-то подозрительны: "хорошо бы его иметь"... :) )
Я про то, что в случае "навороченности кода", можно перепутать альтернативные ветки цикла и условия... А - это уже серьёзный потенциальный источник проблем...
Надо или слово вводить или (что мне больше по душе) - оставаться в рамках LOOP и вложенных условий...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Среда, 21 Январь, 2009 19:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Владимир Лось писал(а):
Надо или слово вводить ...
Какое слово-то? В таких случаях бывает с ума можно сойти, слово подыскивая. А потом объяснять...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Цикл Дейкстры
СообщениеДобавлено: Четверг, 22 Январь, 2009 12:09 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Info21 писал(а):
Владимир Лось писал(а):
Надо или слово вводить ...
Какое слово-то? В таких случаях бывает с ума можно сойти, слово подыскивая. А потом объяснять...

А Вы - на русском и без нецензурщины!... :)
А, если сурьёзно, - я ж пишу: можно и LOOP-м с вложенными IF-ами прекрасно обойтись!


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

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


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

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


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

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