4.2. Адреса и ячейки
Определение. Имя – это ссылка на некоторые значения, точнее говоря. На другой объект, обладающий этим значением.
Пример:
Рис. Имена как специальные объекты ссылки.
П
римечание:
- обозначает или одно и тоже;
-
стрелка ссылки.
Определение. Генерируемые имена – это имена, выбираемые из бесконечного запаса имен.
Будем называть генерируемые имена адресами, если выполнены два условия, первое из которых представляет массив.
Адреса образуют неограниченное линейно упорядоченное счетное множество, изоморфное множеству натуральных чисел.
Адреса – это имена, не имеющие вида.
Точно так же как имя вместе со своим содержимым образует переменную, адрес вместе с со своим содержимым (содержимым ячейки) образует ячейку.
7011о 0.81134
адрес содержимое
ячейки
ссылка 0.81134
Рис. Ячейка.
Из сказанного следует, что адрес – это, фактически, новое имя обозначения, присвоенное системной программой языка программирования.
Обозначение адрес
Пример: Х7011о; Х=0.81134
Новое имя «Х» есть номер адреса 7011о, по которому размещается значение 0.81134.
Примечание: Нулевой индекс «о» внизу номера обозначает адрес.
Полный список адресов и содержимым ячеек, называется памятью. Таким образом, память – это линейно упорядоченное множество переменных, последовательность ячеек.
Пример: х=5.3;
Цел. i
Массив к [13]
Лог. m = (истина, ложь)
Компл. n.
Для машины получим
Таблица
идентификаторов
х 1043о 0.53
1044о 10Е1
i 1045o нет начальной загрузки (скип)
k 1046o не определено (нил)
1047o нил
1048o нил
m 1049o истина
1050o ложь
n
1051o
нил
память
Для сближения трехадресной формы с одноадреспой, организации массивов, декомпозиции операторов цикла и организации вычислительного процесса используют индекс – регистр (ИР). ИР работает только с целыми числами по принципу сумматора (СМ). В нем предусмотрены четыре возможности счета:
ИР=ИР+1; ИР=ИР-1;
ИР=ИР+const; ИР=ИР-const.
Обычно имеется несколько индекс-регистров ИР1, ИР2,…, которые служат сумматорами адресного арифметического устройства. В дополнение к сказанному возможен обмен информацией между ИР и СМ.
4.3. Машина Тьюринга.
В 1930-х годах Алан Тьюринг и Алонза Черч предложили чрезвычайно простые модели вычисления и затем выдвинули утверждение: «Любое исполнимое вычисление может быть выполнено на любом из этих моделей.»
Оператор машины Тьюринга выполняется за четыре следующие шага:
Считать и проверить символ в текущей ячейке ленты.
Заменить символ на другой символ (необязательно).
Увеличить или уменьшить указатель текущей ячейки.
Перейти к другому оператору.
Согласно тезису Черча – Тьюринга, любое вычисление может быть запрограммировано на этой примитивной машине. Доказательство тезиса опирается на два утверждения:
все существующие модели вычислений могут быть реализованы машиной Тьюринга;
пока нет ни одного вычисления, которое не реализовано машиной Тьюринга.
Вывод. Так как машину Тьюринга легко смоделировать на любом языке программирования, можно сказать, что все языки программирования делают одно и то же.
Пример на С++. char tape […]; - лента tape бесконечна.
int current = 0;
L17: if (tape [current] == ‘g’){
tape [current++] = ‘j’; go to L43;}.
Примечание. сhar – tape имеет символьный тип;
int – current – имеет целый тип.
