24.03.2015 Views

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1.1. Элементы программирования 27<br />

Эти правила форматирования называются красивая печать (pretty printing). Согласно<br />

им, всякая длинная комбинация записывается так, чтобы ее операнды выравнивались<br />

вертикально. Получающиеся отступы ясно показывают структуру<br />

выражения 6 .<br />

Даже работая со сложными выражениями, интерпретатор всегда ведет себя<br />

одинаковым образом: он считывает выражение с терминала, вычисляет его и печатает<br />

результат. Этот способ работы иногда называют циклом чтение-вычислениепечать<br />

(read-eval-print loop). Обратите особое внимание на то, что не нужно специально<br />

просить интерпретатор напечатать значение выражения 7 .<br />

1.1.2. Имена и окружение<br />

Одна из важнейших характеристик языка программирования — какие в нем<br />

существуют средства использования имен для указания на вычислительные объекты.<br />

Мы говорим, что имя обозначает переменную (variable), чьим значением<br />

(value) является объект.<br />

В диалекте Лиспа Scheme мы даем вещам имена с помощью слова define.<br />

Предложение<br />

(define size 2)<br />

заставляет интерпретатор связать значение 2 с именем size 8 . После того, как<br />

имя size связано со значением 2, мы можем указывать на значение 2 с помощью<br />

имени:<br />

size<br />

2<br />

(* 5 size)<br />

10<br />

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

6 Как правило, Лисп-системы содержат средства, которые помогают пользователям форматировать<br />

выражения. Особенно удобны две возможности: сдвигать курсор на правильную позицию<br />

для красивой печати каждый раз, когда начинается новая строка и подсвечивать нужную<br />

левую скобку каждый раз, когда печатается правая.<br />

7 Лисп следует соглашению, что у всякого выражения есть значение. Это соглашение, вместе<br />

со старой репутацией Лиспа как неэффективного языка, послужило источником остроумного<br />

замечания Алана Перлиса (парафразы из Оскара Уайльда), что «Программисты на Лиспе<br />

знают значение всего на свете, но ничему не знают цену».<br />

8 Мы не печатаем в этой книге ответы интерпретатора при вычислении определений, поскольку<br />

они зависят от конкретной реализации языка.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!