Computer Science: книги, от новичка до профи

What«s up guys?

Computer Science — грубо говоря — наука о компьютерах. Она объединяет всё, что программист должен знать о компьютерах и работе с ними для создания эффективных программ и алгоритмов. Программисты бывают разные, и как правило отличаются только языком, на котором пишут, но всех их объединяет необходимость понимать основы этой науки для понимания того, как работает компьютер.

a1be5b9061dc6da1e4ce671944dd34fd.jpg

В этой статье мы поговорим о самых полезных книгах по Computer Science для самых разных уровней, которые дадут вам понимание того, как работают компьютеры и всё, что с этим связанно. Предлагаю незамедлительно начинать, и начнём мы с книг для новичков (по моему мнению).

Книги для новичков

50ebe9a9e9ae5780cd39a75002caf08c.jpg

Основных книг тут три:

  • Чарльз Петцольд — Код. Тайный язык информатики. Как говорит сам автор: «Необычная экскурсия по истории цифровых технологий, сформировавших современную эпоху». Книга для новичков действительно не плохая, она рассказывает о многих аспектах работы компьютера более-менее простым языком (если в школе вы учили математику и информатику — вы поймёте). Для старта это не плохая книга.

  • Владстон Феррейра Фило — Теоретический минимум по Computer Science (две книги, зелёная и оранжевая). Как написано на обложке первой части: «Все, что нужно знать программисту и разработчику». А вторая часть повествует про компьютерные сети, криптографию, науку о данных и машинном обучении. Эти книги действительно полезны, но лично мне не хватил информации из них для полного погружения в темы. Но они дают фундаментальную базу, знания в которой можно углубить, прочитав книги из следующих разделов.  Для новичков они хорошо подойдут.

Так же для новичков могу порекомендовать почитать что-нибудь про ту ОС, которую вы используете. По поводу Windows — книгу посоветовать не могу, а по Linux:

43ef8996470c6be2caf519a0a161d3d7.jpg

  • Колисниченко Д.Н. — Linux на примерах. Практика практика и только практика. Если у вас стоит цель освоить основные команды и работу в Linux, то читать всю книгу нет необходимости, но в любом случае — рекомендую.

И ещё новичку бы не помешало начальное знание и понимание алгоритмов:

7f3af63af1cb68366bc9c993e1631444.jpg

  • Адитья Бхаргаева — Грокаем Алгоритмы. Эта книга простым и доступным языком рассказывает о базовых алгоритмах. Книга описывает достаточно подробно многие фундаментальные алгоритмы. Я не знаю, что о ней ещё сказать.

На этом книги для новичков, которые я могу посоветовать, закончились. Переходим к базовым и более продвинутым книгам.

Для среднего уровня и выше

Архитектура компьютера

e50e6262edc58c74509002f93f3256d7.jpg

В этой категории две книги:

  • Эндрю Таненбаум и Т. Остин — Архитектура Компьютера. Это классика, это база. Одна из самых полных, на мой взгляд, книг, раскрывающих тему Архитектуры Компьютера. Книга рассказывает всё об устройстве компьютера, начиная с основ организации компьютерных систем, заканчивая уровнем ассемблера и параллельными компьютерными архитектурами. Книга максимально подробная — рекомендую.

  • Ноам Нисан и Шимон Шокен — Архитектура Компьютерных Систем. Более общая книга, которая больше будет полезна для того, чтобы научиться собирать компьютеры и понять, как всё это работает.  Но книга Таненбаума мне нравится больше.

Компьютерные сети

  • Э. Таененбаум и Д. Уэзеролл — Компьютерные Сети. Аналогично книге из предыдущей категории — это классика. Кинга переиздавалась уже много раз. Рассказывает практически всё о компьютерных сетях, начиная с физического уровня, заканчивая безопасностью в сетях. Как и некоторые другие книги этого автора может быть немного сложной для чтения, хотя, как по мне — нормально.

Больше по этой теме посоветовать ничего не могу.

Операционные системы

53e05e9964e876bf02642cd3f2af3c16.jpg

В этой категории три книги:

  • Э. Таненбаум. И Х. Бос — Современные Операционные Системы. Это так же, как и все остальные книги — классика. Описывает общие для всех ОС концепции работы и рассматривает конкретные примеры. В этой книги есть всё, что нужно знать для понимания работы ОС.

  • Эви Немент и др. —  Unix и Linux. Руководство Системного Администратора. Если вы хотите в совершенстве овладеть Linux — эта книга для вас. Она максимально подробно рассказывает об администрировании, работе с сетями, хранении данных и прочих процессах на Unix — подобных ОС.

  • Марк Руссинович и др. — Внутренние устройство Windows. Из названия книги, как мне кажется, всё понятно. Она рассказывает о том, как работает Windows. В книге рассматриваются такие темы как: архитектура системы, процессы, потоки, управление памятью и конечно безопасность.

Алгоритмы

Из этой категории я могу посоветовать серию книг:

  • Роберт Седжвик — Фундаментальные алгоритмы на С++. Даже если вы не знаете С++ — вам будет всё понятно, автор даёт подробные объяснения происходящего в алгоритме. Если знаете — прекрасно. По факту, книги содержат описание всех самых важных алгоритмов в CS и их вам должно хватить. Принцип работы каждого алгоритма описывается достаточно подробно.

И ещё момент, специально для тех, кто хочет полностью понимать происходящее, а книгах Таненбаума:

350c8bb2a5d16272b07e0976e4e80c4d.jpg

В целом, по теме CS — это всё. Не стоит так же забывать и про разнообразные разделы математики и физики, необходимые для понимания материала большинства из книги по Computer Science. Так же могу дать несколько советов по чтению подобных книг:

  • Не перегружайте себя информацией. Не надо читать слишком много за раз.

  • Как только встретили что-то, что вам в книге не понятно — сразу изучите эту тему. Если этого не сделать — будет только хуже.

  • Практикуйте всё, что можно практиковать. Если в книги приводится какой-либо алгоритм — поймите, как он работает и попробуйте воссоздать его, если программа — перепишите и разберитесь.

  • Пересказываете прочитанное. После прочтения теоретической, постарайтесь её пересказать (самому себе или кому-то другому) максимально подробно. Так вы лучше запомните материал.

  • Если есть возможность — читайте книги в оригинале. Так у вас меньше шансов наткнуться на ошибки переводчика и редактора.

Все книги, упомянутые в статье вы можете скачать здесь.

На этом подборка книг подошла к концу, всем, кто дочитал до этого момента спасибо!

© Habrahabr.ru