Универсальная компилирующая программа
Затем вновь анализирует новые частные задачи и т. д. Оказалось, что при решении задач на исчисление высказываний человек выполняет аналогичные действия. Очевидно, что для решения подобных задач необходимо иметь полную свободу комбинирования подпрограмм с тем, чтобы они могли использоваться в любом порядке (даже в случае необходимости повторно обращаться к одной и той же подпрограмме) в процессе решения основной поставленной задачи (но не вводя, конечно, известных логических парадоксов). Эти требования были до некоторой степени реализованы Холтом и Туранским в составленной ими универсальной компилирующей программе.
В этой программе не были применены ни метод косвенной адресации, ни формирование «ассоциативной памяти» по Ньювелу, Симону и Шоу. Использование описываемого метода на любой машине ограничено тем, что текущее распределение запоминающего устройства должно осуществляться в ходе решения данной задачи. Языки компилирующих программ ИТ, ЮНИКОЛ и ФОРТРАН, позволяющие пользоваться индексами, достаточно универсальны для того, чтобы осуществить подобное рекурсивное использование подпрограмм.
Как показал Шехер, одним из способов, обеспечивающих рекурсивное обращение к подпрограммам, является запоминание для каждой подпрограммы всех переменных и выходов подпрограммы на единицу старшего или на единицу младшего уровня. «Индекс уровня» должен увеличиваться на единицу при каждом входе в подпрограмму и уменьшаться на единицу при каждом выходе из нее.
Рассмотрим задачу, требующую наличия трех подпрограмм, входами которых являются и которые подчиняются некоторой управляющей программе. Пусть каждая из подпрограмм может обратиться к любой другой подпрограмме, как к замкнутой подпрограмме, с того уровня, на котором осуществляется вход в эту подпрограмму.
Источник: delete-it