1.1.2 Имена и окружение


Одна из важнейших характеристик языка программирования — какие в нем суще-ствуют средства использования имен для указания на вычислительные объекты. Мы говорим, что имя обозначает переменную(variable), чьим значением (value) является объект.

В диалекте Лиспа Scheme мы даем вещам имена с помощью слова define. Предложение

(define size 2)

заставляет интерпретатор связать значение 2 с именем size1. После того, как имя size связано со значением 2, мы можем указывать на значение 2 с помощью имени:

size

2

(* 5 size)

10

Вот еще примеры использования define:

(define pi 3.14159)

(define radius 10)

(* pi (* radius radius))

314.159

(define circumference (* 2 pi radius))

circumference

62.8318

Слово define служит в нашем языке простейшим средством абстракции, поскольку оно позволяет нам использовать простые имена для обозначения результатов сложных операций, как, например, вычисленная только что длина окружности — circumference.

Вообще говоря, вычислительные объекты могут быть весьма сложными структурами, и было бы очень неудобно, если бы нам приходилось вспоминать и повторять все их детали каждый раз, когда нам захочется их использовать. На самом деле сложные программы конструируются методом построения шаг за шагом вычислительных объектов возрастающей сложности. Интерпретатор делает такое пошаговое построение программы особенно удобным, поскольку связи между именами и объектами могут создаваться последовательно по мере взаимодействия программиста с компьютером. Это свойство интерпретаторов облегчает пошаговое написание и тестирование программ, и во многом благодаря именно ему получается так, что программы на Лиспе обычно состоят из большого количества относительно простых процедур.

Ясно, что раз интерпретатор способен ассоциировать значения с символами и затем вспоминать их, то он должен иметь некоторого рода память, сохраняющую пары имя-объект. Эта память называется окружением(environment) (а точнее, глобальным окружением(global environment), поскольку позже мы увидим, что вычисление может иметь дело с несколькими окружениями2)
.

1. Мы не печатаем в этой книге ответы интерпретатора при вычислении определений, поскольку они зависят от конкретной реализации языка.
2. В главе 3 мы увидим, что понятие окружения необходимо как для понимания работы интерпретаторов, так и для их реализации.

results matching ""

    No results matching ""