OberonCore https://forum.oberoncore.ru/ |
|
Эмуляция недетерминированного цикла Дейкстры https://forum.oberoncore.ru/viewtopic.php?f=115&t=6243 |
Страница 2 из 2 |
Автор: | Comdiv [ Пятница, 08 Июнь, 2018 11:48 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
Цитата: Сейчас подумал про то, что процедуры Condition1, Command1, Condition2, Command2, Condition3, Command3 было бы хорошо сделать вложенными в процедуру Test. НО Согласен. Тоже думал о том, что ограничение на использование локальных переменных открыло простую возможность использовать вложенные подпрограммы по указателям.
|
Автор: | Valery Solovey [ Пятница, 29 Июнь, 2018 00:37 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
Rifat писал(а): Valery Solovey писал(а): И вообще, цикл Дейкстры не про случайность выбора веток цикла, а про декларативность. Дейкстра бы с этим поспорил Может, он бы и поспорил, но приведённый отрывок из книги не противоречит тому, что я сказал, и не подтверждает то, что сказали Вы. |
Автор: | Rifat [ Пятница, 29 Июнь, 2018 10:53 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
Может мы по-разному понимаем слово "декларативность". Но я считаю, что дело не только в декларативности, а случайность, то есть недетерминированность играет очень важную роль. Например, на двух процессорах одновременно запускаются две одинаковые задачи. Какая из них раньше закончится, это не известно, на это может влиять много факторов: есть данные в кэше или нет, все данные всегда правильно считываются или когда-то произошла ошибка четности, которую процессор автоматически исправлял. То есть хотя задачи и одинаковые, но результат может быть недетерминирован. Также если, допустим, два процессора одновременно начинают работать, один должен x := 1, а другой x := 2, то какой будет в конце результат не определено, то есть недетерминировано, может быть 1 или 2. Настоящий недетерминированный цикл Дейкстры должен выдать ответ 1 или 2. А детерминированный цикл Дейкстры, который реализован в Oberon-07, всегда будет выдавать 1. Код: {TRUE}
p := TRUE; WHILE p DO x := 1; p := FALSE; ELSIF p DO x := 2; p := FALSE; END; { (x = 1) OR (x = 2) } |
Автор: | Comdiv [ Пятница, 29 Июнь, 2018 11:21 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
В настоящем цикле Дейкстры - это некорректный цикл. По крайней мере, он задумывался для возможности прийти к правильному решению разными путями, а не созданию разных решений, в зависимости от непонятно чего. Также, Дейкстра упоминал об альтернативах, как возможности выбора для более эффективного решения для машины. То есть, недетерминированность может существовать в описании, но остутствовать в конечной результате. Недетерминированность из-за этого не исчезает. |
Автор: | Rifat [ Пятница, 29 Июнь, 2018 12:29 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
Comdiv писал(а): В настоящем цикле Дейкстры - это некорректный цикл. По крайней мере, он задумывался для возможности прийти к правильному решению разными путями, а не созданию разных решений, в зависимости от непонятно чего. Так это не разные решения Может быть, действительно, нужно чтобы x было 1 или 2 и не важно какое именно значение. |
Автор: | Valery Solovey [ Суббота, 30 Июнь, 2018 01:13 ] |
Заголовок сообщения: | Re: Эмуляция недетерминированного цикла Дейкстры |
Вы правильно заметили, что недетерминированность - это неопределённость. Но почему Вы решили, что неопределённость - это случайность - не понятно. |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |