Книга структура и интерпретация компьютерных программ

SICP или Азбука для настоящих программистов

13 August, 2007 (18:19) | О книге

Что же такое SICP и чем она так хороша?

Первое издание книги Structure and Interpretation of Computer Programs профессоров Harold Abelson и Jerry Sussman было выпущено издательством MIT Press в 1982 году по материалом базового вводного курса для студентов, изучающих программирование и электронику в одном из известнейших технических вузов США Massachusetts Institute of Technology (MIT). MIT уверенно входит в пятерку сильнейших вузов мира в области computer science на протяжении десятилетий и заслуженно является эталоном для других университетов. В 1996 году вышло второе издание книги, где текст и упражнения были несколько переработаны.

Как я уже сказал, в основу книги SICP был положен читаюшийся студентам MIT с 1978 года вводный курс по программированию, широко известный под своим номером 6.001. Этот курс отличается от подобных начальных курсов тем, что фокусируется на обучении тому, как составлять сложные программы, и на фундаментальных основах программирования. В качестве языка программирования, с помощью которого производится обучение, выбран разработанный в MIT диалект Лиспа под названием Scheme.

Хочу подчеркнуть, что не следует обманываться тем фактом, что курс называется вводным и рассчитан на людей, которые ранее могли и не иметь опыта программирования. Курс (и книга) очень не просты. Не затрагивая мишуру модных технологий, не вдаваясь в детали разнообразных алгоритмов, этот курс, тем не менее бросает вызов уму и способностям слушателей из-за глубины проработки основополагающих моментов, краеугольных камней науки о программировании.

Книга, как и лежащий у ее истоков курс, учит думать как истинный программист и прививает вкус к правильному программированию. Она не учит языкам и технологиям. Ее задача выше: научить программистскому мышлению.

Естественно, со временем книга обрела популярность сначала в США, а затем и во многих уголках мира. Вот далеко не полный список школ и вузов, использующих SICP в своей программе.

Несмотря на всемирную известность и славную 25-летнюю историю, у нас книга “Структура и интерпретация компьютерных программ” практически неизвестна. Весьма вероятно, что до сих пор вы мало что слышали о ней. Это прискорбно, но вполне объяснимо. Противостояние СССР и США в Холодной войне, приоритет другим языкам и школам программирования в обучении информатике на территории бывшего Советского Союза, а позднее безнаказанное использование нелицензионного программного обеспечения – все это выступило факторами, сделавшими у нас UNIX-системы, функциональные языки программирования и SICP диковинками в мире компьютерного образования.

Ни в коей мере не желая умалить достоинства других учебных книг по основам программирования (хочется особо отметить отличные работы Никлауса Вирта и Дональда Кнута), я хочу подчеркнуть важность книги SICP и восполнить недостаток информации по ней для русскоязычных любителей программирования. К счастью, в 2006 году издательством “Добросвет” был выпущен перевод книги Structure and Iterpretation of Computer Programs на русский язык

Тираж книги составил по слухам 1000 экземпляров, что до обидного мало. Из-за этого приобрести книгу в данный момент в магазинах вне Москвы невозможно. Тем не менее сам факт издания перевода, пусть и через 25 (!) лет (только вдумайтесь в фантастичность этого срока в калейдоскопически быстро изменяющихся реалиях разработки программного обеспечения) после выхода в свет оригинала, дарит огонек надежды на то, что SICP еще сыграет свою великую роль в обучении программированию наших студентов. Ту роль, с которой она блестяще справляется десятилетиями в лучших вузах мира

К счастью, в 2006 году издательством “Добросвет” был выпущен перевод книги Structure and Iterpretation of Computer Programs на русский язык. Тираж книги составил по слухам 1000 экземпляров, что до обидного мало. Из-за этого приобрести книгу в данный момент в магазинах вне Москвы невозможно. Тем не менее сам факт издания перевода, пусть и через 25 (!) лет (только вдумайтесь в фантастичность этого срока в калейдоскопически быстро изменяющихся реалиях разработки программного обеспечения) после выхода в свет оригинала, дарит огонек надежды на то, что SICP еще сыграет свою великую роль в обучении программированию наших студентов. Ту роль, с которой она блестяще справляется десятилетиями в лучших вузах мира.

