2.4. ОБЪЕКТЫ И ЗНАЧЕНИЯ

Под объектами обычно понимают некоторые сущности, которые существуют во времени, могут изменяться, но при этом остаются сами собой.

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

Конечно, значение можно считать частным, вырожденным случаем объекта (а именно, застывшим объектом, не способным к развитию), но мы все же обычно будем называть "объектами" только такие объекты, которые не являются значениями.

Иметь дело с объектами труднее, чем со значениями, ибо они могут изменяться. Поэтому объекты часто снабжают именами. Основным свойством имени является то, что оно однозначно связано с объектом (однозначно идентифицирует этот объект). В отличие от самих объектов имена являются типичными значениями, поскольку они не меняются из-за того, что изменяется сам объект.

Программы на Рефале Плюс имеют дело как с объектами, так и со значениями.

Все значения, с которыми работают Рефал-программы, являются объектными выражениями, которые представляют собой конечные последовательности символов и скобок, правильно построенные относительно скобок. Скобки служат для придания объектным выражениям древовидной структуры, в то время как символы представляют собой элементарные данные (литеры, числа, слова и ссылки на объекты).

Объекты, с которыми работают Рефал-программы, могут содержать внутри себя объектные выражения (в частности - ссылки на объекты). Содержимое объектов может изменяться в процессе работы Рефал-программы. Доступ к объектам осуществляется через их имена, в качестве которых служат символы-ссылки.

Объекты создаются как во время компиляции Рефал-программы, так и во время ее исполнения. С теоретической точки зрения, любой объект, будучи создан, существует бесконечно. На практике, однако, Рефал-программы исполняются на компьютерах, имеющих конечный объем памяти, поэтому все реализации Рефала Плюс должны предусматривать сборку мусора. Сборка мусора обеспечивает автоматическое уничтожение тех объектов, которые недоступны программе и которые, в силу этого, заведомо не могут повлиять на дальнейшую работу программы.