Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Авторы:

Жанр: Программирование

Цикл: Библиотека программиста

Формат: Полный

Всего в книге 48 страниц. Год издания книги - 2022.

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

Читать онлайн Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих


Предисловие

Сначала программирование было для меня простым увлечением. Я изучил азы по книге «Visual Basic для чайников», а потом стал читать другие книги, чтобы узнать больше. Но алгоритмы мне никак не давались. Помню, как я смаковал оглавление своей первой книги по алгоритмам и думал: «Наконец-то я все узнаю!» Но материал оказался слишком сложным, и я сдался через несколько недель. Только благодаря хорошему преподавателю теории алгоритмов я понял, насколько простые и элегантные идеи заложены в ее основу.

Через несколько лет я написал свое первое иллюстрированное сообщение в блоге. Сам я визуал, поэтому мне нравится наглядный стиль изложения. С тех пор я создал немало иллюстрированных материалов по функциональному программированию, Git, машинному обучению и параллелизму. Кстати говоря, в начале своей карьеры я писал довольно посредственно. Объяснять научные концепции трудно. Чтобы придумать хорошие примеры, требуется время, чтобы объяснить сложную концепцию — тоже. Проще всего умолчать о сложных моментах. Я думал, что у меня все хорошо получается, пока после одной из моих популярных публикаций ко мне не обратился коллега со словами: «Я прочитал твой материал, но все равно ничего не понял». Мне еще предстояло многое узнать о том, как пишутся научные тексты.

В самом разгаре работы над иллюстрированными публикациями в блоге ко мне обратилось издательство Manning с предложением написать иллюстрированную книгу. Оказалось, что редакторы Manning хорошо умеют объяснять научные концепции, и они показали мне, как следует учить других. У меня была совершенно определенная цель: мне хотелось создать книгу, которая бы объясняла сложные научные темы и легко читалась. С момента написания моего первого сообщения в блоге я прошел длинный путь; надеюсь, моя книга покажется вам простой и содержательной.

Благодарности

Спасибо издательству Manning, которое дало мне возможность написать эту книгу и предоставило большую творческую свободу в ходе работы. Я благодарен издателю Марджану Бейсу (Marjan Bace), Майку Стивенсу (Mike Stephens) за то, что он ввел меня в курс дела, Берту Бейтсу (Bert Bates), который научил меня писать на научные темы, и Дженнифер Стаут (Jennifer Stout) — невероятно отзывчивому редактору, всегда готовому прийти на помощь. Спасибо всем участникам производственной группы Manning: Кевину Салливану (Kevin Sullivan), Мэри Пьержи (Mary Piergies), Тиффани Тейлор (Tiffany Taylor), Лесли Хаймс (Leslie Haimes) и всем остальным. Кроме того, я хочу поблагодарить всех, кто читал рукопись и делился своим мнением: Карен Бенсдон (Karen Bensdon), Роба Грина (Rob Green), Майкла Хамра (Michael Hamrah), Озрена Харловица (Ozren Harlovic), Колин Хейсти (Colin Hastie), Кристофера Хаупта (Christopher Haupt), Чака Хендерсона (Chuck Henderson), Павла Козловски (Pawel Kozlowski), Амита Ламба (Amit Lamba), Жана-Франсуа Морина (Jean-François Morin), Роберта Моррисона (Robert Morrison), Санкара Раманатана (Sankar Ramanathan), Сандера Россела (Sander Rossel), Дуга Спарлинага (Doug Sparling) и Дэмиена Уайта (Damien White).

