Еще о тараканах в программах: алгоритмы

(с) Зау Таргиски, 2002

Из вопросов в форуме ДЭИР: "Ставим программу на определенный результат. Выбираем несколько путей ее реализации. Дальше подсознание выбирает простейший для него и реализует. (…)
Так вот:
1. можно ли четко зафиксировать пути возможного выполнения программы?
2. как добиться того, чтобы программа решала имеющиеся проблемы, без создания новых?
3. как избавиться от самоиндукции на нереализацию?
Я знаю, что в принципе программа должна реализовываться так, как мне надо, а если при этом случайно кому-то будет плохо, это его проблемы. И в большинстве случаев это приемлемо, но не всегда. А вот как это "не всегда" задать, я никак не пойму.
Все дело в том, что не получается у меня почему-то задать конкретных три пути + сверхестественный, и чтобы программа выбрала один из этих четырех. Она часто выполняется по более легкому, чем я задал, но не подходящему мне пути, который я не задавал".

Ответ Зау Таргиски:

При формировании программы, если есть пути, по которым программа идти не должна (а они в 99% случаев есть), задаются "критические точки": мне нужно то-то и то-то, исключая такой путь, такой и такой. А дальше действует принцип: что не запрещено - все разрешено. Для того чтобы программа работала ровно, без сбоев, нужно задать логический путь ее выполнения (нужно отсюда прийти вон туда, к такому результату), но при этом не задаются алгоритмы ее выполнения, а лишь блокируются те способы и последствия, которые вы хотите исключить при реализации программы.

Почему задавать от себя несколько алгоритмов хуже:

1) не все возможности мы можем предусмотреть. То, что нам кажется лучшим способом достижения желаемого, далеко не всегда является наиболее эффективным (это я уже говорила в материале " Исполнение желаний".

2) это несколько каналов, которые надо одновременно поддерживать, - представьте, сколько силы на это уходит.

3) алгоритмы при неумелом программировании начинают мешать друг другу по принципу "буриданова осла".

Поясню: чтобы программа подействовала, у нее должен быть алгоритм (в бэйсике, помнится, было заветное if-then-else). Теперь представьте: ваша программа подходит к точке, от которой вы нарисовали ТРИ пути. И ни на один из них не установили условие, при котором конкретный путь должен быть выбран. Который из трех?

Подойдя к этой точке, программа замрет на месте или пойдет по иному пути, не предусмотренному в программе. Может возникнуть вопрос, а откуда берется это не предусмотренное условие, если вы его не включали в программу? Оно появляется потому, что вы его НЕ ИСКЛЮЧИЛИ. Так, если русло реки завалить, она, может быть, пробьет завал, может быть, разольется наводнением, а может быть, продолбит другое русло.

А теперь представьте, что в каждом из этих трех алгоритмов, растущих неожиданно из одной точки, сидит еще такая ма-а-аленькая вирусная программка, которая называется "у меня не получится". Она маленькая, но действует как налаженная стрелочка, переводящая рельсы. Она просто замыкает алгоритм, закольцовывает программу и ваша энергия уходит на пшик. Для устранения этих вирусных программок существуют медитации и аутотренинги :-)

>"А вот как это "не всегда" задать я никак не пойму"

А и не надо этого задавать. Вы пытались когда-нибудь составить программу на все и на все случаи жизни? :-) Для того, чтобы не приходилось задавать это самое "не всегда", надо просто-напросто к каждой конкретной ситуации создавать свою конкретную, учитывающую именно данные условия, программу.

Hosted by uCoz