« В путь!

Решение упражнений »

Оформление

На Гитхабе можно найти множество репозиториев, в которых лежат решения задач из СИКП на всех возможных языках программирования. Мы настоятельно рекомендуем поступать также: создать репозиторий в своем аккаунте и выкладывать в него все свои решения. Идеально, если каждое решение будет сопровождаться тестами. Такой подход хорош не только тем, что вы дополнительно прокачиваетесь в git и получаете дополнительную мотивацию, но и тем, что у вас появляется код, который можно показать при поиске работы. Более того, велика вероятность, что собеседовать вас будет человек, знающий про СИКП. Это добавит очков в карму и даст возможность продуктивно пообщаться.

Category: Материалы

План лекций по SICP из Питера

2 March, 2008 (22:45) | Материалы, Преподавание |

Евгений Кирпичев с февраля этого года читает в ИТМО СПбГУ спецкурс, основанный на книге и видео-лекциях “Структура и интерпретация компьютерных программ”. Планы своих лекций Евгений выложил в открытый доступ на вики питерской Haskell User Group. Пока что доступны две первые лекции: Лекция 1. Основы лямбда-исчисления и лиспа. Итерация и рекурсия. Лекция 2. Функции высшего порядка

Видео лекции SICP. Самые первые впечатления.

9 February, 2008 (13:22) | Видео, Материалы |

Итак, после сегодняшней счастливой развязки истории с заказом дисков с видео Абельсона и Сассмана я успел только бегло проглядеть сами видео-ролики. Потому впечатления, которые есть у меня сейчас, предельно поверхностны и наверняка очень субъективны. Тем не менее, считаю, что есть смысл ими поделиться хотя бы для того, чтобы потом после более близкого знакомства оценить степень

Как получить видео лекции SICP, если у вас нет безлимитки. Часть 3.

9 February, 2008 (13:02) | Видео, Материалы |

Окончание истории. Начало читайте здесь, а продолжение здесь. Субботним зимним утром я отправился на почтовое отделение с целью получить свои законные диски с видео-материалами SICP, которые по всем расчетам просто обязаны были дойти до нашей забытой богом почты. После непродолжительного разбирательства выяснилось, что бандероль действительно уже пришла и ждет своего адресата. Заплатив 42 гривны 10

Как получить видео лекции SICP, если у вас нет безлимитки. Часть 2.

7 February, 2008 (23:23) | Видео, Материалы |

Продолжение истории. Начало читайте здесь. При столкновении красивой теории с жестокой реальностью рождается горькая практика. В моем случае оптимистичные ожидания получить диски с видео лекций курса “Структура и интерпретация компьютерных программ” еще к концу прошлой недели не оправдались. Сегодня прошло 9 дней с момента отправки бандероли, и я посетил свое почтовое отделение, ожидая обнаружить диски

Как получить видео лекции SICP, если у вас нет безлимитки. Часть 1.

28 January, 2008 (21:19) | Видео, Материалы |

Вы, конечно же, знаете, что видео лекций по SICP, читавшихся Абельсоном и Сассманом для работников Hewlett Packard в 1986 году, выложены в публичный доступ и доступны для скачивания всем желающим. Эти 20 лекций охватывают материал всей книги (правда, первого издания) и отзывы о них очень хорошие. Проблема лично для меня заключается в том, что даже

Свежие видео SICP из Беркли

24 January, 2008 (07:51) | Видео, Материалы |

Вчера в Университете Беркли (UC Berkeley) стартовал курс CS61A: Structure and Interpretation of Computer Programs. Курс продлится до мая этого года. Читать лекции будет Брайан Харви. Самое замечательное то, что вебкасты (видео, доступное онлайн) этих лекций оперативно выкладываются на сайте университета. Вчерашняя лекция (чуть больше 50 минут) уже там и доступна в форматах real media

