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.
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 />
сахар вызывает рак точки с запятой».