1.5. РАБОТА СО ЗНАЧЕНИЯМИ
59
§ 1.5. РАБОТА СО ЗНАЧЕНИЯМИ
В наиболее часто используемых профессионалами языках программиро-
вания предполагается устройство вычислителя, близкое к реальной аппара-
туре компьютеров. Известно, что компьютер выполняет действия в процес-
соре, а хранит данные и программы в памяти (см. § 1.2). Память может быть
представлена на самом абстрактном уровне как некоторая совокупность кон-
тейнеров, в которых размещаются значения. Реально такие контейнеры чаще
всего соответствуют ячейкам памяти, и именно на такое специальное (хотя и
практически общепринятое сейчас) устройство логической структуры памя-
ти ориентированы, в частности, традиционные языки. Из упомянутых нами
примеров к такой структуре не привязаны
Lisp
,
Рефал
и
Prolog
. Дальнейшее
рассмотрение в данном параграфе относится только к традиционным языкам.
В традиционных языках основными способами представлять значения и
оперировать ими является использование переменных и констант. Рассмо-
трим некоторые базовые понятия, связанные с этим.
Значения всегда принадлежат некоторому типу.
Определение 1.5.1. Тип данных,или сокращенно тип —это множество зна-
чений вместе с набором операций над этими значениями. Константное зна-
чение — это значение, которое существует независимо от выполнения про-
граммы и не может быть изменено. Константа — обозначение константного
значения. Литерал — частный случай константы, изображение, представля-
ющее в программе свое значение. Переменная — обозначение контейнера, в
котором может храниться одно значение в каждый данный момент.
Конец определения 1.5.1.
Например, число 1 — литерал со значением единица.
"Что за чушь!"
— лите-
рал, обозначающий соответствующую строку символов.
Типом константы является тип ее значения. Если есть некоторый тип, то
его множество значений чаще всего может рассматриваться как состоящее из
константных значений данного типа.
22
Например, bool — тип данных, мно-
жеством значений которого является {false, true}, а операциями — конъюнк-
ция, дизъюнкция, исключающее или и отрицание.
Тип литерала часто определяется по контексту, и поэтому литералы, вы-
рванные из контекста, иногда могут иметь неоднозначную интерпретацию.
22
Но не всегда: например, в объектно-ориентированном программировании появляются ти-
пы, значения в которых порождаются лишь динамически.