Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 306

Возможности, соответствующие механизму рекурсивного вызова, у нашего абстрактного вычислителя имеются: это запоминание всего локального кон­текста на стеке и порождение нового контекста, которое можно трактовать как порождение нового экземпляра рекурсивно запускаемой подпрограммы.

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

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

Однако, как всегда, нецелесообразность некоторого решения в общем случае не означает его нецелесообразности в частных. Например, в язы­ке С/С++ имеются встраиваемые процедуры (тПпепроцедуры), семантика вызова которых — именно прямая текстовая подстановка гела процедуры вместо конструкции вызова.

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

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама