И ни одного романа.
Уверена, что это не первая статья о книгах для программистов, которые вы читаете и ждете увидеть ниже обложки увесистых томов авторства Дональда Кнута, Стивена Макконелла, Роберта Мартина, Томаса Кормена и культовой «Книги четырех» («Паттерны проектирования»).
Чтобы прочесть подборку классики, которые IT-блогеры копипастят друг у друга требуется пару лет тяжелого интеллектуального труда. Если поставить себе цель крепко усвоить полученную информацию и внедрить в работу, а не поверхностно ознакомиться с целью хвастовства на форумах.
Я не приложила достаточное количество усилий, чтобы всерьез рассуждать о том с какой главы приступать к чтению «Совершенного кода» или чем первый том «Искусства программирования» полезнее второго.
Поэтому, расскажу только о тех книгах которые читала сама и знания из которых применяла на практике. Личный ТОП-9 включает:
2 книги, которые каждый день под рукой;
2 книги, которые оказали сильное влияние на мировоззрение и подход к работе;
3 книги для души;
Сборник задач;
Книгу с описанием комплекса упражнений для людей занятых интеллектуальным трудом.
1. Регулярные выражения. Сборник рецептов. Ян Гойвертс, Стивен Левитан
С уважением и восхищением отношусь к людям, которые могут не заглядывая в мануалы писать регулярки космической степени сложности. Я к таким не отношусь, но стремлюсь. Пока я на пути, меня выручает эта книга.
В ней сотни полезных регулярок, которые легко копируются в код и помогают сэкономить время на изобретении велосипедов. Примеры применения готовых регулярных выражений из книги:
Удаление двойных пробелов;
Валидация номеров кредитных карт, емейлов и URL-адресов;
Удаление строк-дублей в тексте;
Очистка кода от комментариев;
Извлечение значений атрибутов из XML-файлов;
Нахождение дат в тексте.
Прочтение от корки до корки поможет избегать лишних затрат труда в случаях, когда одна гениальная регулярка заменяет десятки строк кода. Но «Книгу рецептов» можно открывать только по мере необходимости, копируя и допиливая примеры для решения текущей проблемы.
2. SQL. Сборник рецептов. Энтони Молинаро
Знаете ли вы как с помощью SQL:
Извлечь из таблицы строки, которых нет в другой таблице;
Блокировать вставку значений в некоторые столбцы;
Извлечь инициалы из имени;
Определить количество дней между двумя датами;
Делать иерархические запросы.
Если нет, то книга «SQL. Сборник рецептов» подскажет как.
Чуть выше я написала — одно регулярное выражение иногда заменяет десятки строк кода. Тоже с SQL-запросами. Готовые примеры из книги помогут сократить время на разработку, увеличить скорость выполнения программ/скриптов и снизить нагрузку на сервер.
3. Продуктивный программист. Как сделать сложное простым, а невозможное – возможным. Нил Форд
Недостаток книги — обилие практических советов, которые касаются технологий устаревших лет пять назад. Некоторые фишки уже не работают. Но «Продуктивный программист» актуальна и сегодня.
Нил Форд писал книгу, чтобы заставить посмотреть читателей на мир под другим углом и отбросить вредные привычки:
Не автоматизировать то, что делается руками >10 раз;
Использовать мышь там, где нужна только клавиатура;
Избегать работы в командной строке;
Держать рабочие файлы в беспорядке.
И ему это удается. Тонкими шутками и железными аргументами автор прививает читателю отвращение к ручному труду и убеждает встать на путь исправления.
После прочтения книги я увидела, сколько люди вокруг тратят времени на работу, которые могли бы за них делать скрипты, всерьез заинтересовалась темой автоматизации и потихоньку занялась расширением кругозора в теме.
С тех прошли годы и я помогла себе, родственникам, друзьям, коллегам и случайным знакомым сэкономить месяцы личного времени.
Если хотите, чтобы вас перестало тянуть тратить время на рутину, читайте Нила Форда:-)
4. Экстремальное программирование: разработка через тестирование. Кент Бек
Эта книга для ленивых антиперфекционистов, в глубине души считающих Макконела занудой, находящих тестирование и отладку на редкость утомительным занятием, но все равно мечтающих о том, чтобы написанные ими программы сносно работали.
Кент Бек написал во вступлении:
Cпасибо неизвестному автору книги, которую я прочитал в 12-летнем возрасте. В этой книге было предложено сравнивать две ленты: с реальными результатами и ожидаемыми результатами, и кодировать до тех пор, пока реальные результаты не совпадут с ожидаемыми. Спасибо, спасибо, спасибо.
Этот гениальный своей простотой совет, за много лет вырос в голове Кена в фантастически результативную методику программирования:
Сначала пишем тесты;
На втором шаге кодируем и добиваемся четкого выполнения тестов;
Проводим рефакторинг.
Воплощения этих трех шагов на практике посвящено 200 страниц, которые занимают описание паттернов TDD, советы по проведению рефакторинга, и рассказы о личном опыте применения методики на примере работы над приложением xUnit.
Идеи из книги давно ушли в народ и применяются как разработчиками-одиночками, так и в компаниях. Если вы заинтересовались, рекомендую найти в сети материалы о применении TDD с языками программирования, на которых пишите.
5. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования. Федерико Бьянкуцци, Шейн Уорден
Эта удивительная и вдохновляющая книга. Каждый раз когда перечитываешь — открываешь нечто новое. Она включает в себя интервью с создателями 17 языков программирования:
Post Script;
Perl;
UML;
C#;
Java;
Objective-C;
SQL;
ML;
Haskell;
Lua;
AWK;
Бейсик;
Форт;
APL;
Python;
C++.
В книге море любопытной технической информации и фактов из истории. Например:
Первые семь лет разработка языка APL проходила без использования компьютеров;
Создатель языка Eiffel Бертран Мейер еще в 1978 году написал книгу «Методы программирования», которую вскоре перевели на русский язык и издали в СССР. И до конца 2000-ых годов во время визитов в нашу страну ему попадались люди, которые утверждали, что изучали по ней программирование;
Создатель Post Script описывает первоклассного программиста следующими словами «Когда он предъявляет код и говорит, что тот готов, это значит, что код абсолютно надежен и отшлифован». Последний раз такой парень встречался им в 1972 году;
Когда Ларри пишет на своем Perl он вносит изменение в код и перезапускает программу примерно каждые 30 секунд;
Turbo Pascal создан тем же человеком, что и C#;
C++ используется чаще чем Objective-C потому, что его раскручивала корпорация AT&T (по мнению создателя Objective-C).
В интервью много сложных технических вопросов, но они удачно переплетаются с разговорами о науке, бизнесе, будущем IT-технологии, секретах успеха и трудностях с которыми пришлось столкнутся при создании и внедрении новых языков программирования.
Джон Хьюз учит важности смирения для эффективной работы в команде, Дон Чемберден объясняет почему сегодня трудно сделать популярным новый язык программирования, а Гвидо ван Россум делиться приемами, как мгновенно включиться в написание кода, если тебя отвлекли.
Герои книги — уникальные люди. В них сочетается творческий ум, смелость и способность доводить дело до конца, не боясь потратить на него десяток другой лет своей жизни. Чтение «Пионеров программирования» мотивирует к действию не хуже журнала «Работница»
6. Дискретная математика для программистов. Рей Хаггарти
Это единственный учебник по математике, беглое ознакомление с которым в книжном магазине вызвало немедленное желание его купить. Удивительно легкая подача текста, много поясняющих картинок, решение задач не требует глубины знаний других разделов математики.
В книге освещаются темы:
графы и ориентированные графы;
комбинаторика;
эффективность алгоритмов;
математический аспект функциональных языков программирования;
бинарные отношения;
экспертные системы;
теория множеств;
и т.п.
Радуют пояснительные примеры на псевдокоде (который по сути Pascal).
Ознакомление с этим учебником (в первую очередь с главой 7 и приложением к ней) теоретически и морально готовит к чтению третьего тома книги Дональда Кнута «Искусство программирования». Как настроить себя на чтение остальных томов, мне неизвестно:-(
Но главное, что эта книга развернуто и доступно отвечает на волнующий кодеров-любителей вопрос: «Зачем программисту когда-либо может понадобиться математика?».
7. Just for fun. Рассказ нечаянного революционера. Даймонд Дэвид. Торвальдс Линус
Биография Линуса Торвальдса с раннего детства до начала 2000-ых годов. Записана журналистом Даймонд Дэвидом под диктовку главного героя книги. Эта удивительная история о судьбе гика. Думаю многие, кого с детства тянет к программированию, найдут в себе нечто схожее с Линусом:
Иногда я вообще не выходил. Мама говорила своим друзьям-журналистам, что я настолько неприхотливый ребенок, что мне для счастья достаточно чулана с компьютером, куда время от времени закидывают пачку макарон. Она была недалека от истины. Никто не боялся, что этого ребенка похитят. (А интересно, кто-нибудь бы это заметил?)
Линус с открытой банкой кока-колы в руках появился из недр Transmeta,
расположившейся в безымянном офисном комплексе Санта-Клары. На нем была
программистская униформа: джинсы, футболка с конференции и неизменный набор
носки плюс сандалии, который он полюбил, по его словам, еще до встречи с
первым программистом. “Должно быть, это просто врожденный программистский
инстинкт”, — объяснил он мне свой выбор.
Когда мы уселись на заднее сиденье, я для разминки спросил, настраивая
диктофон: “Вы из семьи технарей?”
“Нет, большинство моих родственников – журналисты, — ответил он и
добавил: — Поэтому я в курсе, какие вы все козлы”.
Я крутился как белка в колесе: программирование — сон –
программирование — еда (соленые сухарики) – программирование – сон –
программирование — душ (на скорую руку) — программирование. К концу работы
стало ясно, что моя программа превращается в операционную систему.
Помимо биографии Линуса в книге много информации о технических особенностях Linux и философии свободного ПО:
Сама по себе наука не приносит денег. Богатство возникает как побочный
эффект развития науки. То же самое верно и в отношении открытых исходников.
Они дают возможность создавать вспомогательные отрасли, которые бросают
вызов существующим предприятиям точно так же, как побочные продукты развития
науки бросали вызов церкви.
Цитировать «Just for Fun» можно бесконечно, настолько она классная. Читается за один вечер, поднимает настроение и помогает отвлечься от мирской суеты.
8. Карьера программиста. Как устроиться на работу в Google, Microsoft или другую ведущую IT-компанию. Монган Д., Гижере Э., Киндлер Н.
Книга представляет из себя сборник вопросов и задач для проверки знаний о массивах, базах данных, побитовых операциях, ООП и т.п. Отдельные главы посвящены задачам на логику: графические головоломки и головоломки с перестановками.
Задания заставляют задуматься, но не требуют много времени для решения (если под рукой Google/тема знакома).
Книга стремительно устаревает(2012 год) и содержит психологические советы, которые кажутся мне не стопроцентно подходящими для российских реалий. Но она помогает найти пробелы в знаниях и определить направление движения в самообразовании.
9. Путь в магию. Первые шаги. Fiery
Эта книга представляет собой сборник упражнений для развития умения себя контролировать с развернутыми авторскими комментариями. Выполнение этих упражнений помогает справиться со следующими проблемами:
Неспособность сосредоточиться на текущем занятии;
Невозможность заснуть из-за навязчивых мыслей;
Чрезмерная утомляемость при достаточном времени сна из-за невозможности расслабиться.
Я делала эти упражнения в 16-17 лет во время подготовки к ЕГЭ, чтобы преодолеть трудности со сосредоточением на учебе. В тот момент они мне ощутимо помогли. Теперь только возвращаюсь к ним пару раз в год по мере необходимости.
Подача материала автором у нормального человека вызывает чувство недоверия, но не стоит обращать на нее внимание. Воспринимайте упражнения в рамках материалистического мировоззрения и сильно не увлекайтесь ими.
P.S. Если у вас начнутся выходы из тела по ночам, срочно завязывайте с упражнениями и никому об этом не рассказывайте.
Классных книг для программистов много. И ТОП-10 каждого разработчика индивидуален .
Не знаете какие книги читать? Обратитесь к опытному кодеру, который:
Использует те же технологии, что и вы;
Решает похожие задачи;
Похож на вас характером.
И велик шанс, что он поможет вам найти книги, которые станут для вас чем-то большим, чем развлечение на пару вечеров.
Очень важное