Книги, которые вы возможно захотите прочесть: Computer Science

4 minute read Published:

Мало кто читает книги сегодня, правильно? Особенно в области программирования и айти. Технологии так быстро меняются, приходят и уходят новые языки и фреймворки. Так зачем тратить свое время и деньги на покупку и чтение книг, информация в которых устареет через какое-то время? Поэтому многие разработчики предпочитают этому статьи, скринкасты, документацию или изучение через практику. Однако, на мой взгляд, есть темы, которые только в книгах освещаются наиболее полно и последовательно.

Я подготовил список литературы (увы на английском), которую вы все-таки возможно захотите прочесть, и она окажет большое влияние на то, как вы станете мыслить и решать будущие задачи.

Алгоритмы / Структуры данных

Этот топик самый важный по моему мнению для любого хорошего разработчика. В современном мире программирования вам врядли придется реализовывать классические алгоритмы и структуры данных с нуля на своей работе. Любой язык программирования включает в себя стандартную библиотеку, которая решает данную проблему за вас. Но понимание оценки сложности алгоритма, выбор правильной структуры данных для написания более эффективного кода или проектирования сложных систем может оказаться довольно значимым фактором. Ну и, конечно, если вы жаждите работать в Google / Facebook / Microsoft и прочих подобных компаниях, то от решения задач из области computer science на доске вам просто не уйти.

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

Grokking Algorithms by Aditya Y Bhargava

Отличная книга с множеством иллюстраций, примеров и пояснений на языке Python. Она хорошо подойдет для "мягкого" старта и даст возможность втянуться в изучение, применение и анализ алгоритмов без появления мыслей "Более тясячи страниц...пфф...да это же энциклопедия целая. Пойду лучше сериальчик посмотрю".

Когда ваш мозг уже окрепнет, и вы начнете ценить пользу от полученных знаний и захотите расширить свой кругозор, стоит переходить к двум другим кирпичам, как я их называю.

The Algorithm Design Manual by Steven S Skiena

"Руководство по дизайну алгоритмов", с моей точки зрения, основная книга, которой стоит пользоваться при подготовке к собеседованиям. Она научит вас практическому подходу к решению проблем, не будет грузить математической базой и даст четкое описание того или иного алгоритма подкрепляя все это историями из опыта автора.

Второй причина моего выбора - относительная компактность материала и наличие ссылок на дополнительную информацию, которая может быть для вас опциональной. Вы оцените это когда до собеседования останется пара месяцев.

Introduction to Algorithms by CLRS

Если же времени у вас предостаточно, и вам некуда спешить, "Введение в алгоритмы" может стать настольной книгой, в которую вы будете заглядывать время от времени. Например, решая задачи на HackerRank или TopCoder. Большинство алгоритмов из книги вы врядли встретите на интервью, но вы же теперь "в теме". Всегда приятно узнать больше еще об одном типе деревьев и прочей фигне.

Математика

Разбираясь с основами computer science вам так или иначе придется сталкиваться с математичекими терминами и формулами. Особенно топик будет актуальным если вы хотите начать заниматься Machine Learning, Data Science и другими горячими в настоящее время областями.

Черт, каким же я был раздолбаем в универе, когда спустя рукава посещал лекции дискретной математики, математического анализа, теории вероятностей и других полезных дисциплин…

«Математику уже затем учить надо, что она ум в порядок приводит» (С) М.В. Ломоносов

Matematics for Computer Science by Eric Lehman, F. Thomson Leighton, Albert R. Meyer

Мне нравится данная книга своим подходом к изложению материала. Она не пытается быть учебником по всем мыслимым и немыслимым разделам математики. В ней приводятся не только теоретические знания, но и примеры их применения на практике. Освещены основы дискретной математики, множеств, теории графов, конгруэнции, вероятности, рекурсии и многих других разделов. Так же на основе `Matematics for Computer Science` в MIT преподают целый курс.

Топ-1 в моем списке. Особенно перед подготовкой к интервью.

Бесплатная PDF версия!

Concrete Mathematics: A Foundation for Computer Science by Ronald Graham, Donald Knuth, and Oren Patashnik

Классический труд, который стоит прочесть в дополнение к книге приведенной выше или же просто для закрепления знаний. Возможно последовательность изложения разделов и само повествование в Конкретной Математике кому-то придется по душе больше.

Прочее

Code: The Hidden Language (DV-Undefined) by Charles Petzold

Книга для тех, кому интересно узнать что же легло в основу работы железа и его основных компонентов. Охватывает исторические события и технологические изобретения последних двух столетий и повествует о том, как технологии изменяют повседневную жизнь людей.

Отлично сочетается с кружкой хорячего чая или кофе.


P.S. В будущих постах я планирую рассказать еще о нескольких книгах из мира стартапов, практик разработки или конкретных технологий, а может быть даже литературе, которую я читаю вместе со своим сыном и которую нашел смешной, интересной и воодушевляющей даже для взрослого дяденьки.

P.S. #2 В статье приведены ссылки на немецкий Amazon, т.к. в большинстве случаев вы не найдете перевода на русский язык, а покупка в русскоязычном интернет-магазине будет стоить дороже, чем покупка и доставка из Германии или США. Когда я жил в России, я заказывал книги на американском Amazon с доставкой через сервис Бандеролька. Не так давно у них появился склад в Берлине для заказов из Европы.

comments powered by Disqus