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. Элементы программирования 31<br />

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

По сравнению с большинством языков программирования, у Лиспа<br />

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

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

небольшого числа особых форм 11 .<br />

1.1.4. Составные процедуры<br />

Мы нашли в Лиспе некоторые из тех элементов, которые должны присутствовать<br />

в любом мощном языке программирования:<br />

• Числа и арифметические операции представляют собой элементарные данные<br />

и процедуры.<br />

• Вложение комбинаций дает возможность комбинировать операции.<br />

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

возможности абстракции.<br />

Теперь мы узнаем об определениях процедур (procedure definitions) — значительно<br />

более мощном методе абстракции, с помощью которого составной операции<br />

можно дать имя и затем ссылаться на нее как на единое целое.<br />

Для начала рассмотрим, как выразить понятие «возведения в квадрат». Можно<br />

сказать так: «Чтобы возвести что-нибудь в квадрат, нужно умножить его само на<br />

себя». Вот как это выражается в нашем языке:<br />

(define (sq<strong>ua</strong>re x) (* x x))<br />

Это можно понимать так:<br />

(define (sq<strong>ua</strong>re x) * x x))<br />

↑ ↑ ↑ ↑ ↑ ↑<br />

Чтобы возвести в квадрат что-л. умножь это само на себя<br />

11 Особые синтаксические формы, которые представляют собой просто удобное альтернативное<br />

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

иногда называют синтаксическим сахаром (syntactic sugar), используя выражение Питера<br />

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

мало волнует синтаксический сахар. (Для контраста возьмите руководство по Паскалю и<br />

посмотрите, сколько места там уделяется описанию синтаксиса). Такое презрение к синтаксису<br />

отчасти происходит от гибкости Лиспа, позволяющего легко изменять поверхностный синтаксис,<br />

а отчасти из наблюдения, что многие «удобные» синтаксические конструкции, которые<br />

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

когда программы становятся большими и сложными. По словам Алана Перлиса, «Синтаксический<br />

сахар вызывает рак точки с запятой».

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

Saved successfully!

Ooh no, something went wrong!