HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p><strong>СИКП - одноименная книга и легендарный учебный курс в MIT (Массачусетский технологический институт).</strong></p>
1 <p><strong>СИКП - одноименная книга и легендарный учебный курс в MIT (Массачусетский технологический институт).</strong></p>
2 <p>СИКП - не книга про языки программирования или разработку программного обеспечения, не книга по ООП, функциональному программированию или паттернам проектирования.</p>
2 <p>СИКП - не книга про языки программирования или разработку программного обеспечения, не книга по ООП, функциональному программированию или паттернам проектирования.</p>
3 <p>СИКП - книга об информатике (computer science). Восприятии компьютеров как абстрактных машин, используемых для манипулирования данными. Несмотря на то, что книга впервые опубликована в 1979, она до сих пор не потеряла свою актуальность и не потеряет в будущем. СИКП неизменно находится в топе лучших книг по обучению программированию на протяжении десятков лет.</p>
3 <p>СИКП - книга об информатике (computer science). Восприятии компьютеров как абстрактных машин, используемых для манипулирования данными. Несмотря на то, что книга впервые опубликована в 1979, она до сих пор не потеряла свою актуальность и не потеряет в будущем. СИКП неизменно находится в топе лучших книг по обучению программированию на протяжении десятков лет.</p>
4 <blockquote><p>This is one of the great classics of computer science. I bought my first copy 15 years ago, and I still don't feel I have learned everything the book has to teach.<em>- Paul Graham</em>.</p>
4 <blockquote><p>This is one of the great classics of computer science. I bought my first copy 15 years ago, and I still don't feel I have learned everything the book has to teach.<em>- Paul Graham</em>.</p>
5 </blockquote><p>Стоит ли её читать? Однозначно стоит всем разработчикам на любых языках программирования с любым опытом. СИКП - достаточно сложная книга, поэтому появилось руководство, которое вы прямо сейчас читаете.</p>
5 </blockquote><p>Стоит ли её читать? Однозначно стоит всем разработчикам на любых языках программирования с любым опытом. СИКП - достаточно сложная книга, поэтому появилось руководство, которое вы прямо сейчас читаете.</p>
6 <h2>Содержание</h2>
6 <h2>Содержание</h2>
7 <ul><li><a>Очень краткое содержание</a></li>
7 <ul><li><a>Очень краткое содержание</a></li>
8 <li><a>Рекомендации</a></li>
8 <li><a>Рекомендации</a></li>
9 <li><a>Оформление</a></li>
9 <li><a>Оформление</a></li>
10 <li><a>Дополнительные ссылки</a></li>
10 <li><a>Дополнительные ссылки</a></li>
11 </ul><h2>Очень краткое содержание</h2>
11 </ul><h2>Очень краткое содержание</h2>
12 <h3>Абстракция с помощью функций</h3>
12 <h3>Абстракция с помощью функций</h3>
13 <ol><li>Элементы программ<ul><li>Выражения</li>
13 <ol><li>Элементы программ<ul><li>Выражения</li>
14 <li>Вычислительные стратегии</li>
14 <li>Вычислительные стратегии</li>
15 <li>Подстановочная модель вычислений</li>
15 <li>Подстановочная модель вычислений</li>
16 </ul></li>
16 </ul></li>
17 <li>Функции и процессы порождаемые ими<ul><li>Линейная рекурсия и итерация</li>
17 <li>Функции и процессы порождаемые ими<ul><li>Линейная рекурсия и итерация</li>
18 <li>Древовидная рекурсия</li>
18 <li>Древовидная рекурсия</li>
19 </ul></li>
19 </ul></li>
20 <li>Функции высшего порядка<ul><li>Функции как аргументы</li>
20 <li>Функции высшего порядка<ul><li>Функции как аргументы</li>
21 <li>Функции как обобщения</li>
21 <li>Функции как обобщения</li>
22 <li>Функции как возвращаемые значения</li>
22 <li>Функции как возвращаемые значения</li>
23 </ul></li>
23 </ul></li>
24 </ol><h3>Абстракция с помощью данных</h3>
24 </ol><h3>Абстракция с помощью данных</h3>
25 <ol><li>Введение в абстракцию данных<ul><li>Барьеры абстракции</li>
25 <ol><li>Введение в абстракцию данных<ul><li>Барьеры абстракции</li>
26 <li>Что такое данные?</li>
26 <li>Что такое данные?</li>
27 </ul></li>
27 </ul></li>
28 <li>Иерархические данные и свойство замыкания<ul><li>Представление последовательностей</li>
28 <li>Иерархические данные и свойство замыкания<ul><li>Представление последовательностей</li>
29 <li>Иерархические структуры</li>
29 <li>Иерархические структуры</li>
30 <li>Последовательности как стандартные интерфейсы</li>
30 <li>Последовательности как стандартные интерфейсы</li>
31 </ul></li>
31 </ul></li>
32 <li>Символьные данные<ul><li>Цитирование</li>
32 <li>Символьные данные<ul><li>Цитирование</li>
33 </ul></li>
33 </ul></li>
34 <li>Множественные представления абстрактных данных<ul><li>Тегирование данных</li>
34 <li>Множественные представления абстрактных данных<ul><li>Тегирование данных</li>
35 <li>Программирование управляемое данными. Аддитивность.</li>
35 <li>Программирование управляемое данными. Аддитивность.</li>
36 </ul></li>
36 </ul></li>
37 </ol><h3>Модульность, Объекты и Состояние</h3>
37 </ol><h3>Модульность, Объекты и Состояние</h3>
38 <ol><li>Присваивание и локальное состояние<ul><li>Преимущества присваивания</li>
38 <ol><li>Присваивание и локальное состояние<ul><li>Преимущества присваивания</li>
39 <li>Недостатки присваивания</li>
39 <li>Недостатки присваивания</li>
40 </ul></li>
40 </ul></li>
41 <li>Модель с окружениями<ul><li>Правила вычисления</li>
41 <li>Модель с окружениями<ul><li>Правила вычисления</li>
42 <li>Применение</li>
42 <li>Применение</li>
43 <li>Фреймы как репозитории локального состояния</li>
43 <li>Фреймы как репозитории локального состояния</li>
44 </ul></li>
44 </ul></li>
45 <li>Моделирование с изменяемыми данными<ul><li>Изменяемый список</li>
45 <li>Моделирование с изменяемыми данными<ul><li>Изменяемый список</li>
46 <li>Представление очереди</li>
46 <li>Представление очереди</li>
47 <li>Представление таблиц</li>
47 <li>Представление таблиц</li>
48 </ul></li>
48 </ul></li>
49 <li>Многозадачность</li>
49 <li>Многозадачность</li>
50 <li>Потоки</li>
50 <li>Потоки</li>
51 </ol><h3>Метаязыковые абстракции</h3>
51 </ol><h3>Метаязыковые абстракции</h3>
52 <p>...</p>
52 <p>...</p>
53 <h3>Вычисление с помощью регистровых машин</h3>
53 <h3>Вычисление с помощью регистровых машин</h3>
54 <p>...</p>
54 <p>...</p>
55 <h2>Рекомендации</h2>
55 <h2>Рекомендации</h2>
56 <p>Первое, что нужно понимать: СИКП - не просто книга. Это университетский курс, записанный в виде книги. Он сложный и объёмный, его бесполезно проходить без практики. Практику придумывать не придётся. После каждой главы есть блок задач, которые авторы просят выполнить. Некоторые из них сугубо математические (просят что-то доказать), либо подразумевают хорошую математическую базу. Их можно и даже нужно пропускать, иначе вы можете очень быстро потерять мотивацию.</p>
56 <p>Первое, что нужно понимать: СИКП - не просто книга. Это университетский курс, записанный в виде книги. Он сложный и объёмный, его бесполезно проходить без практики. Практику придумывать не придётся. После каждой главы есть блок задач, которые авторы просят выполнить. Некоторые из них сугубо математические (просят что-то доказать), либо подразумевают хорошую математическую базу. Их можно и даже нужно пропускать, иначе вы можете очень быстро потерять мотивацию.</p>
57 <h3>Сколько читать</h3>
57 <h3>Сколько читать</h3>
58 <p>СИКП условно можно разделить на две части. В первую часть входят главы 1, 2 и 3. Во вторую - 4 и 5. Разница в том, что во вторую часть входят главы, копающие очень глубоко, и пройти сквозь них может только по-настоящему увлеченный человек. По этой причине Хекслет рекомендует поставить себе планкой прохождение первых трех глав. Остальное можно с легкостью отложить на потом.</p>
58 <p>СИКП условно можно разделить на две части. В первую часть входят главы 1, 2 и 3. Во вторую - 4 и 5. Разница в том, что во вторую часть входят главы, копающие очень глубоко, и пройти сквозь них может только по-настоящему увлеченный человек. По этой причине Хекслет рекомендует поставить себе планкой прохождение первых трех глав. Остальное можно с легкостью отложить на потом.</p>
59 <h3>Язык</h3>
59 <h3>Язык</h3>
60 <p>Для примеров и практики в книге используется язык Scheme (Ским), созданный авторами курса. Это один из диалектов семейства Lisp. Как и полагается любому Lisp-языку, Scheme имеет примитивный синтаксис, который можно изучить буквально за несколько часов. Он очень необычен для тех, кто имел дело только с широко распространенными языками, но обладает рядом серьезных достоинств, о которых говорится в книге.</p>
60 <p>Для примеров и практики в книге используется язык Scheme (Ским), созданный авторами курса. Это один из диалектов семейства Lisp. Как и полагается любому Lisp-языку, Scheme имеет примитивный синтаксис, который можно изучить буквально за несколько часов. Он очень необычен для тех, кто имел дело только с широко распространенными языками, но обладает рядом серьезных достоинств, о которых говорится в книге.</p>
61 <p>Его выбор, в качестве основного языка для курса обоснован тем, что Scheme позволяет сосредоточиться на сути вещей вместо синтаксиса, увидеть чистые концепции в первозданном виде. Scheme как и любой Лисп, обладает невероятно высокой выразительностью благодаря тому, что в языке всё есть выражение, а инструкции отсутствуют вообще.</p>
61 <p>Его выбор, в качестве основного языка для курса обоснован тем, что Scheme позволяет сосредоточиться на сути вещей вместо синтаксиса, увидеть чистые концепции в первозданном виде. Scheme как и любой Лисп, обладает невероятно высокой выразительностью благодаря тому, что в языке всё есть выражение, а инструкции отсутствуют вообще.</p>
62 <p>Вторая причина - гомоиконность. Свойство языков, в которых данные и код - одно и тоже. Этот тезис сложно понять на словах, его нужно прочувствовать на практике. Есть еще и третья причина - макросы, но они в книге не используются.</p>
62 <p>Вторая причина - гомоиконность. Свойство языков, в которых данные и код - одно и тоже. Этот тезис сложно понять на словах, его нужно прочувствовать на практике. Есть еще и третья причина - макросы, но они в книге не используются.</p>
63 <p>Сам язык Scheme, это в первую очередь стандарт языка плюс разные реализации этого стандарта. На данный момент один из самых развитых -- и продолжающих развиваться -- потомков Scheme, это язык<a>Racket</a>. Хекслет рекомендует проходить СИКП именно на Racket. Специально для этого гайда мы подготовили<a>репозиторий</a>, который можно использовать как основу для кода. В репозиторий стоит заглянуть хотя бы для того, чтобы узнать, как настроить Racket на совместимость именно с тем стандартом Scheme, который используется для примеров кода в книге: немногие существующие реализации Scheme позволяют воссоздать "то самое" окружение, к счастью, Racket может! Не забудьте правильно настроить редактор: Lisp языки относятся к тем языкам, для которых нужна поддержка со стороны редактора для комфортной работы.</p>
63 <p>Сам язык Scheme, это в первую очередь стандарт языка плюс разные реализации этого стандарта. На данный момент один из самых развитых -- и продолжающих развиваться -- потомков Scheme, это язык<a>Racket</a>. Хекслет рекомендует проходить СИКП именно на Racket. Специально для этого гайда мы подготовили<a>репозиторий</a>, который можно использовать как основу для кода. В репозиторий стоит заглянуть хотя бы для того, чтобы узнать, как настроить Racket на совместимость именно с тем стандартом Scheme, который используется для примеров кода в книге: немногие существующие реализации Scheme позволяют воссоздать "то самое" окружение, к счастью, Racket может! Не забудьте правильно настроить редактор: Lisp языки относятся к тем языкам, для которых нужна поддержка со стороны редактора для комфортной работы.</p>
64 <h2>Оформление</h2>
64 <h2>Оформление</h2>
65 <p>На Гитхабе<a>можно найти</a>множество репозиториев, в которых лежат решения задач из СИКП на всех возможных языках программирования. Мы настоятельно рекомендуем поступать так же: создать репозиторий в своем аккаунте и выкладывать в него все свои решения. Идеально, если каждое решение будет сопровождаться<a>тестами</a>. Такой подход хорош не только тем, что вы дополнительно прокачиваетесь в git и получаете дополнительную мотивацию, но и тем, что у вас появляется код, который можно показать при поиске работы. Более того, велика вероятность, что собеседовать вас будет человек, знающий про СИКП. Это добавит очков в карму и даст возможность продуктивно пообщаться.</p>
65 <p>На Гитхабе<a>можно найти</a>множество репозиториев, в которых лежат решения задач из СИКП на всех возможных языках программирования. Мы настоятельно рекомендуем поступать так же: создать репозиторий в своем аккаунте и выкладывать в него все свои решения. Идеально, если каждое решение будет сопровождаться<a>тестами</a>. Такой подход хорош не только тем, что вы дополнительно прокачиваетесь в git и получаете дополнительную мотивацию, но и тем, что у вас появляется код, который можно показать при поиске работы. Более того, велика вероятность, что собеседовать вас будет человек, знающий про СИКП. Это добавит очков в карму и даст возможность продуктивно пообщаться.</p>
66 <h2>Дополнительные ссылки</h2>
66 <h2>Дополнительные ссылки</h2>
67 <ul><li><p><a>Курс: Структура и интерпретация компьютерных программ (SICP по-русски)</a></p>
67 <ul><li><p><a>Курс: Структура и интерпретация компьютерных программ (SICP по-русски)</a></p>
68 </li>
68 </li>
69 <li><p><a>Сервис для отслеживания прогресса изучения книги</a></p>
69 <li><p><a>Сервис для отслеживания прогресса изучения книги</a></p>
70 </li>
70 </li>
71 <li><p><a>Лекции от авторов курса переведенные на русский язык</a></p>
71 <li><p><a>Лекции от авторов курса переведенные на русский язык</a></p>
72 </li>
72 </li>
73 <li><p><a>СИКП в Озон</a></p>
73 <li><p><a>СИКП в Озон</a></p>
74 </li>
74 </li>
75 </ul>
75 </ul>