Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.