Разноязычный SICP

2 October, 2007 (19:11) | Материалы |

Нашел ссылку на замечательное собрание примеров из SICP на разных языках программирования. В списке фигурируют совершенно разные языки с противоположных полюсов планеты программирования: от C++ до Prolog и от Forth до JavaScript. К сожалению, для большинства языков список примеров неполон, что дает и вам возможность поучаствовать в общем полезном деле.

Самоучка

24 September, 2007 (19:18) | Материалы |

Привет, я вернулся из отпуска и уже втягиваюсь в рабочий процесс. Сегодня продолжу публикацию решений из SICP. Рассматривая вчера накопившуюся корреспонденцию, я наткнулся на блог Майкла Харрисона (Michael Harrison), именующего себя Самоучкой (Autodidact). Майкл является профессиональным веб-программистом из США, который, как и многие его коллеги, не имеет формального образования в области компьютерных наук. С сентября он начал

SICP в Формате Texinfo

3 September, 2007 (19:17) | Материалы |

Всем, кто хочет читать SICP на Unix-ах с помощью Emacs будет приятно узнать, что SICP доступен также в формате Texinfo на сайте Нила Ван Дайка. Скачивайте и читайте.

Рекомендации

Первое, что нужно понимать: СИКП — не просто книга. Это университетский курс, записанный в виде книги. Он сложный и объёмный, его бесполезно проходить без практики. Практику придумывать не придётся. После каждой главы есть блок задач, которые авторы просят выполнить. Некоторые из них сугубо математические (просят что-то доказать), либо подразумевают хорошую математическую базу. Их можно и даже нужно пропускать, иначе вы можете очень быстро потерять мотивацию.

Сколько читать

СИКП условно можно разделить на две части. В первую часть входят главы 1, 2 и 3. Во вторую — 4 и 5. Разница в том, что во вторую часть входят главы, копающие очень глубоко, и пройти сквозь них может только по-настоящему увлеченный человек. По этой причине Хекслет рекомендует поставить себе планкой прохождение первых трех глав. Остальное можно с легкостью отложить на потом.

Язык

Для примеров и практики в книге используется язык Scheme (Ским), созданный авторами курса. Это один из диалектов семейства Lisp. Как и полагается любому Lisp-языку, Scheme имеет примитивный синтаксис, который можно изучить буквально за несколько часов. Он очень необычен для тех, кто имел дело только с широко распространенными языками, но обладает рядом серьезных достоинств, о которых говорится в книге.

Его выбор, в качестве основного языка для курса обоснован тем, что Scheme позволяет сосредоточиться на сути вещей вместо синтаксиса, увидеть чистые концепции в первозданном виде. Scheme как и любой Лисп, обладает невероятно высокой выразительностью благодаря тому, что в языке всё есть выражение, а инструкции отсутствуют вообще.

Вторая причина — гомоиконность. Свойство языков, в которых данные и код — одно и тоже. Этот тезис сложно понять на словах, его нужно прочувствовать на практике. Есть еще и третья причина — макросы, но они в книге не используются.

Сам язык Scheme, это в первую очередь стандарт языка плюс разные реализации этого стандарта. На данный момент один из самых развитых – и продолжающих развиваться – потомков Scheme, это язык Racket. Хекслет рекомендует проходить СИКП именно на Racket. Специально для этого гайда мы подготовили репозиторий, который можно использовать как основу для кода. В репозиторий стоит заглянуть хотя бы для того, чтобы узнать, как настроить Racket на совместимость именно с тем стандартом Scheme, который используется для примеров кода в книге: немногие существующие реализации Scheme позволяют воссоздать “то самое” окружение, к счастью, Racket может! Не забудьте правильно настроить редактор: Lisp языки относятся к тем языкам, для которых нужна поддержка со стороны редактора для комфортной работы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector