Главная » Просмотр файлов » Х. Абельсон, Дж. Дж. Сассман, Дж. Сассман - Структура и интерпретация компьютерных программ

Х. Абельсон, Дж. Дж. Сассман, Дж. Сассман - Структура и интерпретация компьютерных программ (1108516), страница 3

Файл №1108516 Х. Абельсон, Дж. Дж. Сассман, Дж. Сассман - Структура и интерпретация компьютерных программ (Х. Абельсон, Дж. Дж. Сассман, Дж. Сассман - Структура и интерпретация компьютерных программ) 3 страницаХ. Абельсон, Дж. Дж. Сассман, Дж. Сассман - Структура и интерпретация компьютерных программ (1108516) страница 32019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Поскольку большие программы вырастают из малых, нам необходимо обзавестисьарсеналом программных структур, в правильности которых мы можем быть уверены —их можно назвать идиомами — и научиться объединять их в структуры большего размера с помощью организационных методов, ценность которых также доказана. Эти методыподробно обсуждаются в книге, и их понимание существенно для участия в прометеевском предприятии под названием «программирование». Для умения создавать большие,значительные программы нет лучшего помощника, чем свободное владение мощнымиорганизационными методами.

И наоборот: затраты, связанные с написанием большихпрограмм, побуждают нас изобретать новые методы уменьшения веса функций и деталей, входящих в эти программы.В отличие от программ, компьютеры должны повиноваться законам физики. Если мыхотим, чтобы они работали быстро — по нескольку наносекунд на смену состояния, —электроны в их цепях не должны проходить большие расстояния (более полуметра).При этом тесно сконцентрированные в пространстве приборы излучают тепло, котороенужно куда-то отводить: так развилось изысканное инженерное искусство, призванноенаходить равновесие между обилием функций и плотностью расположения устройств.Так или иначе, аппаратура всегда работает ниже того уровня, на котором мы бы хотели программировать. Процессы, посредством которых наши программы на Лиспе переводятся в «машинные» программы, сами являются абстрактными моделями, которыемы воплощаем в программах.

Их изучение и реализация многое дают для пониманияорганизационных методов, направленных на программирование произвольных моделей.Разумеется, так можно смоделировать и сам компьютер. Подумайте об этом: поведениемельчайшего переключателя моделируется квантовой механикой, которая описываетсядифференциальными уравнениями, точное поведение которых фиксируется в численныхприближениях, представленных в виде компьютерных программ, которые выполняютсяна компьютере, составленном из ... — и так без конца!Раздельное выделение трех групп явлений — не просто вопрос тактического удобства. Хотя эти группы и остаются, как говорится, в голове, но, проводя это разделение,мы позволяем потоку символов между тремя группами двигаться быстрее.

В человеческом опыте с этим потоком по богатству, живости и обилию возможностей сравнитсяразве что сама эволюция жизни. Отношения между разумом человека, программами икомпьютером в лучшем случае метастабильны. Компьютерам никогда не хватает мощности и быстродействия. Каждый новый прорыв в технологии производства аппаратурыведет к появлению более масштабных программных проектов, новых организационныхпринципов и к обогащению абстрактных моделей. Пусть каждый читатель время от времени спрашивает себя: «А зачем, к чему все это?» — только не слишком часто, чтобыудовольствие от программирования не сменилось горечью философского тупика.Предисловие11Из тех программ, которые мы пишем, некоторые (но всегда меньше, чем хотелось бы)решают точные математические задачи, такие, как сортировка последовательности чиселили нахождение их максимума, проверка числа на простоту или вычисление квадратногокорня.

Такие программы называются алгоритмами, и об их оптимальном поведении известно довольно много, особенно в том, что касается двух важных параметров: временивыполнения и потребления памяти. Программист должен владеть хорошими алгоритмами и идиомами. Несмотря на то, что некоторые программы сопротивляются точнойспецификации, в обязанности программиста входит оценивать их производительность ивсе время пытаться ее улучшить.Лисп — ветеран, он используется уже около четверти века. Среди живых языковпрограммирования старше него только Фортран.

Эти два языка обслуживали нуждыважных прикладных областей: Фортран — естественно-научных и технических вычислений, а Лисп — искусственного интеллекта. Обе эти области по-прежнему важны, апрограммисты, работающие в них, настолько привязаны к этим двум языкам, что Лиспи Фортран вполне могут остаться в деле еще по крайней мере на четверть столетия.Лисп изменяется. Scheme, его диалект, используемый в этой книге, развился из первоначального Лиспа и отличается от него в некоторых важных отношениях: в частности,используются статические области связывания переменных, а функции могут возвращать в качестве значений другие функции.

По семантической структуре Scheme так жеблизка к Алголу 60, как и к ранним вариантам Лиспа. Алгол 60, который уже никогдане будет живым языком, продолжает жить в генах Scheme и Паскаля. Пожалуй, труднонайти две более разные культуры программирования, чем те, что образовались вокругэтих двух языков и используют их в качестве единой валюты. Паскаль служит для построения пирамид — впечатляющих, захватывающих статических структур, создаваемыхармиями, которые укладывают на места тяжелые плиты.

При помощи Лиспа порождаются организмы — впечатляющие, захватывающие динамические структуры, создаваемыекомандами, которые собирают их из мерцающих мириад более простых организмов. Организующие принципы в обоих случаях остаются одни и те же, за одним существеннымисключением: программист, пишущий на Лиспе, располагает на порядок большей творческой свободой в том, что касается функций, которые он создает для использованиядругими.

