Computer Science: книги, от новичка до профи
What«s up guys?
Computer Science — грубо говоря — наука о компьютерах. Она объединяет всё, что программист должен знать о компьютерах и работе с ними для создания эффективных программ и алгоритмов. Программисты бывают разные, и как правило отличаются только языком, на котором пишут, но всех их объединяет необходимость понимать основы этой науки для понимания того, как работает компьютер.
В этой статье мы поговорим о самых полезных книгах по Computer Science для самых разных уровней, которые дадут вам понимание того, как работают компьютеры и всё, что с этим связанно. Предлагаю незамедлительно начинать, и начнём мы с книг для новичков (по моему мнению).
Книги для новичков
Основных книг тут три:
Чарльз Петцольд — Код. Тайный язык информатики. Как говорит сам автор: «Необычная экскурсия по истории цифровых технологий, сформировавших современную эпоху». Книга для новичков действительно не плохая, она рассказывает о многих аспектах работы компьютера более-менее простым языком (если в школе вы учили математику и информатику — вы поймёте). Для старта это не плохая книга.
Владстон Феррейра Фило — Теоретический минимум по Computer Science (две книги, зелёная и оранжевая). Как написано на обложке первой части: «Все, что нужно знать программисту и разработчику». А вторая часть повествует про компьютерные сети, криптографию, науку о данных и машинном обучении. Эти книги действительно полезны, но лично мне не хватил информации из них для полного погружения в темы. Но они дают фундаментальную базу, знания в которой можно углубить, прочитав книги из следующих разделов. Для новичков они хорошо подойдут.
Так же для новичков могу порекомендовать почитать что-нибудь про ту ОС, которую вы используете. По поводу Windows — книгу посоветовать не могу, а по Linux:
Колисниченко Д.Н. — Linux на примерах. Практика практика и только практика. Если у вас стоит цель освоить основные команды и работу в Linux, то читать всю книгу нет необходимости, но в любом случае — рекомендую.
И ещё новичку бы не помешало начальное знание и понимание алгоритмов:
Адитья Бхаргаева — Грокаем Алгоритмы. Эта книга простым и доступным языком рассказывает о базовых алгоритмах. Книга описывает достаточно подробно многие фундаментальные алгоритмы. Я не знаю, что о ней ещё сказать.
На этом книги для новичков, которые я могу посоветовать, закончились. Переходим к базовым и более продвинутым книгам.
Для среднего уровня и выше
Архитектура компьютера
В этой категории две книги:
Эндрю Таненбаум и Т. Остин — Архитектура Компьютера. Это классика, это база. Одна из самых полных, на мой взгляд, книг, раскрывающих тему Архитектуры Компьютера. Книга рассказывает всё об устройстве компьютера, начиная с основ организации компьютерных систем, заканчивая уровнем ассемблера и параллельными компьютерными архитектурами. Книга максимально подробная — рекомендую.
Ноам Нисан и Шимон Шокен — Архитектура Компьютерных Систем. Более общая книга, которая больше будет полезна для того, чтобы научиться собирать компьютеры и понять, как всё это работает. Но книга Таненбаума мне нравится больше.
Компьютерные сети
Э. Таененбаум и Д. Уэзеролл — Компьютерные Сети. Аналогично книге из предыдущей категории — это классика. Кинга переиздавалась уже много раз. Рассказывает практически всё о компьютерных сетях, начиная с физического уровня, заканчивая безопасностью в сетях. Как и некоторые другие книги этого автора может быть немного сложной для чтения, хотя, как по мне — нормально.
Больше по этой теме посоветовать ничего не могу.
Операционные системы
В этой категории три книги:
Э. Таненбаум. И Х. Бос — Современные Операционные Системы. Это так же, как и все остальные книги — классика. Описывает общие для всех ОС концепции работы и рассматривает конкретные примеры. В этой книги есть всё, что нужно знать для понимания работы ОС.
Эви Немент и др. — Unix и Linux. Руководство Системного Администратора. Если вы хотите в совершенстве овладеть Linux — эта книга для вас. Она максимально подробно рассказывает об администрировании, работе с сетями, хранении данных и прочих процессах на Unix — подобных ОС.
Марк Руссинович и др. — Внутренние устройство Windows. Из названия книги, как мне кажется, всё понятно. Она рассказывает о том, как работает Windows. В книге рассматриваются такие темы как: архитектура системы, процессы, потоки, управление памятью и конечно безопасность.
Алгоритмы
Из этой категории я могу посоветовать серию книг:
Роберт Седжвик — Фундаментальные алгоритмы на С++. Даже если вы не знаете С++ — вам будет всё понятно, автор даёт подробные объяснения происходящего в алгоритме. Если знаете — прекрасно. По факту, книги содержат описание всех самых важных алгоритмов в CS и их вам должно хватить. Принцип работы каждого алгоритма описывается достаточно подробно.
И ещё момент, специально для тех, кто хочет полностью понимать происходящее, а книгах Таненбаума:
В целом, по теме CS — это всё. Не стоит так же забывать и про разнообразные разделы математики и физики, необходимые для понимания материала большинства из книги по Computer Science. Так же могу дать несколько советов по чтению подобных книг:
Не перегружайте себя информацией. Не надо читать слишком много за раз.
Как только встретили что-то, что вам в книге не понятно — сразу изучите эту тему. Если этого не сделать — будет только хуже.
Практикуйте всё, что можно практиковать. Если в книги приводится какой-либо алгоритм — поймите, как он работает и попробуйте воссоздать его, если программа — перепишите и разберитесь.
Пересказываете прочитанное. После прочтения теоретической, постарайтесь её пересказать (самому себе или кому-то другому) максимально подробно. Так вы лучше запомните материал.
Если есть возможность — читайте книги в оригинале. Так у вас меньше шансов наткнуться на ошибки переводчика и редактора.
Все книги, упомянутые в статье вы можете скачать здесь.
На этом подборка книг подошла к концу, всем, кто дочитал до этого момента спасибо!