logo
TurboProlog / Документация / TOM_1

Что же все-таки делает компьютер?

- Минуту, - скажите вы. Но как компьютер выполняет предикат

factorial в середине обработки? Если вы вызываете факториал с X = 3, то

затем этот предикат обратится к X = 2. Будет ли он иметь два значения пе-

ременной, или второе значение стирает первое?

Дело в том, что компьютер создает новую копию предиката factorial

таким образом, что он становится способным вызывать сам себя как пол-

ностью самостоятельную процедуру. При этом, конечно, код выполнения не

будет копироваться, но все аргументы и промежуточные переменные копируют-

ся.

Информация хранится в области памяти называемой "стек", которая соз-

дается каждый раз при вызове правила. Когда выполнение правила завершает-

ся, занятая его стеком память возвращается общему объему памяти, и выпол-

нение продолжается со стеком, который использовался перед вызовом.

Дело в том, что компьютер создает новую копию предиката factorial

таким образом, что он становится способным вызывать сам себя как пол-

ностью самостоятельную процедуру. При этом, конечно, код выполнения не

будет копироваться, но все аргументы и промежуточные переменные копируют-

ся.

Информация хранится в области памяти называемой "стек", которая соз-

дается каждый раз при вызове правила. Когда выполнение правила завершает-

ся, занятая его стеком память возвращается общему объему памяти, и выпол-

нение продолжается со стеком, который использовался перед вызовом.