Программы на Лиспе населяют библиотеки функциями, которые оказываютсянастолько полезными, что они переживают породившие их приложения. Таким ростомполезности мы во многом обязаны списку — исконной лисповской структуре данных.Простота структуры списков и естественность их использования отражаются в удивительной общности функций. В Паскале обилие объявляемых структур данных ведет кспециализации функций, которая сдерживает и наказывает случайное взаимодействиемежду ними. Лучше иметь 100 функций, которые работают с одной структурой данных, чем 10 функций, работающих с 10 структурами.

В результате пирамиде приходитсянеподвижно стоять тысячелетиями; организм же будет развиваться или погибнет.Чтобы увидеть эту разницу, сравните подачу материала и упражнения в этой книге стем, что Вы найдете в любом вводном тексте, авторы которого используют Паскаль. Неподдавайтесь ошибочному впечатлению, будто этот текст может усвоить лишь студентMIT — представитель специфической породы, которая только там и встречается. Нет;именно такова должна быть всякая серьезная книга, посвященная программированию наЛиспе, вне зависимости от того, где и кто по ней учится.Учтите, что это текст о программировании, в отличие от большинства книг по Лиспу,12Предисловиекоторые используются для подготовки работников в области искусственного интеллекта.

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

В других программистских культурах такой наплыв задач рождает новые языки. В самом деле, в любой большой программной задаче один из важныхпринципов организации состоит в том, чтобы ограничить и изолировать потоки информации в отдельных модулях задачи, изобретая для этого язык. По мере приближенияк границам системы, где мы — люди — взаимодействуем чаще всего, эти языки обычно становятся все менее примитивными. В результате такие системы содержат сложныефункции по обработке языка, повторенные по многу раз. У Лиспа же синтаксис и семантика настолько просты, что синтаксический разбор можно считать элементарной задачей.Таким образом, методы синтаксического разбора не играют почти никакой роли в программах на Лиспе, и построение языковых процессоров редко служит препятствием дляроста и изменения больших Лисп-систем.

Наконец, именно эта простота синтаксиса исемантики возлагает бремя свободы на всех программистов на Лиспе. Никакую программу на Лиспе больше, чем в несколько строк длиной, невозможно написать, не населивее самостоятельными функциями. Находите новое и приспосабливайте; складывайте истройте новыми способами! Я поднимаю тост за программиста на Лиспе, укладывающегосвои мысли в гнезда скобок.Алан Дж. ПерлисНью-Хейвен, КоннектикутПредисловие ко второмуизданиюВозможно ли, что программы не похожини на что другое, что они предназначенына выброс; что вся штука состоит в том,чтобы всегда видеть в них мыльныйпузырь?Алан Дж.

ПерлисМатериал этой книги был основой вводного курса по информатике в MIT начиная с1980 года. К тому времени, как было выпущено первое издание, мы преподавали этотматериал в течение четырех лет, и прошло еще двенадцать лет до появления второгоиздания. Нам приятно, что наша работа была широко признана и включена в другиетексты. Мы видели, как наши ученики черпали идеи и программы из этой книги ина их основе строили новые компьютерные системы и языки.

Буквально по старомуталмудическому каламбуру, наши ученики стали нашими строителями. Мы рады, что унас такие одаренные ученики и такие превосходные строители.Готовя это издание, мы включили в него сотни поправок, которые нам подсказаликак наш собственный преподавательский опыт, так и советы коллег из MIT и другихмест.

Мы заново спроектировали большинство основных программных систем в этойкниге, включая систему обобщенной арифметики, интерпретаторы, имитатор регистровых машин и компилятор; кроме того, мы переписали все примеры программ так, чтобылюбая реализация Scheme, соответствующая стандарту Scheme IEEE (IEEE 1990), быласпособна выполнять этот код.В этом издании подчеркиваются несколько новых тем. Самая важная из них состоитв том, что центральную роль в вычислительных моделях играют различные подходы ковремени: объекты, обладающие состоянием, параллельное программирование, функциональное программирование, ленивые вычисления и недетерминистское программирование. Мы включили в текст новые разделы по параллельным вычислениям и недетерминизму и постарались интегрировать эту тему в материал книги на всем ее протяжении.Первое издание книги почти точно следовало программе нашего односеместровогокурса в MIT.

Рассмотреть весь материал, включая то, что добавлено во втором издании, в течение семестра будет невозможно, так что преподавателю придется выбирать.В нашей собственной практике мы иногда пропускаем раздел про логическое програм-14Предисловие ко второму изданиюмирование (раздел 4.4); наши студенты используют имитатор регистровых машин, номы не описываем его реализацию (раздел 5.2); наконец, мы даем лишь беглый обзоркомпилятора (раздел 5.5). Даже в таком виде курс остается интенсивным. Некоторыепреподаватели предпочтут ограничиться первыми тремя или четырьмя главами, оставляя прочий материал для последующих курсов.Сайт World Wide Web http://mitpress.mit.edu/sicp предоставляет поддержкупользователям этой книги. Там есть программы из книги, простые задания по программированию, сопроводительные материалы и реализации диалекта Лиспа Scheme.∗∗ В настоящее время (август 2005 г.) на сайте имеется также полный текст англоязычного издания.

— прим.перев.Предисловие к первому изданиюКомпьютер подобен скрипке. Представьтесебе новичка, который сначалаиспытывает проигрыватель, затемскрипку. Скрипка, говорит он, звучитужасно. Именно этот аргумент мыслышали от наших гуманитариев испециалистов по информатике.Компьютеры, говорят они, хороши дляопределенных целей, но они недостаточногибки. Так же и со скрипкой, и спишущей машинкой, пока Вы ненаучились их использовать.Марвин Минский.«Почему программирование — хорошийспособ выражения малопонятных итуманно сформулированных идей»«Структура и интерпретация компьютерных программ» — это вводный курс по информатике в Массачусетском Технологическом институте (MIT).

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6372
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее