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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Предисловие 9<br />

естественность их использования отражаются в удивительной общности функций.<br />

В Паскале обилие объявляемых структур данных ведет к специализации функций,<br />

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

Лучше иметь 100 функций, которые работают с одной структурой данных, чем<br />

10 функций, работающих с 10 структурами. В результате пирамиде приходится<br />

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

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

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

Паскаль. Не поддавайтесь ошибочному впечатлению, будто этот текст может<br />

усвоить лишь студент MIT — представитель специфической породы, которая только<br />

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

посвященная программированию на Лиспе, вне зависимости от того, где и кто по<br />

ней учится.<br />

Учтите, что это текст о программировании, в отличие от большинства книг по<br />

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

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

инженерии и искусственного интеллекта стремятся к взаимопроникновению<br />

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

рост интереса к Лиспу за пределами искусственного интеллекта.<br />

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

в области искусственного интеллекта, область эта порождает множество<br />

значительных программистских задач. В других программистских культурах<br />

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

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

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

изобретая для этого язык. По мере приближения к границам системы, где мы —<br />

люди — взаимодействуем чаще всего, эти языки обычно становятся все менее<br />

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

языка, повторенные по многу раз. У Лиспа же синтаксис и семантика<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!