jekahome.github.io/Computer-Science-Bookshelf
Цель - разобрать склад книг, найти ценное, важное и взять себе.
| Timeline | % |
|---|---|
| schedule | |
| reality |
Виджет обновлятся раз в неделю через cron github action, нужен для понимания пройденного времени.
Не эффективно читать все доступные книги, можно читать конкретные книги, дополнительно углублятся в интересующие темы.
Итого: 38 книг. Для ознакомления (очень грубого) потребуется по две недели на книгу, что составит 20 месяцев.
note
Сложность выбора
Нам трудно заставить себя напрягать мозг по простой причине - это тяжело и долго. Мы вынуждены испытывать дискомфорт, преодолевая шероховатость познания нового, и в итоге терпим боль. Мы ощущаем эту боль, когда лишены "обезболивающего" в виде уверенности в результате. Когда мы знаем, к чему ведут наши усилия, мы предвкушаем удовольствие - и нам уже не так больно.
Зачем мне подниматься на гору, если это больно? Пока я нахожусь у подножия и у меня есть все, что нужно, у меня нет здравых причин лишний раз напрягаться. Конечно, есть и другие причины: проактивность открывает новые горизонты, любопытство - проверить или испытать себя, или даже просто потому, что заблудился…
Но, рассуждая о последствиях, нужно учитывать:
- Дорогу назад. Это про выбор одного в ущерб другому, так как мы не можем одновременно быть в двух местах или откатить время назад. Потраченное на гору время мы не вернем, тогда как могли бы двигаться к другой горе.
- Потерю времени. Даже решив постичь новое и подняться в гору, мы не знаем, что на ней и что в результате получим. Эта гора лучше, чем вон та?
- Неверный результат. Мы удачно выбрали гору - она была единственной, - но зашли не в те пещеры. В итоге вышли с неполным результатом: мало «лута», обрывочные знания. Пропустили скрытые пещеры, неверно поняли смысл, потому что нужно было вникнуть глубже, а не брать поверхностный результат.
- Отсутствие цели. Мы нашли ту самую гору и те самые пещеры, все поняли. Но не считаем эти результаты ценными - в итоге не берем их себе и быстро забываем.
- Ограниченность времени и сил. Мы упорно действуем brute force: исследуем каждую пещеру и составляем подробную карту знаний. Но время заканчивается - и мы здохли, или кукуха переопределила цели, и мы остаемся в пещере медитировать.
Получается, нужен проводник - единомышленник с ответами о том, что находится на этих горах знаний. А мы сами решаем, что это может для нас значить и во что мы это оцениваем, опираясь на надежные данные. Но даже чтобы самостоятельно оценить эту эксклюзивную информацию, нужно уже обладать хотя бы какими-то знаниями. Чем они лучше, тем точнее в итоге будет ваш выбор.
Продолжая мысль дальше: мы должны открывать нужные двери в область знаний, смотреть, что там, делать себе пометки, чтобы вернуться для основательного углубления в тему, и быстро закрывать ее, чтобы открыть новую и успеть заполнить всё выделенное для этого время. И да, дверей и времени на минимальное знакомство в сумме больше, чем у нас вообще есть. Так что двери придется выбирать с умом.
tip
Эпистемическая радость (от греч. episteme — знание) — удовольствие от самого процесса понимания и познания сложного. Это положительное эмоциональное переживание, возникающее в процессе познания нового, понимания сложного и установления смысловых связей между элементами знания.
tip
Как говорят в педагогике: «Tell me and I forget, teach me and I remember, involve me and I learn» (Скажи мне — и я забуду, научи меня — и я запомню, вовлеки меня — и я научусь).
"Научи меня — и я запомню" — это ловушка, когда вы думаете, что знаете. Ведь вы не знаете того, чего не знаете, и вам кажется, что всё, что вы знаете, — это и есть всё, что существует («Эффект Даннинга — Крюгера» и «Иллюзия понимания»). Но вот в этом и кроется ловушка: пока вы не создадите или не воспроизведёте знание на практике, вы не поймёте, чего именно вы не знали.
Подход «Learn by doing» (с англ. — «обучение через действие» или «познание через делание») — это педагогическая философия, которая утверждает, что человек наиболее эффективно усваивает знания и навыки не через пассивное слушание лекций или чтение, а через непосредственный практический опыт и активные действия. При этом, чтобы не блуждать слишком долго, изобретая велосипед, следует опираться на теорию, но подавать её дозированно и по запросу (just-in-time), а не в виде огромной лекции перед стартом.
Книги/Ресурсы:
-
Основы архитектуры компьютера, культура кода, ...
- Чарльз Петцольд. КОД тайный язык информатики
- Turing Complete 🎁
- Стив Макконнелл - Совершенный код
- Мартин Фаулер. Рефакторинг. Улучшение проекта существующего кода 2019
- Брайан Керниган, Роб Пайк. Практика программирования 2004
- Дискретная математика
- Брайант Р. Э., О'Халларон Д. Р Компьютерные системы. Архитектура и программирование 2022
- Харольд Абельсон. Структура и интерпретация компьютерных программ (SICP) (первые 3 главы)
- Владстон Феррейра Фило. Теоретический минимум по Computer Science Unleashed and Distilled (краткий справочник)
-
Архитектура компьютера
- Джастис М. - Как на самом деле работают компьютеры 2022
- Ulrich Drepper. What Every Programmer Should Know About Memory
- Дэвид М. Харрис, Сара Л. Харрис - Цифровая схемотехника и архитектура компьютера RISC-V - 2021
- Single Cycle Processor RISC-V (RV32I + Zicsr, M) 🎁
- Архитектура компьютера (разное)
-
Операционная система
- Таненбаум Э. - Современные операционные системы. 4-е изд. 2015
- Operating Systems: Three Easy Pieces (OSTEP)
- xv6 Book
- Operating Systems: Design and Implementation (MINIX)
-
Системное программирование и Linux
- Таненбаум & Бос — Современные операционные системы
- Керриск — Linux API
- Роберт Лав — Linux системное программирование
- Стивенс & Раго — UNIX. Профессиональное программирование
- Роберт Лав. - Ядро Linux. Описание процесса разработки. 3-е изд. 2013
- Стивенс — Разработка сетевых приложений
-
Сети
- Олифер В., Олифер Н. Компьютерные сети. Принципы, технологии, протоколы: Юбилейное издание. 2021
- Куроуз. Компьютерные сети, нисходящий подход
-
Алгоритмы, структуры данных, автоматы, теория вычислений
- Кормен Томас, Ч.Лейзерсон, Р.Ривест, К.Штайн - Алгоритмы. Построение и анализ. - 3-изд 2013
- Хопкрофт Д., Мотвани Р., Ульман Дж. - Введение в теорию автоматов, языков и вычислений - 2008
- В. В. Григорьев-Голубев. Теория вероятностей и математическая статистика. Руководство по решению
-
Проектирование ПО, архитектура, clean-code
- Роберт Мартин. Чистая архитектура
- Роберт Мартин. Чистый код создание, анализ и рефакторинг 2019
- Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++
-
Backend, распределённые системы, большие данные
- Клеппман Мартин. Высоконагруженные приложения 2024
- Петров Алекс. Распределенные данные. Алгоритмы работы современных систем хранения информации 2021
- Стренгхольт Питхейн. Масштабируемые данные 2022
- Пол Батчер. Семь моделей конкуренции и параллелизма за семь недель
-
Компиляторы
- Альфред Ахо. Компиляторы. Принципы, технологии, инструменты
- Вирт Н. - Построение компиляторов (Классика программирования) - 2010
-
Embedded / Hardware / низкоуровневое
- Ori Pomerantz. Руководство по программированию модулей ядра Linux
- Денис Юричев. Reverse Engineering для начинающих
-
Разное
- Бугаенко Егор. Элегантные объекты. Java Edition 2018
- Бугаенко Егор. Наш код. Ремесло, профессия, искусство
License
This project includes CircuitJS1 under the GNU GPL license. All source code is available in this repository.