Спасибо всем, кто помог мне в достижении цели: сотрудникам Flashkit, научившим меня программировать; многочисленным друзьям, которые помогали мне в работе — рецензировали главы, делились советами и предлагали разные варианты объяснений. Это были Бен Вайнгер (Ben Vinegar), Карл Пьюзон (Karl Puzon), Алекс Мэннинг (Alex Manning), Эстер Чан (Esther Chan), Аниш Бхатт (Anish Bhatt), Майкл Гласс (Michael Glass), Никрад Махди (Nikrad Mahdi), Чарльз Ли (Charles Lee), Джаред Фридман (Jared Friedman), Хема Маникавасагам (Hema Manickavasagam), Хари Раджа (Hari Raja), Мурали Гудипати (Murali Gudipati), Шриниваса Варадан (Srinivas Varadan) и другие; также спасибо Джерри Брэди (Gerry Brady), моему учителю по теории алгоритмов. Отдельное большое спасибо таким классикам алгоритмов, как CLRS[1], Кнут и Стрэнг; безусловно, я стою на плечах гигантов.

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

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

О книге

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

В книге приводится множество примеров. Моя цель — не вывалить на читателя кучу невразумительных формул, а упростить наглядное представление этих концепций. Я также считаю, что мы лучше всего учимся тогда, когда можем вспомнить что-то уже известное, а примеры помогают освежить память. Так, когда вы вспоминаете, чем массивы отличаются от связанных списков (глава 2), просто вспомните, как ищете места для компании в кинотеатре. Наверное, вы уже поняли, что я сторонник визуального стиля обучения, — в книге полно рисунков.


С этой книгой читают
Изучаем Python
Автор: Эрик Мэтиз

Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.


Чистый код. Создание, анализ и рефакторинг

Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.


Питон — модули, пакеты, классы, экземпляры

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


Обработка событий в С++

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


Симуляция частичной специализации
Автор: П Кузнецов

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


MFC и OpenGL

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


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


В царстве драконов

Любимый дядюшка Райана Ландберга погиб — был убит. Юноша направился в Нью-Йорк, чтобы найти убийц дяди Грэма и отомстить: настанет время действовать и дышать огнем…


Вечность
Автор: Тим Леббон
Жанр: Фэнтези

Действие рассказа «Вечность», написанного специально для антологии «Волшебники», разворачивается в мире нового романа Леббона «Сумерки», выполненного в жанре темного фэнтези.После злодейств магов Эйнджел и ее брата С’Ивэ этот мир покинуло волшебство, а сама земля пришла в упадок. Население огромного континента Норила утратило волю к жизни, стало безразличным и пассивным. Далеко к северу от него раскинулся большой замерзший остров, куда после Войн Катаклизма — за сто лет до событий, описываемых в рассказе, — бежали маги и остатки их армии.


Звезда Стриндберга
Автор: Ян Валентин
Жанр: Триллер

В заброшенной шахте в Центральной Швеции дайвер-любитель находит труп мужчины, который погиб, как минимум, сто лет назад. В руке мертвец судорожно сжимает крест в форме египетского иероглифа Анх.С этой смерти начинается история поиска таинственного ключа, позволяющего найти вход в подземный мир, хранящий в себе всю правду о мироустройстве.Историк Дон Тительман, случайно замешанный в этой истории, начинает собственное расследование. Поиски египетской звезды Себа, недостающей части вожделенного ключа, ведут его в самое сердце Арктики по следам погибшей экспедиции Нильса Стриндберга.Сумеет ли он, пройдя через множество опасных приключений, докопаться до истины?


Последнее письмо из Москвы

Абраша Ротенберг — известный аргентинский журналист и издатель. Он родился на Украине, жил в Магнитогорске и Москве, переехал с родителями в Аргентину, где и стал известным литературным и общественным деятелем. Впервые его произведение издано на русском языке в рамках проекта Bookcoupon (Книги по подписке) благодаря поддержке читателей. Читатель поразится не только тому, через какие жизненные коллизии проходил сам автор и его близкие, но и той честности, с которой человек способен посмотреть на себя и на свой внутренний мир.Издательство «Вебов и Книгин» впервые предлагает читателям роман Ротенберга «Последнее письмо из Москвы» в переводе на русский язык.Этот автобиографический исторический триллер, приправленный иронией, скепсисом и еврейским юмором в традициях Шолом-Алейхема, заработал огромную мировую известность.Благодарим наших подписчиков, поддержка которых помогла изданию этой книги.