Программирование с нуля с чего начать книга
С каких книг можно начать изучать программирование (Python, C#, C++, Java, Lua, …)
Здравствуйте дорогие читатели.
Данная статья посвящена вопросу, который волнует большинство начинающих программистов и робототехников (именно тех робототехников, кто готов постичь премудрости сложных систем и достич конструкторских решений как в Boston Dynamics).
Для начинания есть несколько путей:
запись в кружок или на курс
обучаться по книгам и документации
обучаться по видеороликам
Выбираем кружки и курсы
Мой совет использовать и сочетать все три варианта. Какой курс или кружок выбрать необходимо решать исходя из того что вы уже знаете.
Если вам мало лет и вы не знаете ничего из робототехники и механики и автоматики, то вам подойдут курсы, где необходимо постичь основы сборки механических конструкций и применение простой автоматики для реализации работы механизма.
Есть также краткосрочные курсы как очные так и дистанционные, которые помогают взрослым окунуться в мир программирования и робототехники. Огромное их количество для определённого вида профессий — учителей и воспитателей. Но никто не мешает записаться на данный курс человеку другой профессии.
Я часто записываюсь на дистанционные курсы. Для начинающих лучше попробовать бесплатные. Например на Stepik есть огромное количество курсов.
Курсов там огромное количество выбирай на свой вкус.
Если вы хотите создавать игры, то можете воспользоваться электронной версией книги Создание игр в Blender.
Выбираем книги для обучения программированию и робототехники
Второй вариант — это обучаться по книгам. Для начала, я рекомендую обзавестись энциклопедиями по таким разделам, как математика и физика.
Почему энциклопедии? Это связано с тем, что энциклопедии содержат достаточно полную информацию о всех направления науки и неплохое разъяснение по той или иной теме кратко, но доступно. Например, я пользуюсь энциклопедиями по математике и физике для детей Аванта+.
Не забывайте про справочники по данным дисциплинам. Это фундамент и для изучения программирования и для изучения робототехнике, так как эти две дисциплины очень тесно связаны.
Из книг по программированию рекомендую начать с основ. Например, Джейсона Бриггса «Python для детей».
Данный язык программирования достаточно универсален для обучения как самому программированию, так и программированию роботов.
В качестве продолжения, могу рекомендовать данные книги по программированию. Все они связаны с математикой, 3D координатами, списками, функциями и классами 1 из 2.
Как уже и писал ранее python универсален и подойдёт для изучения в робототехники.
Последняя книга охватывает процесс создание модели устройства. Поэтому, перед тем как создавать устройства из материала, необходимо создать модель в том числе и виртуальную. Для этого нам понадобятся книги по 3d моделированию и визуализации физики.
Если вам необходимо отработать навыки в механике и программировании сложных процессов в устройстве, то можно воспользоваться данной книгой.
Есть книга для самых маленьких, которым предстоит знакомится с устройствами 1 из 2.
Если вам будет под силу все эти книги, то можете смело приступать к более сложным вещам: компьютерное зрение и машинное обучение.
Все эти книги я активно использую в своей работе и они мне неоднократно помогали.
Если же вам нравятся языки со статической типизацией, то можно взять что по C++.
Данная книга для студентов
Также есть хорошие книги по Delphi:
Эта книга немного устарела, но коды рабочие для новых версий.
Если ваша мечта касается создания игр, то можно изучить C# на базе Unity.
Всё в ваших руках. Если вы горите этой идей, то вы обязательно достигните своей цели.
И напоследок, моё видео о выборе книг для программирования.
15 лучших книг по программированию с нуля
Где научиться программированию, если не хочется тратить 4 года на скучные лекции? Запишитесь на курсы программирования, там вас быстро обучат азам. После этого совершенствуйтесь хоть всю жизнь, в чём помогут книги из подборки 😉
Роберт Мартин. «Чистый код»
Если ваш код работает, это ещё не значит, что он хороший. Думаете, что название переменных — это мелочь, которая ни на что не влияет? Как же вы ошибаетесь!
Стив Макконнелл. «Совершенный код»
Это именно та книга, которую раз в жизни должен прочитать каждый программист. Да, возможно некоторые моменты здесь устарели, но книга рассказывает о незыблемых истинах. Здесь каждый программист найдет что-то для себя.
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн. «Алгоритмы: построение и анализ»
Книга, которая позволит начинающим лучше понять компьютерные алгоритмы. Вы узнаете о сотнях работающих алгоритмов, с пояснениями принципов их работы без излишней математической строгости.
Хант Эндрю, Томас Дэвид. «Программист-прагматик. Путь от подмастерья к мастеру»
Почему-то сегодня большинство книг по программированию сконцентрировалось исключительно на каких-то технических составляющих, забывая о внутренней составляющей. Поверьте, она не менее важна!
Дональд Кнут. «Искусство программирования»
Монография, которая успела стать классикой в кругу программистов. Изучив все 4 тома серии, вы ознакомитесь со всем, что нужно для освоения профессии.
Юрий Родичев. «Нормативная база и стандарты в области информационной безопасности»
Вы думаете, что программирование — это только код? Как бы не так! Если вы хотите стать настоящим профи, то без изучения стандартов безопасности и чтения профильной литературы не обойтись. Маст-рид для программиста в 2019!
Андрей Бирюков. «Информационная безопасность: защита и нападение»
Книга, которую должен прочесть каждый айтишник и все, кто задействован в вопросах защиты корпоративных ресурсов. Лучшая защита — это нападение. А значит вам нужно «думать, как преступник» и понимать, какими методами можно взломать вашу «неприступную систему».
Том ДеМарко, Тимоти Листер. «Вальсируя с Медведями»
Авторы рассказывают, как идентифицировать риски, управлять ими и извлекать выгоду из рисков. Вы должны рисковать в каждом проекте по разработке, иначе стагнируете.
Избегать рисков — дело проигрышное.
Игорь Савчук. «Отъявленный программист. Лайфхакинг из первых рук»
Это не классический учебник по программированию — здесь собраны мнения звезд IT-индустрии, где каждый поделился личными методами достижения успеха. И пусть эти люди совершенно разные, но их объединяет одно — любовь к программированию!
Чарльз Петцольд. «Код. Тайный язык информатики»
Если вам интересна история информатики — обязательно ознакомьтесь с этой книгой. Чарльз Петцольд создал настоящую азбуку компьютерных технологий, где раскрыта вся история IT: с самых первых попыток программирования до портативных технологий сегодняшнего дня.
Эрик Фримен, Элизабет Робсон. «Паттерны проектирования»
Решили стать Java-программистом? Без понимания паттернов проектирования вы застрянете на повторении упражнений из учебника. Обязательная книга для Java программиста в 2019 году.
Марейн Хавербек. «Выразительный JavaScript»
Ещё одна книга по обучению Java-программированию. Здесь вы найдете основную информацию про выбранный язык программирования, при этом автор не будет перегружать лишней информацией. Идеальная книга для старта.
Брайан Холл. «Beej’s Guide to C Programming»
Этот гайд предназначен для тех, кто только начинает изучать программирование сокетов и ищет точку опоры. Брайан Холл разложил всю информацию по полочкам настолько подробно, что её поймет начинающий программист.
Бьярне Страуструп. «Программирование: принципы и практика использования C++»
Интересуетесь языком C++, но нет опыта программирования? Здесь вы узнаете всю информацию о C++, так как автор книги и придумал этот язык программирования!
Мажед Маржи. «Scratch для детей»
Это один из самых понятных и интересных языков программирования, которому можно научить даже ребенка. Забудьте про зазубривание форм и алгоритмов: программировать так же просто, как сделать башню из конструктора!
Топ-10 книг по программированию для начинающих от профи своего дела
Считается, что программирование — это прикладная дисциплина, и в её изучении упор нужно делать на практику. Особенно в сравнении с другими digital-специальностями — дизайном или маркетингом.
Ведь от дизайнера ожидают не только механического знания Photoshop или Figma, но и наличия вкуса, который тренируется через насмотренность. От маркетолога – баланса между креативностью и контролем за метриками. Поэтому книги в этих сферах больше направлены на то, чтобы вдохновить читателя, научить вариативности решения их задач.
С программистами такое равновесие работает в меньшей степени – знай, как написать функционал из ТЗ, и ты уже неплох. Если можешь предложить несколько вариантов реализации – вообще замечательно. Но есть важные для кодера хард- и софт-скиллс, о которых не прочитаешь в мануалах и на StackOverflow.
Эксперты Skillbox, где обучают более чем 30 различным специальностям в программировании, подготовили подборку книг, за счет которых вы точно повысите свою ценность как профессионала.
Тимлид продюсеров курсов по программированию
Евангелист образовательных программ и автор курса «Профессия Java-разработчик»
Книга будет полезна как опытным разработчикам (если вы сталкивались с различными паттернами на практике, но не знали, что это были именно они) так и новичкам, потому что здесь дается широкий набор исчерпывающих и очень понятных объяснений и примеров. Доступный и интересный способ подачи –– визитная карточка серии «Head First» издательства O’Reilly, так что чтение не будет скучным. Что важно знать: книга ориентируется на Java, но почти все пользователи в сети отмечают, что это не большая проблема для PHP-программистов.
Книга о том, как писать код без лишних комментариев, чтобы он был понятен другим людям, прост и лаконичен. Издание научит вас писать поддерживаемый и хорошо структурированный код, а также постоянно совершенствоваться в его качестве. Есть большое число актуальных советов – от длины и выразительности имен до содержимого функций. В сети много хороших отзывов о книге, но встречается и критика: опытные прогеры отмечают, что есть моменты, с которыми можно спорить. Но если вы новичок, и нуждаетесь в основах –– эта книга будет очень полезна.
Книга о программировании в широком смысле этого слова. О процессе разработки, о качестве программного кода и чертах самого программиста. Многие прогеры причисляют ее к классике и must read литературе в своей специальности. Содержит не только общие сведения, но и детали –– поэтому даже опытные специалисты найдут ее полезной. Все примеры здесь преимущественно на С++ и Visual Basic. Если вы front-end-разработчик –– общий смысл уловить будет несложно, но в деталях синтаксиса придется разбираться подольше.
Еще один must have. Хорошо структурированный и очень большой справочник по всем основным алгоритмам с подробными и понятными примерами. Будет полезен как для понимания работы встроенных в языки программирования алгоритмов, так и для проектирования собственных. Книга переиздавалась как минимум три раза: в последнем издании убрали главы о сортирующих сетях и биномиальных кучах и внесены правки в синтаксис псевдокода. Так что для знакомства лучше выбирать более поздние издания –– они значительно актуальнее.
Фундаментальный труд, который разрабатывался на протяжении нескольких десятилетий, о математике, глубоких аспектах различных алгоритмов и структур данных. Билл Гейтс сказал об этой книге: «Если вы считаете себя действительно хорошим программистом, прочитайте Искусство программирования [Кнута]… Если вы сможете прочесть весь этот труд, то вам определенно следует отправить мне резюме».
Уже вторая книга этого автора в нашей подборке. Очень подробное пособие о том, как рассчитывать сроки разработки программного обеспечения. Современный вариант классического труда Фредерика Брукса «Мифический человеко-месяц», написанного в 1975 году. Поможет научиться реалистично подходить к оценке затрат на разработку продуктов.
Работа любого программиста состоит не только из написания кода и сидения за компьютером, но и из взаимодействия с другими людьми — коллегами, подчиненными и руководителями. При таком общении важен эмоциональный интеллект. О том, что это такое и каким он бывает, подробно рассказывает эта книга. А если тема личных эмоций и достижения духовного равновесия окажется вам близка, можно посмотреть и более ранние книги автора. Например, «Многообразие медитативного опыта».
Бестселлер, о котором вы, наверняка, слышали. Книга, которая позволит разобраться в себе, в своих ценностях, амбициях и мотивах. Для многих даже заменяет психоаналитика, помогает понять суть и пути решения различных внутренних конфликтов. Если копнуть глубже, принципы позитивного мышления, которые изложены в книге, могут показаться знакомыми и простыми истинами. Но разве мы всегда помним о них в ежедневном потоке дел и прогерских кодов?
Книга одинаково полезна и тимлидам, и рядовым программистам. Лучше смотреть третье издание – там 6 новых глав с актуальными дополнениями. По английски она называется «Peopleware» – что еще больше говорит о ее содержании. Книга о людях, о работе в команде и о том, что ваша эффективность зависит не только от техники, но и от социальных факторов. Хвалят менеджеры и управленцы почти любых сфер – число положительных отзывов это уже веский повод обзавестись своим экземпляром.
Книга о том, как создавать доступные интерфейсы и делать программное обеспечение понятным даже для тех, кто далек от компьютерных технологий. Один из важных тезисов –– интерфейс вы создаете для тех, кто будет им пользоваться. Мысль кажется очевидной, но практика показывает, что программист часто может забыть про целевую аудиторию на любом этапе разработки. Как этого не допустить? Как настроить обратную связь и нарисовать портрет ваших пользователей? Что такое метод персон? Книга ответит на эти вопросы и даст любому разработчику +100% к профессиональной эффективности.
ТОП-10 книг по программированию для начинающих
Решили стать программистом и войти в IT? Новички обычно теряются перед большим количеством материалов и не знают, с чего начать. В этой статье были собраны лучшие книги по программированию для начинающих с нуля.
Чистый код: создание, анализ и рефакторинг. Роберт Мартин
Эта книга не просто о том, как научиться кодить, а о том, как делать это «чисто» и профессионально. На примере реальных проектов будет рассмотрен код с различных точек зрения. Книга поможет сформировать понимание того, как выглядит хороший исходный текст программы, а как плохой.
В первой части рассказывается о приемах и принципах написания «чистого» кода, во второй содержатся практические сценарии по нарастающей сложности. В третьей — описание пути человеческого мышления в процессе чтения или написания кода.
Фундаментальная книга, которую должен прочитать каждый разработчик на старте карьеры в IT.
Идеальный программист. Роберт Мартин
В этой книге Роберт Мартин постарался объяснить, что значит быть профессиональным программистом. Основываясь на личном опыте, он рассказал о методах, инструментах и практике разработки «идеального» программного обеспечения.
Автор максимально насытил книгу советами касательно разных аспектов программирования: от оценки проекта до тестирования ПО.
Легкий способ выучить Java. Брайсон Пэйн
Java считается одним из самых востребованных языков программирования в мире, но при этом он достаточно сложный для изучения. Практикующий программист Брайсон Пэйн разработал собственный метод изучения языка Java.
После прочтения новички ознакомятся со средой разработки, научатся находить и исправлять ошибки в коде, создавать простые игры. Хороший самоучитель для начинающего айтишника.
Код: тайный язык информатики. Чарльз Петцольд
Автор в развлекательной и простой форме объясняет, как устроен компьютер. Чарльз Петцольд устроил экскурс в историю техники, дойдя до самых первых моделей. В процессе чтения становится понятно: чем дальше в прошлое, тем проще технологии. Поэтому некоторые особенности работы ПК гораздо проще объяснить на примере старых образцов.
Чарльз основательно объясняет принцип работы компьютера. Он рассказывает о микросхемах, работе процессора, ОС и о многом другом. По истине культовая книга.
Кодеры за работой. Питер Сейбел
Программисты — не публичные личности, поэтому самые интересные аспекты их работы остаются за кадром. Питер Сейбел взял интервью у 15 высококлассных разработчиков, среди которых: Джо Армстронг, Кен Томпсон, Дуглас Крокфорд и многие другие.
На основе личного опыта они рассказывают, как проектировать ПО, как выбор языках программирования влияет на продуктивность и т.д. Также профессионалы поделились своим мнением касательно будущего IT. Особенно интересно для новичков будет узнать, как начинали современные гуру программирования.
Путь программиста. Джон Сонмез
Эта книга поможет начинающим программистам лучше понять свою профессию и коллег. Автор рассказывает, что нужно для того, чтобы стать успешным IT-специалистом и всегда оставаться «на плаву», как продолжать свое развитие и получать от своей работы настоящее удовольствие.
Джон Сонмез честно рассказывает о трудностях, с которыми столкнутся все новички. Программисты чаще многих других подвержены стрессам из-за дедлайнов. А технологии так быстро развиваются, что IT-специалисты должны постоянно следить за трендами и самосовершенствоваться.
Программист-фанатик. Чед Фаулер
Эта книга — сборник практических советов и рекомендаций, касающихся ситуаций, с которыми на каком-то этапе может столкнуться каждый программист. Сюда можно отнести: отсутствие мотивации, плохие отношения с коллегами и руководством и т.д.
Понимание, как преодолеть такие проблемы, приходит лишь с многолетним опытом. И Чед Фаулер в своей книге делится полученными знаниями. Он рассказывает, как построить успешную карьеру в IT-сфере.
Джоэл о программировании. Джоэл Спольски
Джоэл простым языком пишет о сложных вещах, приправляя это отличным юмором. Автор дает полезные советы о том, как написать хороший код. Также он рассказывает, как писать спецификацию и составлять план работы.
Джоэл Спольски делится способами поиска багов, их устранения и рассказывает о важности использования своего программного обеспечения.
Алгоритмы для чайников. Джон Поль Мюллер, Лука Массарон
В книге авторы пишут о том, как алгоритмы влияют на повседневную жизнь человека. Она для тех, кто хочет понять, как научиться использовать алгоритмы для решения реальных задач.
Авторы рассматривают широкий спектр вопросов, касающихся алгоритмов: стандарты сортирования, поиск, работа с объемными данными и даже поднимается вопрос искусственного интеллекта. Все это будет подкреплено демонстрацией реализации алгоритмов на конкретных примерах на языке Python.
Самоучитель PHP 7. Игорь Симдянов, Максим Кузнецов
Учебник по основам программирования для чайников. Опытные разработчики рассказывает о нововведениях языка и вытекающих изменениях в разработке веб-сайтов. В книге делается упор на объектно-ориентированное программирование, генераторы, шаблоны проектирования и взаимодействие с базами данных.
В конце глав приведены задания, позволяющие закрепить материал и освоить разделы языка, которые не вошли в книгу.
Знаете другие хорошие книги для начинающих программистов для изучения IT технологий? Есть свое мнение по приведенном списку? Пишите их в комментариях!
15++ классических книг для программиста
Только мастриды, и только проверенные временем — для новичков и профессионалов.
Tartila / Africa Studio / valdis torms / Julia Zavalishina / Shutterstock / Erik Karits / Gary Yost / Jack Hamilton / Byron Burns / Darko Pribeg / Unsplash / страница Brian Tracy в Facebook / Анна Рыжакова / Skillbox Media
Мы выбрали книги, которые не привязаны к конкретным языкам программирования, технологиям или инструментам. Они рассказывают об алгоритмах и структурах данных, шаблонах проектирования и рефакторинге, учат мыслить как программист, готовят к собеседованию и помогают строить успешную карьеру.
Сложность книжек мы оценили смайликами от одного 🤯 (понятно и новичку)
до 🤯 🤯 🤯 🤯 🤯 (без программистского опыта или спецподготовки будет непросто).
Фулстек-разработчик. Любимый стек: Java + Angular, но в хорошей компании готова писать хоть на языке Ада.
1. «Программист-прагматик. Ваш путь к мастерству» (2-е, юбилейное издание
к 20-летию выхода книги)
Дэвид Томас, Эндрю Хант
Перевод с английского — И. В. Берштейн
Издательство «Вильямс», 2020 год, 368 с.
Оригинальное название: The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition) by David Thomas & Andrew Hunt
Зачем читать: чтобы получить общее представление о работе программистов.
Кажется, в этой книге есть всё, что пригодится программисту: от того, как стать ответственным, до анализа ошибок в алгоритмах и шифрования данных.
Если разбирать все эти темы от и до, получился бы неподъёмный труд на 100500 томов, а не 300 страниц «Программиста-прагматика». Так что книга даёт лишь общее представление — как карта без детализации.
«Прагматик» расширяет кругозор, делает человека своим в тусовке разработчиков. В ней много классных цитат и тонкого профессионального юмора, например:
«Есть старый анекдот об американской компании, заказавшей 100 тысяч микросхем у японского производителя. В спецификации на микросхемы было, в частности, указано, что брак должен составлять 1 штуку на 10 тысяч хороших микросхем.
Заказ был доставлен через несколько недель и состоял из одной крупной коробки, содержавшей тысячи микросхем, и другой, мелкой, в которой было всего лишь десять микросхем. К этой коробке была приклеена этикетка, на которой было написано „Бракованные микросхемы“:
Хорошо, если бы и у нас контроль качества был на таком же уровне».
2. «Чистый код: создание, анализ и рефакторинг» (Библиотека программиста)
Роберт Мартин
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 464 с.
Оригинальное название: Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin
Зачем читать: чтобы научиться замечать типичные ошибки и не делать их самому. Например, не пускать на самотёк именование переменных, подпрограмм и модулей, форматирование кода, обработку граничных условий — то, что по отдельности кажется мелочью, а всё вместе безбожно портит код.
Начинающим программистам иногда кажется, что раз программа заработала, то и ладно. Ни к чему с ней дальше возиться: незачем тщательно продумывать структуру классов, обрабатывать все граничные условия и уж тем более заботиться о говорящих именах переменных, полезных комментариях и других «мелочах».
Дядюшка Боб считает, что внимание к деталям, умение отличать хороший код от плохого и привычки чистюли сделают из кодера настоящего программиста.
Мартин и соавторы на примерах показывают, как грамотно проектировать архитектуру приложения и писать чистый код, а в конце перечисляют признаки «дурно пахнущего кода» — типичные ошибки.
В общем, для создания хорошего приложения нужно потрудиться — самим же потом легче будет его сопровождать.
Заметки на полях: если бы каждый разработчик в начале карьеры прочитал эту книгу, мир был бы лучше, а люди — добрее. Большинство советов Мартина актуальны последние лет двадцать — и наверняка будут полезны ещё очень долго.
3. «Совершенный код. Мастер-класс»
Стив Макконнелл
Перевод с английского — В. Г. Вшивцев
Издательство «БХВ», 2017 год, 896 с.
Оригинальное название: Code Complete by Steve McConnell
Зачем читать: чтобы узнать, как довести любую программу до совершенства. Ну или хотя бы попытаться 🙂
Грамотное конструирование — это секрет успеха. Вот основная идея автора книги. Причём в конструирование входит и планирование, и кодирование, и тестирование готовой программы.
Из книги вы узнаете:
Заметки на полях: если вы дружите с английским, то советую читать книгу в оригинале. Тогда вам не придётся подолгу гадать, о чём вообще говорит переводчик: продираться через трёхъярусный канцелярит, англицизмы и поминать редактора из «БХВ» недобрым словом. Убедитесь сами по цитате из русского издания:
«Общей чертой всех программистов, создающих высококачественное ПО, является использование высококачественных методов, ставящих ударение на качестве ПО в самом начале, середине и конце проекта».
4. «Паттерны объектно-ориентированного проектирования»
Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес
Перевод с английского — А. Слинкин
Издательство «Питер», 2021 год, 448 с.
Оригинальное название: Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Ralph Johnson, John Vlissides, Richard Helm
Зачем читать: чтобы узнать про шаблоны программирования из первоисточника.
Четвёрка авторов, она же «Банда четырёх», среди программистов известна не меньше, чем «Битлз» во всём мире. И знамениты они как раз тем, что первыми детально описали 23 основных шаблона проектирования — показали, как организовывать взаимодействие классов и объектов, чтобы решать типичные задачи программирования.
Многие считают, что эта книга устарела, — первое издание вышло 25 лет назад, и за это время было написано много других книг о шаблонах. Однако принципы классификации, да и сами шаблоны, до сих пор актуальны.
Заметки на полях: прочитать книгу «Банды» — всё равно что осилить Шекспира в подлиннике: сложновато, но мозг тренирует отлично. К тому же всегда можно осовременить полученные знания книгой попроще и поновее 🙂
5. «Head First. Паттерны проектирования» (обновлённое юбилейное издание)
Эрик Фримен, Элизабет Робсон, Кэти Сьерра, Берт Бейтс
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 656 с.
Оригинальное название: Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman & Elisabeth Robson / Bert Bates / Kathy Sierra
Зачем читать: чтобы перестать ненавидеть шаблоны и начать, наконец, их применять на практике 🙂
Тот самый случай, когда проще — не значит хуже. В этой книге из серии Head First знаменитого издательства O’Reilly, похоже, достигнут идеальный компромисс между сложностью объясняемых концепций и простотой подачи материала.
Создать программу для работы с данными метеостанции или написать код для расчёта стоимости напитка в кофейне Starbuzz — на таких игровых задачах авторы объясняют, как применять основные паттерны проектирования, и учат достраивать архитектуру грамотно — соблюдая все важные принципы. Например, открывать классы для расширения, но закрывать их для изменений.
Заметки на полях: прочитав эту книгу, вы не просто разберётесь с шаблонами — на какое-то время вы станете их ярым фанатом и будете пугать коллег, пытаясь пропихнуть шаблон даже для самой маленькой задачи 🙂
6. «Шаблоны корпоративных приложений» (Signature Series)
Мартин Фаулер
Перевод с английского — Издательский дом «Вильямс»
Издательство «Вильямс», 2020 год, 544 с.
Оригинальное название: Patterns of Enterprise Application Architecture by Martin Fowler with contributions from David Rice et al. (Addison-Wesley Signature Series)
Зачем читать: чтобы узнать, как решают проблемы больших и очень больших приложений.
И снова про шаблоны, но уже про другие — про шаблоны высокого уровня. Корпоративные приложения автоматизируют сложные бизнес-процессы и нередко работают с довольно большими объёмами данных. При этом они, как правило, интегрируются и обмениваются данными с другими системами. Всё это порождает специфические трудности и вопросы.
Из каких слоёв может состоять приложение, как представлены данные в вебе, как управлять состоянием системы — вот несколько из десятков вопросов, на которые отвечает эта книга.
В первой части — беглый обзор типовых проблем, а во второй Фаулер рассказывает, как выбрать архитектурное решение. Автор предлагает более 40 подходов, иллюстрируя их примерами из жизни и фрагментами кода.
Заметки на полях: с первого издания книги прошло больше 10 лет, появились новые инструменты и технологии, но вот типичных проблем у корпоративных приложений не очень-то убавилось — поэтому книга всё ещё актуальна.
7. «Психбольница в руках пациентов. Алан Купер об интерфейсах»
Алан Купер
Перевод с английского — Е. Самородских
Издательство «Питер», 2018 год, 384 с.
Оригинальное название: The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper
Зачем читать: чтобы лучше понимать целевую аудиторию, что ей нужно, ну и не ругаться почём зря с коллегами-дизайнерами 🙂
Гибкая архитектура, изящные алгоритмы, паттерны и принципы именования — за всем этим программист порой забывает, что программное обеспечение должно быть не только качественным, но нужным, полезным и понятным для потребителей.
Хорошо, если в компании есть UX/UI-дизайнеры, которые анализируют потребности пользователей, сценарии их работы и проектируют грамотный интерфейс. Но иногда за эту часть работы отвечают те же программисты.
Если отнестись к проектированию слишком легкомысленно, программа может оказаться никому не нужной. Автор подтверждает это множеством историй о провале маленьких фирм и крупных корпораций. Купера стоит читать хотя бы затем, чтобы не оказаться виновником очередной такой неудачи.
Заметки на полях: книга не отнимет много времени, но зато сэкономит его всякий раз, когда нужно сделать работающую форму по краткому ТЗ — без помощи дизайнера и ещё вчера.
8. «Искусство программирования»
Дональд Кнут
У третьего (актуального) издания на английском языке семь томов. На русский переведено четыре из них: две части первого тома, второй и третий, а также том 4А.
Перевод с английского — И. В. Красиков, С. Г. Тригуб, Ю. Г. Гордиенко
Издательство «Вильямс», 2020 год, 720 + 160 + 832 + 960 с.
Оригинальное название: The Art of Computer Programming by Donald Knuth
Зачем читать: чтобы прокачаться в вычислительной математике и анализе алгоритмов.
Самый классический и самый фундаментальный труд в нашей подборке: многотомник от всемирно признанного гуру в области программирования, автора 19 монографий и более сотни статей.
Труд настолько фундаментален, что в первой книге больше математики, чем программирования: математическая индукция, степени и логарифмы, матрицы и определители — вот это всё. Попадаются задания вроде «докажите утверждение» или «найдите простую замену для сложной формулы» — Кнут считает, что, прежде чем пользоваться готовыми чужими решениями, нужно разобраться в азах.
Далее в этом и последующих томах автор учит анализировать и оценивать алгоритмы, даёт «золотые решения» классических задач (сортировка, поиск, обход деревьев) — и сравнивает, чем хорошо и плохо каждое. Всё это помогает выбирать оптимальные вычислительные стратегии в реальных проектах.
Заметки на полях: читать непросто, но нужно. Тем более что про классику алгоритмизации и вычислительную сложность до сих спрашивают на серьёзных собеседованиях. А первый том «Искусства» даже завершается цитатой Билла Гейтса:
«Если вы смогли дочитать это до конца, то определённо должны отправить мне своё резюме».
9. «Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих»
Адитья Бхаргава
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 288 с.
Оригинальное название: Grokking Algorithms: An illustrated guide for programmers and other curious people by Aditya Y. Bhargava
Зачем читать: чтобы понять, что алгоритмы — это вовсе не скучно. А ещё — разобраться с оценкой их сложности, если вдруг после Кнута вы так и не поняли, как же её определить.
Эта книга тоже про алгоритмы, но читается как увлекательный рассказ. Простым языком автор пишет о графах, сортировке и поиске, жадных алгоритмах и динамическом программировании — причём со множеством примеров.
Это интересно! Глагол «грокнуть» (от англ. to grok) означает всецело разобраться, вникнуть в самую суть. А придумал его фантаст Роберт Хайнлайн для романа «Stranger in a strange land» («Чужак в чужой стране») в 1961 году.
Если вам интересно, как устроен рекомендательный алгоритм Netflix или как поисковый бот Google понимает, проиндексирована ли уже веб-страница, — прочитайте эту книгу.
Заметки на полях: осторожно! Читая книгу, можно всерьёз увлечься динамическим программированием, и тогда вам придётся искать работу там, где оно востребовано. Обычное прикладное ПО и многие сферы вроде финансовой останутся за бортом.
10. «Алгоритмы. Построение и анализ»
Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
Перевод с английского — И. В. Красиков
Издательство «Вильямс», 2020 год, 1328 с.
Оригинальное название: Introduction to Algorithms by Thomas Cormen / Charles Leiserson / Ronald Rivest / Clifford Stein.
Зачем читать: книг об алгоритмах не бывает слишком много 🙂 Алгоритмов и самих немало, и разобраться в них с первого раза (ладно, со второго и третьего тоже) бывает непросто.
Так что лучше черпать из всех источников: одна книга лучше объяснит сортировку, другая — жадные алгоритмы, третья — уложит в вашей голове сложные структуры данных 🙂
Книга Кормена и сотоварищей почти такая же всеобъемлющая, как труд Кнута — её можно применять как справочник по основным структурам данных и алгоритмам. Только здесь меньше математики и больше практических примеров. И «Алгоритмы» универсальнее, потому что знать конкретный язык программирования не обязательно — примеры написаны на псевдокоде.
С каждым новым изданием авторы обновляют и дополняют материал: например, в третьем появились главы об актуальных ныне многопоточных алгоритмах. Так что ищите самый свежий вариант.
11. «Мифический человеко-месяц»
Фредерик Брукс
Перевод с английского — А. В. Логунов
Издательство «Питер», 2020 год, 368 с.
Оригинальное название: The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) by Frederick Brooks
Зачем читать: чтобы узнать о жизненном цикле программного проекта — понять, почему в IT так часто срываются сроки и как с этим бороться.
Эта книга будет полезна:
Но речь в книге не только об оценках. Это руководство попадает в подборки мастридов уже больше 40 лет. Оно учит решать проблемы, которыми проектные команды болеют до сих пор: нереалистичные оценки, сложности из-за разрастания команды и так далее.
Заметки на полях: помните, что книга написана давно (динозавры на обложке явно неспроста). И если вы всерьёз думаете о карьере менеджера проекта — почитайте о гибких методологиях. Тем более автор поменял мнение по некоторым вопросам — что и признаёт в девятнадцатой главе последнего издания.
12. «Рефакторинг. Улучшение проекта, существующего кода»
Мартин Фаулер
Перевод с английского — И. В. Красиков
Издательство «Вильямс», 2019 год, 448с.
Оригинальное название: Refactoring. Improving the Design of Existing Code by Martin Fowler
Зачем читать: чтобы разобраться, когда применять рефакторинг, а главное — как это делать и не развалить весь проект.
Рефакторинг — это, по сути, улучшение проекта после того, как код написан. Однако рабочее кредо многих программистов (и их начальников) звучит так: « Работает — не трогай». Они не хотят тратить деньги и время на изменение программы, если результат не виден снаружи. Так и появляются проекты с многочисленными костылями и заплатками в критичных местах, копится технический долг. Со временем всё это становится нежизнеспособным.
Фаулер пишет о типичных проблемах в коде и о том, как их исправить: шаг за шагом, начиная с написания тестов и заканчивая последовательным улучшением исходников.
Заметки на полях: это одна из тех книг, которые формируют сознание разработчика. Вердикт: читать и по возможности перечитывать.
13. «Эффективная работа с унаследованным кодом»
Майкл Физерс
Перевод с английского — И. В. Берштейн
Издательство «Вильямс», 2016 год, 400 с.
Оригинальное название: Working Effectively with Legacy Code by Michael C. Feathers
Зачем читать: чтобы исправить чужие ошибки и не наделать своих.
Прилагательное в заголовке было бы лучше оставить без перевода — legacy-код. Потому что именно в таком виде понятие знакомо любому программисту-профи. Знакомо до боли! В прямом смысле! Вызывает в памяти простыни запутанного кода, мучительные попытки понять, что там происходит, и злобное бессилие, ведь быстро внести правку или добавить фичу при таком бардаке — задачка со звёздочкой. В общем — о бессонных ночах и дёргающемся глазе 🙂
Если бы авторы «легаси» вовремя проводили рефакторинг по заветам Мартина Фаулера (о его книге мы рассказывали чуть выше), наследникам не пришлось бы заниматься генеральной уборкой на «городской свалке». Но в реальности программистам часто приходиться копаться в чужом коде и менять его. Вот Майкл Физерс и написал книгу о том, как это делать эффективно и с меньшими страданиями.
Заметки на полях: практикам можно читать книгу сразу со второй главы. Она написана в виде ответов на типичные вопросы, возникающие при реорганизации кода:
Кроме решений, которые авторы выработали в борьбе со сторонним кодом, в книге описывается, как лучше организовать рефакторинг и зачем вообще нужны все эти изменения.
14. «Идеальный программист. Как стать профессионалом разработки ПО»
Роберт Мартин
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2019 год, 224 с.
Оригинальное название: The Clean Coder: A Code of Conduct for Professional Programmers by Robert C. Martin
Это вторая книга Роберта Мартина в нашей подборке. Многие мысли в ней выглядят банальными. Например, совет «если вы устали или не можете сосредоточиться — не пишите код» или глава о том, что за свои слова и решения нужно отвечать.
Некоторые советы кажутся спорными. Например, «в любой непонятной ситуации практикуйте парное программирование». Другие — вроде утверждения о том, что «каждый программист должен уметь работать с сетями Петри », — просто устарели.
Но эти мелочи не мешают книге служить толковым руководством для программиста-профессионала в ситуациях, когда ему нужно оценить трудоёмкость задачи или найти компромисс с менеджером — объяснить, что нельзя получить проект за день, если на реализацию его нужно две недели.
Заметки на полях: книга основана на историях из жизни дядюшки Боба — причём вполне реальных. Так что читатели узнают, как раньше писали и отлаживали программы: перфокарты, магнитные ленты — вот это вот всё.
15. «Думай как программист. Креативный подход к созданию кода. C++ версия»
Антон Спрол
Перевод с английского — Е. А. Матвеев
Издательство «Бомбора», 2018 год, 272 с.
Оригинальное название: Think Like a Programmer: An Introduction to Creative Problem Solving by V. Anton Spraul
Зачем читать: чтобы узнать о простых подходах к решению сложных задач.
Программировать — это не только выучить пару десятков ключевых слов и научиться их правильно сочетать. Разработчикам нужно уметь мыслить нестандартно, находить решения сложных творческих задач — и только потом воплощать их в коде.
В этой книге множество головоломок с решениями: есть классические вроде переправы волка, козы и капусты через реку, а есть целые группы задач — например, легко решаемых рекурсивно или на типичную обработку массивов.
Спрол учит думать как программист, использовать свои сильные и слабые стороны, находить аналогии и обязательно составлять план — прежде, чем начинать что-то делать.
Заметки на полях: автор много лет преподаёт программирование и, видимо, делает это хорошо. Книга настолько доступно написана, что подойдёт даже ребёнку, который недавно начал изучать программирование.
16. «Карьера программиста»
Гейл Лакман Макдауэлл
Перевод с английского — Е. А. Матвеев
Издательство «Питер», 2021 год, 688 с.
Оригинальное название: Cracking the Coding Interview by Gayle Laakmann McDowell
Зачем читать: чтобы подготовиться к собеседованию на позицию разработчика, а заодно систематизировать знания, увидеть и устранить возможные пробелы.
Это тот самый «+1» и, возможно, самая практичная книга в нашей подборке. В ней собраны 189 вопросов из тех, что задавали кандидатам на собеседованиях в Google, Microsoft, Amazon и других крупных IT-компаниях. Конечно, с ответами.
Разбираются и соискательские темы:
Гейл разбирает типичные ошибки и стратегии подготовки к собеседованию и даже рассказывает о закулисье некоторых компаний — например, сколько и каких этапов должен пройти кандидат.
Заметки на полях: эта книга не поможет разве что при полном отсутствии базовых знаний. В остальных случаях — причешет и принарядит для потенциального работодателя как ваше резюме, так и ваши ответы.
Минутка рефлексии
Всё это лучшие и, несомненно, полезные книги. Но если бы я вдруг вернулась в прошлое, чтобы посоветовать себе самые-самые — это были бы:
Эти книги пригодились мне больше всего. Они полны дельных советов, написаны доступным языком и помогают улучшать качество кода на любом языке программирования.
Если пока не читали ничего из нашей подборки — начните с этой пятёрки. И до встречи в комментариях к коду 😉
Так многие программисты называют Роберта Мартина (да и он себя).
Сеть Петри — вид графа для моделирования динамических дискретных систем. Была предложена немецким математиком и информатиком Карлом Петри. Подробнее в «Википедии».
Помните, многие программисты так называют Роберта Мартина? А он и рад и отзывается 🙂