Cтраница 1
Компилирующая программа, способная обучаться, Кибернетический сборник, вып. [1]
Компилирующая программа ( компилятор) воспринимает исходную программу и преобразует ее в рабочую. При этом алгоритм решения задачи заранее представляется так, что отдельные его части соответствуют стандартным программам БСП компилятора. Рабочая программа может быть напечатана внешними устройствами машины и в дальнейшем использоваться как программа, записанная в командах машины. При необходимости она может использоваться для решения задачи сразу после работы компилятора. [2]
Компилирующая программа должна формировать команды, которые будут вести счет по формуле точно таким же способом, как это показано в приведенном выше примере. На рис. 5.12 представлена упрощенная блок-схема алгебраического компилятора. Sn, которые компилятор должен интерпретировать. Он должен иметь в распоряжении набор кодов для обозначения левой и правой скобок, символов арифметических операций и букв. [3]
Компилирующая программа просматривает основную программу, определяет ( с помощью таблицы характеристик программ) необходимые для решения задачи СП, выбывает и размещает их в выделенном для них массиве памяти машины. Затем компилирующая программа заменяет условные адреса СП действительными и согласовывает их с основной программой. В результате выполнения всех этих действий в памяти машины будет готовая к использованию программа. В процессе решения компилирующая программа не используется. [4]
Компилирующая программа ( компилятор) воспринимает исходную программу и преобразует ее в рабочую. При этом алгоритм решения задачи заранее представляется так, что отдельные его части соответствуют стандартным программам БСП компилятора. Рабочая программа может быть напечатана внешними устройствами машины и в дальнейшем использоваться как программа, записанная в командах машины. При необходимости она может использоваться для решения задачи сразу после работы компилятора. [5]
Компилирующая программа, занимающая обычно 120 - 150 ячеек, просматривает основную программу, вызывает и размещает на выделенном массиве оперативной памяти все СП, используемые в основной программе. Затем она производит настройку вызванных СП по месту расположения, при этом условные адреса заменяет действительными и производит увязку СП с основной программой, в результате чего в ОЗУ формируется окончательно готовая основная программа. В процессе работы основной программы компилирующая программа не используется. [6]
Компилирующая программа просматривает основную программу, определяет с помощью таблицы характеристик программ необходимые для решения задачи СП, вызывает и размещает их в выделенном для них массиве памяти машины. Затем компилирующая программа заменяет условные адреса СП на действительные и согласовывает их с основной программой. В результате выполнения всех этих действий в памяти машины будет готовая к использованию программа. В процессе решения компилирующая программа не используется. [7]
Компилирующая программа, занимающая обычно 120 - 150 ячеек, просматривает основную программу, вызывает и размещает на выделенном массиве оперативной памяти все СП, используемые в основной программе. Затем она производит настройку вызванных СП по месту расположения, при этом условные адреса заменяет действительными и производит увязку СП с основной программой, в результате чего в ОЗУ формируется окончательно готовая основная программа. В процессе работы основной программы компилирующая программа не используется. [8]
Если компилирующая программа должна присвоить действительные адреса этим командам и числам, то, кроме самих команд, записанных в символических адресах, в машину должны быть введены символические адреса, соответствующие каждой команде, константе или рабочей ячейке. Можно считать, что символические адреса помещаются в ячейки, находящиеся непосредственно перед соответствующими им символическими командами и константами. [9]
Назначение компилирующей программы состоит в том, чтобы уменьшить объем ручного труда, давая возможность программисту записывать в своей программе команды моделируемого языка. Эти команды интерпретируются с помощью компилирующей программы. Разница между интерпретирующей и компилирующей программами состоит в том, что компилирующую программу не нужно хранить в оперативной памяти после того, как она выполнила свою работу по составлению рабочей программы. Очевидно, что с помощью компилирующей программы могут объединяться математические подпрограммы, а также интерпретироваться и объединяться такие подпрограммы моделирования, которые были описаны в разд. Однако существуют другие более эффективные применения компилирующих программ. Этим вопросам посвящены эта и следующая части главы. Мы рассмотрим три случая: 1) переводящую программу; 2) программу присвоения адресов; 3) дешифратор алгебраических символов. [10]
Такую компилирующую программу называют переводящей программой, поскольку она переводит с символического языка на язык машины. Читатель должен иметь в виду, что в процессе всего дальнейшего изложения рассматриваются две программы: сама компилирующая программа и та программа, которую она обрабатывает. [11]
Первое преимущество компилирующей программы перед интерпретирующей состоит в том, что, поскольку в случае компилирующей программы подпрограммы вставляются в основную программу до того, как эта основная программа начинает работать, исключается необходимость специальных вызовов под программ с барабана в оперативную память. [12]
Назначение этой компилирующей программы - дать возможность программисту вводить в машину обычные алгебраические формулы, которые с помощью такой компилирующей программы будут автоматически заменены программой на языке машины. Конечно, программист должен указать в компилирующей программе, в каких ячейках будут находиться значения независимых переменных и в какую ячейку следует поместить результат. [13]
Другое важное преимущество компилирующей программы состоит в том, что саму компилирующую программу не нужно держать в памяти тогда, когда работает составленная ею программа, так как она используется только в самом начале. Интерпретирующая же программа всегда должна оставаться в памяти, так как она выполняет свою задачу в процессе работы основной программы. Поэтому, когда работает составленная с помощью компилятора программа, для нее остается больше места в памяти. [14]
Таким образом результатом работы компилирующей программы является готовая программа, для работы которой компилирующая программа не нужна. Подготовка к использованию КПМ заключается в составлении основной программы, в которой указываются обращения к СП заданием их номеров. [15]