What’s up guys?
Computer Science – грубо говоря - наука о компьютерах. Она объединяет всё, что программист должен знать о компьютерах и работе с ними для создания эффективных программ и алгоритмов. Программисты бывают разные, и как правило отличаются только языком, на котором пишут, но всех их объединяет необходимость понимать основы этой науки для понимания того, как работает компьютер.
В этой статье мы поговорим о самых полезных книгах по Computer Science для самых разных уровней, которые дадут вам понимание того, как работают компьютеры и всё, что с этим связанно. Предлагаю незамедлительно начинать, и начнём мы с книг для новичков (по моему мнению).
Книги для новичков
Основных книг тут три:
Чарльз Петцольд – Код. Тайный язык информатики. Как говорит сам автор: «Необычная экскурсия по истории цифровых технологий, сформировавших современную эпоху». Книга для новичков действительно не плохая, она рассказывает о многих аспектах работы компьютера более-менее простым языком (если в школе вы учили математику и информатику – вы поймёте). Для старта это не плохая книга.
Владстон Феррейра Фило – Теоретический минимум по Computer Science (две книги, зелёная и оранжевая). Как написано на обложке первой части: «Все, что нужно знать программисту и разработчику». А вторая часть повествует про компьютерные сети, криптографию, науку о данных и машинном обучении. Эти книги действительно полезны, но лично мне не хватил информации из них для полного погружения в темы. Но они дают фундаментальную базу, знания в которой можно углубить, прочитав книги из следующих разделов. Для новичков они хорошо подойдут.
Так же для новичков могу порекомендовать почитать что-нибудь про ту ОС, которую вы используете. По поводу Windows – книгу посоветовать не могу, а по Linux:
Колисниченко Д.Н. - Linux на примерах. Практика практика и только практика. Если у вас стоит цель освоить основные команды и работу в Linux, то читать всю книгу нет необходимости, но в любом случае – рекомендую.
На этом книги для новичков, которые я могу посоветовать, закончились. Переходим к базовым и более продвинутым книгам.
Для среднего уровня и выше
Архитектура компьютера
В этой категории две книги:
Эндрю Таненбаум и Т. Остин – Архитектура Компьютера. Это классика, это база. Одна из самых полных, на мой взгляд, книг, раскрывающих тему Архитектуры Компьютера. Книга рассказывает всё об устройстве компьютера, начиная с основ организации компьютерных систем, заканчивая уровнем ассемблера и параллельными компьютерными архитектурами. Книга максимально подробная – рекомендую.
Ноам Нисан и Шимон Шокен - Архитектура Компьютерных Систем. Более общая книга, которая больше будет полезна для того, чтобы научиться собирать компьютеры и понять, как всё это работает. Но книга Таненбаума мне нравится больше.
Компьютерные сети
Э. Таененбаум и Д. Уэзеролл - Компьютерные Сети. Аналогично книге из предыдущей категории – это классика. Кинга переиздавалась уже много раз. Рассказывает практически всё о компьютерных сетях, начиная с физического уровня, заканчивая безопасностью в сетях. Как и некоторые другие книги этого автора может быть немного сложной для чтения, хотя, как по мне – нормально.
Больше по этой теме посоветовать ничего не могу.
Операционные системы
В этой категории три книги:
Э. Таненбаум. И Х. Бос – Современные Операционные Системы. Это так же, как и все остальные книги – классика. Описывает общие для всех ОС концепции работы и рассматривает конкретные примеры. В этой книги есть всё, что нужно знать для понимания работы ОС.
Эви Немент и др. - Unix и Linux. Руководство Системного Администратора. Если вы хотите в совершенстве овладеть Linux – эта книга для вас. Она максимально подробно рассказывает об администрировании, работе с сетями, хранении данных и прочих процессах на Unix – подобных ОС.
Марк Руссинович и др. – Внутренние устройство Windows. Из названия книги, как мне кажется, всё понятно. Она рассказывает о том, как работает Windows. В книге рассматриваются такие темы как: архитектура системы, процессы, потоки, управление памятью и конечно безопасность.
Алгоритмы
Из этой категории я могу посоветовать серию книг:
Роберт Седжвик – Фундаментальные алгоритмы на С++. Даже если вы не знаете С++ - вам будет всё понятно, автор даёт подробные объяснения происходящего в алгоритме. Если знаете – прекрасно. По факту, книги содержат описание всех самых важных алгоритмов в CS и их вам должно хватить. Принцип работы каждого алгоритма описывается достаточно подробно.
И ещё момент, специально для тех, кто хочет полностью понимать происходящее, а книгах Таненбаума:
В.И. Юров – Assembler - *без комментариев
В целом, по теме CS – это всё. Не стоит так же забывать и про разнообразные разделы математики и физики, необходимые для понимания материала большинства из книги по Computer Science. Так же могу дать несколько советов по чтению подобных книг:
Не перегружайте себя информацией. Не надо читать слишком много за раз.
Как только встретили что-то, что вам в книге не понятно – сразу изучите эту тему. Если этого не сделать – будет только хуже.
Практикуйте всё, что можно практиковать. Если в книги приводится какой-либо алгоритм – поймите, как он работает и попробуйте воссоздать его, если программа – перепишите и разберитесь.
Пересказываете прочитанное. После прочтения теоретической, постарайтесь её пересказать (самому себе или кому-то другому) максимально подробно. Так вы лучше запомните материал.
Если есть возможность – читайте книги в оригинале. Так у вас меньше шансов наткнуться на ошибки переводчика и редактора.
Все книги, упомянутые в статье вы можете скачать здесь.
На этом подборка книг подошла к концу, всем, кто дочитал до этого момента спасибо!
Комментарии (13)
mamchyts
17.11.2023 17:25+1А вот мне наоборот зашла серия "Грокаем". Есть почти все книги из серии. Хорошие книги для самого первого ознакомления с технологиями. Да, есть опечатки и неточности, но это есть во всех книгах. Я рассаматриваю данную серию, как интро. Дальше уже сам решаешь, хочешь вникать глуюже или нет.
includedlibrary
17.11.2023 17:25Я только "Грокаем Алгоритмы" читал, может остальные книги серии нормальные, я не знаю
AndreyDmitriev
17.11.2023 17:25Помилосердствуйте, "Ассемблеру" Юрова - двадцать лет книжке, там всё заканчивается на MMX (да и то без примеров), часть уже не актуальна, а 64 бит вообще не рассматривается.
Если уж брать книжку по ассемблеру на русском, то хотя бы вот эту:
pOmelchenko
17.11.2023 17:25+3Как-то я не заметил того момента, когда на хабре стало можно постить ссылки на варезные ресурсы.
redf1sh
17.11.2023 17:25+5Если уж начали писать про книги, то упоминайте классику.
Про алгоритмы, если уж для "профи", то почему нет "Алгоритмы построение и анализ" Кормена и Штайна?
Можно сюда же запихнуть "Алгоритмические трюки для программистов" Уоррена
Более специфичные вещи: "Text Algorithms" Maxime Crochemore
По архитектуре компьютера первый раз слышу про Ноам Нисана, но не приведены классические книги: Харрис и Харрис "Цифровая схемотехника и архитектура компьютера, Дэвид М. Харрис" и для мощных ребят "Computer Architecture A Quantitative Approach" за авторством Hennesy и Patterson.По ОС почему-то нет 4х томника Андерсона "Operation Systems Principles and Practice" и "Операционные системы Внутренняя структура и принципы проектирования" за авторством Столлингса. А про bash и команды Linux stackoverflow расскажет лучше, когда будете решать конкретную задачу.
Почему-то нет книг по компиляторам. Вроде тоже CS. Cooper & Torzon "Engineering a compiler", фиолетовый дракон, "Advanced compiler design and implementation" Steven S. Muchnick, "Modern Compiler Implementation in C" Andrew W. Appel, "Linkers & Loaders" John R. Levine
Виртуальные машины: "Virtual machines" Smith & Nair.
Также в CS входят ещё куча всего, например программирование графики и компьютерное зрение, распределённые системы, базы данных и тд.
Pashka23
17.11.2023 17:25По архитектуре компьютера первый раз слышу про Ноам Нисана, но не приведены классические книги
То что вы в первый раз про него слышите это ваши персональные проблемы. И книга, и курс на котором она базируется ("From nand to Tetris") широко известны по всему миру, за исключением разве что постсоветских стран (видимо, из-за долгого отсутствия перевода). Книга, кстати, включает в себя проекты по разработке и компилятора, и виртуальной машины, и ОС. И для вхождения в тему, имхо, подходит на порядок лучше Таненбаума и Харриссов вместе взятых.
justlx
17.11.2023 17:25
nameisBegemot
17.11.2023 17:25-1Компьютер саенс не совсем про науку о компьютерах. В скорее больше про программную начинку - программирование, алгоритмы и прочее.
Так, если про линуск это в тему. То ассемблер, при всем уважением к этому языку, в современных реалиях исключительно как по фану. И если уже потребуется, то речь не о компьютер раенс, а про программную инженерию.
Имхо, конечно
includedlibrary
Все книги хорошие, все, кроме "Грокаем Алгоритмы". По мне так это бесполезная трата времени, нормально там алгоритмы не объясняются. Если я открою Кормена и прочту главу про хэш-таблицы, я смогу их реализовать. Если я открую "Грокаем Алгоритмы" и прочту главу про хэш-таблицу, я не смогу реализовать ничего.
YarIkGU Автор
Да, есть такое, сейчас исправлю. И ещё, в книгах серии "Грокаем" что-либо очень много ошибок в переводе или в самом материале.
MiyuHogosha
Часто это ошибки перевода\обновления до новых версий. Читал оригиналы, к ним полно еррат. Наши издатели конечно же ерраты не публикуют