| << К разделам |
| Информатика |
| Алгоритмы |
| Теория информации |
| Теория программирования |
| Все статьи |
| Журнал |
| Подписка |
Интернет-Журнал «Потенциал» |
| Авторам |
| Печатные номера |
|
Адрес редакции: 109544, г. Москва, ул. Рабочая, 84, редакция журнала "Потенциал". Телефоны: 787-24-94, 787-24-95, 678-35-86 E-mail: potential@potential.org.ru Главный редактор А.Д. Гладун Шеф-редактор Г.А. Четин Подробная информация Свидетельство о регистрации— СМИ ПИ № ФС 77-19521. Издаётся с января 2005 года. Тираж — 4000 экз, периодичность выхода — раз в месяц Печать — ООО "Азбука-2000" Журнал издаётся на средства выпускников технических вузов ISSN 1814-6422 |
| Полезные сайты |
ЗФТШ
|
МЦНМО
|
Журнал "Квант"
|
"Открытый Колледж"
|
Союз образовательных сайтов
|
Интернет-портал "Абитуриент"
|
| Другие ссылки... |
|
Встретил(Иванов) —> Послать(Иванов), Встретил(Петров) —> Послать(Петров), Встретил (Васильев) —> Послать(Васильев), Встретил(Сидоров) —> Послать(Сидоров),fi Это типичный дейкстровский условный оператор. Проверяются условия. Если хотя бы одно из них истинно, то исполняется так называемая охраняемая команда, соответствующая этому условию. Если истинно сразу несколько из них, то выполняется любой из вариантов, но только один. Так что, зайдя в курилку и увидев там Иванова, Петрова, Васильева и Сидорова, болтающих с отключенными мобильниками («Обеденный перерыв, сэр!»), начальник пошлет одного из них, того, кого захочет его левая нога, и будет прав. Такая ситуация называется недетерминированным исполнением. Недетерминированность программ, естественно решающих многие задачи, была четко выявлена еще в работах Дейкстры, соответствующая метиодика программирования описана в классической интереснейшей (ни капли не устаревшей, как отмечают мои студенты) книге Д. Гриса «Наука программирования». Но для удобства хакеров современные языки и системы программирования заставляют нас искусственно превращать программу в детерминированную. Соответствующие преобразования никак не отмечаются в тексте программы и тем самым становятся хорошо спрятанными подпорками, через которые приходится спотыкаться при видоизменении программы.
Встретил(Иванов) —> Послать(Иванов), Встретил(Петров) —> Послать(Петров), Встретил (Васильев) —> Послать(Васильев), Встретил(Сидоров) —> Послать(Сидоров)} Здесь нужно выполнить все четыре действия, но использование запятой вместо точки с запятой показывает, что выполнять их можно в любом порядке. Так что начальник, встретив одного из провинившихся, пошлет его и будет параллельно с другими делами поджидать встречи с другими. А если он зайдет в курилку и увидит всех четырех в том же состоянии, что и в предыдущем параграфе, он единым махом пошлет их всех параллельно и разделается с задачей. Это и есть параллельное исполнение в том смысле, в каком оно диктуется сутью решения задачи: четыре действия абсолютно независимы и могут быть выполнены в одно и то же время. Конечно же, параллельность в разумно организованной системе не означает требования обязательно дождаться, когда эти четыре товарища сойдутся вместе и лишь затем выполнить действие.
Встретил(Иванов) —> Послать(Иванов), Встретил(Петров) —> Послать(Петров), Встретил (Васильев) —> Послать(Васильев), Встретил(Сидоров) —> Послать(Сидоров)} Но в данном случае мы имеем чистое совместное исполнение. Порядок исполнения операторов безразличен, но выполняться они могут лишь по одному в один момент времени. Встретив всех четырех знаменитостей в курилке, шеф скажет примерно следующее: — Петров, зайдите ко мне. После него жду Иванова, затем Сидорова, затем Васильева. И уж наедине он выполнит для каждого из них требуемый оператор.