Cтраница 4
Ссылки в Фортране могут быть либо локальными, либо гло бальными; промежуточные уровни нелокальных ссылок не предусмотрены. Все идентификаторы должны быть описаны ( явно или неявно) в программе. Эти структуры позволяют определять среду ссылок для каждой подпрограммы во время трансляции и эффективно управлять этой средой во время выполнения практически без Каких-либо накладных расходов. [46]
Как было указано выше, передача параметров может осуществляться либо по значению, либо по имени. Передача По значению является стандартной; например, DEFINE всегда оп ределяет функцию как EXPR. При передаче по имени не передается среда ссылок в момент вызова, поэтому локальные переменные вызываемой функции могут помешать правильному вычислению фактических параметров. По этой причине передача по имени обычно не годится для функций, определенных программистом. [47]
При изучении управления данными оказывается полезным понятие среды ссылок. В любой момент выполнения программы имеется определенное множество активных ассоциаций идентификаторов. Это множество активных ассоциаций и называется средой ссылок в данной точке программы. Именно среда ссылок определяет для каждой встретившейся ссылки соответствующую ей ассоциацию. Операции именования, разыменования, активирования и деактивирования изменяют среду ссылок. [48]
Алгол-программа с метками и процедурами в качестве параметров. [49] |
Опять-таки нет ощутимого различия между передачей по имени, по значению или по ссылке; мы ожидаем, что будет передаваться указатель на некоторое место среди команд программы. Инструкция перехода на формальный параметр в вызываемой подпрограмме приводит к появлению неоднозначности. Обычно считается, что после перехода должна получиться такая же среда ссылок, какая возникла бы, если бы переход выполнялся в точке, где метка передается, как параметр. Следовательно, метка должна включать в себя описание среды ссылок в точке передачи, точно так же, как подпрограмма-параметр. [50]
Управление последовательностью выполнения инструкций осуществляется в основном с помощью меток и переходов goto. Выражения и управление подпрограммами простые. Управление данными базируется на строго двухуровневой ( локальной или глобальной) среде ссылок. Средства обращения к подпрограммам простые; передача параметров осуществляется только-посредством ссылок. [51]
В реализации четырех шагов, из которых состоит создание структуры, нет ничего неясного. Установление пути доступа к новой структуре осуществляется либо путем ассоциации струк-туры с идентификатором, ее именем в некоторой среде ссылок ( см. гл. [52]
Данные, существующие во время выполнения программы, можно грубо разбить на два класса: данные, определяемые программистом, и данные, определяемые системой. Данные, определяемые программистом, состоят из элементов данных, которые программист явно определяет и которыми манипулирует в своей программе, например числа, массивы и файлы ввода-вывода. Данные, определяемые системой, состоят из тех элементов данных, которые формируются реализацией языка во время выполнения программы для служебных целей, например стеки точек возврата в подпрограммах, дескрипторы структур данных, среда ссылок, списки свободного пространства, буферы ввода-вывода и биты, управляющие сбором мусора. [53]