И ни одного романа.
Уверена, что это не первая статья о книгах для программистов, которые вы читаете и ждете увидеть ниже обложки увесистых томов авторства Дональда Кнута, Стивена Макконелла, Роберта Мартина, Томаса Кормена и культовой «Книги четырех» («Паттерны проектирования»).
Чтобы прочесть подборку классики, которые 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 каждого разработчика индивидуален .
Не знаете какие книги читать? Обратитесь к опытному кодеру, который:
- Использует те же технологии, что и вы;
- Решает похожие задачи;
- Похож на вас характером.
И велик шанс, что он поможет вам найти книги, которые станут для вас чем-то большим, чем развлечение на пару вечеров.
49 комментариев
Форум →Ирина, а давно стали увлекаться программированием? Вроде ж только-только? Возможно, можно было добавить хотя бы одну книгу по ООП. У многих меняется представление о мире после ООП))
@Dexfir, интересоваться с детства. Зарабатывать этим с 2010 года (PHP).
@Ирина Чернова, Тогда где Зандстра PHP. Объекты, шаблоны и методики программирования ???
@voice, 1. Я эту книгу просматривала, но не читала. 2. Книги по отдельным технологиям не принято заносить в общие подборки книг для программистов. Если бы хотела включить в личную подборку книгу про PHP, то добавила Костерова PHP 5 в подлиннике (я с ней много работала 5 лет назад, но сегодня она уже устарела).
@Dexfir, а по поводу ООП. Паттерны проектирования упомянуты в начале, а дальше пояснение почему ее в подборке нет)
Хорошая подборка, во многом согласен, но в некоторых моментах хотел бы дополнить, впрочем, как упомянуто автором: “у каждого программиста есть свой топ книг”.
Однако, в списке есть такие книги, на которые не обращал доселе внимания, но, теперь, обязательно прочту.
@metalhead, это какие книги?
Дискретная математика для программистов. Рей Хаггарти
Продуктивный программист. Как сделать сложное простым, а невозможное – возможным. Нил Форд
Регулярные выражения. Сборник рецептов. Ян Гойвертс, Стивен Левитан
В реальном программировании это никто не читает – легкое чтение перед сном. Все пользуются своими фреймворками и сидят на спец форумам (или не сидят) по ним. Прочитав эти книги можно научиться на современном уровне писать на SQL (а на нем без квери билдеров ничего никто не хочет строить)
Главный программист фулстек компании с уклонам на node и laravel
А с регулярками вообще весело. Вот есть у меня регулярка в 20 строчек. Огонь. По скорости не сильно быстрее чем без нее. Только вот что-то в ней поменять быстро – боль.
@xSphinx, а что делает Ваша регулярка в 20 строчек?)
Зачастую stackoverflow оказывается полезнее многих книжек, и по скорости поиска и по вариантам которые там изложены. Мне так кажется.
@Aleksey Neronov, ну по моему большинство так делает: пишет код и если возникают вопросы идет на Stackoveflow/берет что-то готовое на Github/смотрит оф. документацию. Обратите внимание, что в подборке только две книги чисто технические, остальные как сказал xSphinx – легкое чтение перед сном. Подборка для души и расширения кругозора)
@Ирина Чернова, по опыту, книги для расширения общего кругозора оказывают самый положительный эффект, даже в сравнении с книгами по специальной тематике
@Ирина Чернова, С этим я абсолютно согласен, кстати сегодня почитал Пионеры программирования – мне очень понравилась книжка.
@Aleksey Neronov, с помощью книг закладываются фундаментальные знания, с помощью которых индивидуум мыслит сам.
stackoverflow предлагает готовые советы для людей, не умеющих мыслить головой.
@metalhead, Зачастую я там нахожу ответы на небольшие рутинные задачки, на которые не хочется тратить времени, особенно когда достаточно объемны. Но это сугубо мое личное мнение. А читать хорошие книжки очень полезно!
@Aleksey Neronov, не ставят по сомнение архиполезность stackoverflow, всё же убедился что монографии читать _нужно_. Статьи и форумы это прекрасно, но хорошая толстая книжка она…как-то упорядочивает в голове всё, появляется цельная картина)
кент бек TDD -плюсую
@IRONer, :-)
@IRONer, Ну это вы зря. TDD умер. Про него уже не вспоминают. Тихо так страдалец почил, незаметно. Ибо всякие евангелисты не хотят признаться, что TDD хорош только в теории. Поэтому сейчас тихо помалкивают о том, что ещё пару лет назад с комсомольским задором пропихивали в массы.
@Partyzaan, у кого-то можт и умер
а я использую вовсю :)
Думаю времени на личную жизнь у Вас явно нет…столько томов невыносимо скучной да еще и специфичной литературы прочесть упасть можно…
@dennis1, не все же идиоты, смиритесь и продолжайте наслаждаться своей бесполезностью.
@evilsheep, Вы Ирина?)) поздравляю, смена пола Вам к лицу, теперь все можно списать на недостаток секса… не будьте такой злой дорогая))
@dennis1, все верно, в СССР секса нет) Ни у кого. Потому что любая отрасль имеет огромный пул знаний, в том или ином виде, которые стоит освоить. Если, конечно, претендуешь на серьезный уровень компетентности.
@dennis1, есть мнение, что это вы свои проблемы на других проецируете.
@peper-, есть мнение?) ну тогда возьмите и сходите с ним к своим проблемам)))
@peper-, человек — идиот, не тратьте время на беседы с ним.
@evilsheep, хорошо Ирина))
Респект! При чем большая!
@cap_, :-)
Зачем программисту “Пионер…”. Это чтиво не имеет никакого практического применения.
И где истинная библия программистов Кнута?
@t.r.o.n., “Пионеры программирования” может и не имеет практического применения, однако, эта книга дает фундаментальное понимание, раскрывает мышление создателей языков, позволяет понять почему именно таким образом реализованы трансляторы.
Это сильная книга.
@metalhead, Вот ненужно. Мышление – это одно (только накой она – не понятно. разве только из любопытства). А нюансов реазации – там нет.
Давайте искать методы предотвращения падений xcode, читая биографию Джобса
@t.r.o.n., Джобс не в счет, он программированием не занимался.
А, вот, логика и мысли создателей языков программирования, на самом деле, проливают свет на их творения.
Вдобавок, это полезно и интересно, а расширение общего кругозора помогает программисту обрести связь с миром.
@metalhead, кругозор – да. не более.
на счет творений, надеюсь вы сами понимаете, в большинстве случаев – обычная борьба конкурентов + нюансы.
и не забывайте, что всегда присутсвует “личное мнение”. к примеру, известный php. он родился как расширение/фреймворк для Perl. Когда разрабы рассорились, php ушел в сторону и для привлечения средств сошелся с мускулом. итог – все начинающие изучать пых, уверены, что “hello word” нельзя создать не подключаясь к мускулу.
но можно почитать официальный варант истории.
как одно так и второе ничего не дадут изучающему…
@t.r.o.n., Пионеры программирования помогают выбрать какой язык учить/использовать для конкретной задачи.
А Кнут в статье два раза упоминается)
@Ирина Чернова, В том-то и дело. Важное – упоминается, а чтиво – рекомендуется.
Никогда не встречал дюдей, которые выбирают автомобиль, читая размышления создателей брендов.
@Ирина Чернова, но самое главное, “Пионеры” позволяют пообщаться с авторами языков, тем самым понять их логику, ведь, создатели языков не только математики, поэтому мышление у всех разное, отчего получаются такие разные языки для такого широкого круга задач в настолько большом количестве областей
Книги, книги от идеальных для реальных зануд O_O
Странно, что тут не K&R нет. Не потому что про C, а потому как она такая же классика в литературе по программированию, как Шекспир или Толстой. :)
@peper-, про то почему нет классики написано в первых абзацах)
Чтобы быть хорошим программистом, необходимо особое мышление, упорство, концентрация и ориентированность на результат. При наличии вышеуказанного лучшей книгой будет документация используемого языка. Но за первые 2 книги по регуляркам и sql -спасибо. Ведь не обязательно помнить все и заново изобретать велосипед
@spamreg, не подумайте что я с Вами спорю:-) но напомню: это не подборка лучших книг для программистов, и не подборка книг которые помогут стать хорошим программистом.
Лучшие книги по программированию не ориентированы на тот или иной язык.
Рекомендую почитать:
– “Чистый код” Боба Мартина
– “The pragmatic programmer” Andy Hunt, Dave Thomas
P.S.
Уходите из PHP при любом возможном случае, там вы никогда не научитесь программировать. ;)
@Wrangle71667837, “программист-программатик” чуть было не попал в подборку:-)
@Wrangle71667837, “Чистый код” очень хорош как прикладная книга, под рукой. Рекомендую “Совершенный код” Макконнелла – знатная вещь! Более общий подход описан.
совершенный код и банда четырех вообще должны быть всегда на столе и в голове.
ну и для размышления над своим поведением в программировании очень советую книгу the mental game of poker. хоть она и написана в основе темы покера, но если взглянуть на книгу шире, то она применима к любой профессии и является своеобразной психологической закалкой.
@goodhoopoe, спасибо !!!!!!! просмотрела оглавление и первые страницы mental game of poker. Вот такие мысли:
“Непонятно почему, но вчера вечером я начал играть как осел”
“Хотелось бы мне всегда играть так хорошо, как сегодня”
к сожалению, прилетают иногда мне в голову (по отношению к разным делам). Негативное влияние эмоций на выполнение работы – это беда.
Так что сегодня же начинаю читать рекомендованную Вами книгу и возлагаю на нее большие надежды)))
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как на iPhone быстро переключаться между источниками звука
Как включить разметку листа в приложении Заметки на iPhone
Как в iOS найти все фото и видео, которые сохранены из конкретного приложения
Ошибка при создании резервной копии iPhone, как исправить?
Какой адаптер лучше выбрать для быстрой зарядки iPhone 8 Plus
Что делать, если Safari на iPhone не может подключиться к сети
Как на iPhone установить 4-значный код разблокировки
Как передать большой файл с iPhone на Windows