Cтраница 3
Когда имеет место ОПВ, указатель ( перехода) П из удаляемого фрейма в принципе будет утрачен вместе со всем остальным содержимым этого фрейма. Последующая операция перехода, которая предвосхищается указателем П, останется осуществимой при условии, что в новый фрейм будет помещен именно этот указатель перехода, а не ( как было раньше) позиция успешного выхода из процедуры, расположенная вслед за оптимизируемым последним вызовом. Это предполагает, что реализация ОПВ должна сопровождаться более общей перестройкой алгоритма управления, так чтобы указатель перехода в каждом фрейме всегда указывал непосредственно на следующий ожидающий решения вызов в программе, и никогда не указывал на успешный выход из процедуры, разве только на успешный выход из целевого утверждения. Такая организация значительно улучшает скорость и непрерывность выбора вызовов, поскольку она устраняет неэффективность, связанную с прослеживанием цепочек успешных выходов. Однако результатом рассматриваемой модификации является также то, что содержащийся в фрейме указатель перехода не будет в этом случае достаточным базисом ( как было раньше) для определения вызова, который был активирован при образовании фрейма. Тем не менее данная информация могла бы потребоваться, если бы фрейм оказался точкой возврата, так как в дальнейшем после выполнения некоторой операции возврата этот вызов нужно было бы определить для того, чтобы активировать еще раз. Из приведенных соображений вытекает, что в каждом фрейме ( или по крайней мере в каждой точке возврата) должен быть также явно представлен еще в одной ячейке управления идентификатор вызова, обращавшегося к соответствующей данному фрейму процедуре. [31]
Когда имеет место ОПВ, указатель ( перехода) П из удаляемого фрейма в принципе будет утрачен вместе со всем остальным содержимым этого фрейма. Последующая операция перехода, которая предвосхищается указателем П, останется осуществимой при условии, что в новый фрейм будет помещен именно этот указатель перехода, а не ( как было раньше) позиция успешного выхода из процедуры, расположенная вслед за оптимизируемым последним вызовом. Это предполагает, что реализация ОПВ должна сопровождаться более общей перестройкой алгоритма управления, так чтобы указатель перехода в каждом фрейме всегда указывал непосредственно на следующий ожидающий решения вызов в программе, и никогда не указывал на успешный выход из процедуры, разве только на успешный выход из целевого утверждения. Такая организация значительно улучшает скорость и непрерывность выбора вызовов, поскольку она устраняет неэффективность, связанную с прослеживанием цепочек успешных выходов. Однако результатом рассматриваемой модификации является также то, что содержащийся в фрейме указатель перехода не будет в этом случае достаточным базисом ( как было раньше) для определения вызова, который был активирован при образовании фрейма. Тем не менее данная информация могла бы потребоваться, если бы фрейм оказался точкой возврата, так как в дальнейшем после выполнения некоторой операции возврата этот вызов нужно было бы определить для того, чтобы активировать еще раз. Из приведенных соображений вытекает, что в каждом фрейме ( или по крайней мере в каждой точке возврата) должен быть также явно представлен еще в одной ячейке управления идентификатор вызова, обращавшегося к соответствующей данному фрейму процедуре. [32]
Так как на каждом шаге вычисления вызывается некоторая процедура, и в результате этого в целевое утверждение вводятся ( в общем случае) новые вызовы ( из тела процедуры), исполнение программы можно рассматривать как повторяющийся процесс входа в процедуру и выхода из процедуры. Вход в процедуру происходит в тот момент, когда телом процедуры заменяется обращавшийся к ней вызов. Выход из процедуры происходит в тот момент, когда оказываются решенными все вызовы из ее тела. Строго говоря, здесь был описан лишь успешный выход из процедуры; с понятием неудачного выхода мы встретимся несколько позже. [33]
Когда имеет место ОПВ, указатель ( перехода) П из удаляемого фрейма в принципе будет утрачен вместе со всем остальным содержимым этого фрейма. Последующая операция перехода, которая предвосхищается указателем П, останется осуществимой при условии, что в новый фрейм будет помещен именно этот указатель перехода, а не ( как было раньше) позиция успешного выхода из процедуры, расположенная вслед за оптимизируемым последним вызовом. Это предполагает, что реализация ОПВ должна сопровождаться более общей перестройкой алгоритма управления, так чтобы указатель перехода в каждом фрейме всегда указывал непосредственно на следующий ожидающий решения вызов в программе, и никогда не указывал на успешный выход из процедуры, разве только на успешный выход из целевого утверждения. Такая организация значительно улучшает скорость и непрерывность выбора вызовов, поскольку она устраняет неэффективность, связанную с прослеживанием цепочек успешных выходов. Однако результатом рассматриваемой модификации является также то, что содержащийся в фрейме указатель перехода не будет в этом случае достаточным базисом ( как было раньше) для определения вызова, который был активирован при образовании фрейма. Тем не менее данная информация могла бы потребоваться, если бы фрейм оказался точкой возврата, так как в дальнейшем после выполнения некоторой операции возврата этот вызов нужно было бы определить для того, чтобы активировать еще раз. Из приведенных соображений вытекает, что в каждом фрейме ( или по крайней мере в каждой точке возврата) должен быть также явно представлен еще в одной ячейке управления идентификатор вызова, обращавшегося к соответствующей данному фрейму процедуре. [34]
Некоторые производители считают, что главное - уникальность продукта. Полки магазинов переполнены товаром. Как правило, заполнены все товарные группы, и выставить ординарный товар очень сложно. Даже цена и оплата входа не решают вопроса. Для успешного выхода продукта нужна какая-то отличительная черта. Если она есть, то попасть на полку достаточно легко. [35]
В редакторе имеется средство автоматического создания копий рабочего файла на диске, известное как средство автосохранения. Копия создается после внесения в файл определенного, заранее заданного числа изменений, фиксируемого в счетчике. Значение счетчика выводится на первую строку экрана. За каждым новым уровнем редактирования автоматически закрепляется сгенерированный системой восьмисимвольный идентификатор автосохранения. Идентификатор так же, как и счетчик числа изменений, выводится на первую строку экрана и используется в качестве имени рабочей копии файла для данного уровня редактирования. После успешного выхода из текущего уровня редактирования все файлы автосохранения, созданные для этого уровня, уничтожаются. [36]