Программирование с чего начать книги
С каких книг можно начать изучать программирование (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 для детей»
Это один из самых понятных и интересных языков программирования, которому можно научить даже ребенка. Забудьте про зазубривание форм и алгоритмов: программировать так же просто, как сделать башню из конструктора!
Книги по программированию: как читать и что именно
Начинающие программисты часто спрашивают, какие книги по программированию читать и как, чтобы лучше усвоился материал. Отвечаем на эти вопросы.
В этой статье мы расскажем, когда и как нужно читать, а также какие книги выбрать в соответствии с конкретным языком программирования.
Зачем нужны книги по программированию?
Провоцирует данный вопрос изобилие курсов и видеотуториалов, которые якобы сводят пользу чтения на нет, хотя это далеко не так. Книга – довольно объемный ресурс, предназначенный для основательного изучения материала. Техническая книга предоставляет не только информацию о техниках и советы, но также взгляд с высоты птичьего полета на определенные концепции, идеи и общее понимание предмета.
Техническая книга не читается за один вечер подобно художественной литературе. Зачастую она забирает дни, недели, а иногда и месяцы. Но даже столь «растянутый» срок не гарантирует, что вы быстро освоите все изложенное. Таким образом, брать в самом начале большую техническую книгу (а то и две) и просто читать – малоэффективный метод.
Сперва определитесь, что планируете осваивать.
Если речь идет о сложных технологиях, низкоуровневых языках программирования, абстрактных понятиях и концепциях, есть смысл основательно браться за теорию и, возможно, в процессе что-то пробовать на практике.
Например, если сперва программировать на Java или Python, а затем перейти на что-то вроде языка C, пытаясь его изучить с помощью туториалов, – ничего не выйдет. Низкоуровневое управление памятью, указатели, массивы и уйма других интересных вещей, о которых вы ранее даже не догадывались, не позволят сделать что-либо стоящее.
В этом случае нужно брать книги по программированию и читать. Иногда следует прочесть хотя бы половину учебника, чтобы написать несложную программу. Грубо говоря, сперва нужно в теории понять определенные вещи, и только потом переходить к практике.
Другой пример:
Если начинаете изучать несложные технологии, где в рамках первых экспериментов достаточно знать несколько простых фактов, читать целую книгу нет смысла. По крайней мере, с самого начала.
Допустим, разбираясь с HTML достаточно пройти пару онлайн-туториалов, чтобы сразу начать экспериментировать на практике, ведь для написания нескольких несложных тегов не нужно осваивать высшую математику. Достаточно информации о том, какие теги бывают и когда их использовать.
То же самое с Python: сначала несколько быстрых онлайн-курсов на несколько часов, а дальше – практиковаться, закрепляя полученные знания. Параллельно можно читать базовую книгу, которая поможет разобраться в непонятных моментах, что не всегда освещаются в коротких видеокурсах и даже в продолжительных видеолекциях.
Подытожим:
Как лучше читать книги по программированию?
Высшая математика – это зачастую исключительно теория. Программирование же в большинстве случаев является практикой.
Книги по технологиям (языки программирования, web-разработка, создание мобильных приложений) переполнены практическими примерами и заданиями, а потому нужно основательно «набить руку»: только так материал правильно осядет в голове.
Правило первое: только практика набивает руку.
Следует испытывать описанные в книге примеры сразу, в процессе чтения. Вы также можете усложнять их самостоятельно, придумывать свои собственные задачи с использованием только что изученного материала. Это хорошая практика за неимением учителя или репетитора.
Правило второе: перечитывайте.
Книги по программированию просто предназначены для этого, тем более, если конкретная технология или язык программирования для вас в новинку, и опыта работы с ними нет. С первого раза понять всю изложенную в книге информацию не получится. После первого прочтения и некоторой практики вернитесь к теоретическому изучению пройденного материала снова.
Правило третье: пять книг не лучше, чем одна.
Погоня за количеством в надежде забить свой шкаф «умными» книжками ни к чему не приведет. Изучая новое, бывает тяжело заставить себя перейти к практике. Чтобы оставаться в зоне комфорта, мы часто утешаем себя тем, что мало знаем, и попадаем в ловушку под названием «Вечный Студент» – человек, который постоянно что-то учит, но на самом деле ничего со своими знаниями не делает.
Чтобы начать работать над новой для нас технологией, достаточно пройти одну базовую книгу. Если вы считаете иначе – поделитесь в комментариях своими мыслями по этому поводу: будет интересно подискутировать на тему.
Не загоняйте себя в тупик вопросами в стиле «Прочел Лутца по Питону. Что читать дальше?». Лучше ответьте на вопрос «Сколько строчек кода вы написали в процессе чтения?». Что вы получите от следующей книги по программированию на ту же тему, если и эта не закрепилась на практике? Перечитайте книгу и попробуйте реализовать из нее что-то на практике.
Не гонитесь за количеством. Для начала хватит одного курса, одной книги, одного туториала, одного видеоурока, чтобы написать первые строки кода. Без этих строк грош цена следующей толстой книге.
Какие книги по программированию читать?
Небольшой список, в котором собраны наши подборки книг по разным языкам программирования и технологиям. Эта литература пригодится начинающим разработчикам.
Топ-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% к профессиональной эффективности.
Топ-25 самых рекомендуемых книг по программированию
Авторизуйтесь
Топ-25 самых рекомендуемых книг по программированию
В интернете полно списков «Лучших книг по программированию за всё время» и многие из них советуют разные (не всегда хорошие) книги. Один программист решил узнать, какие книги рекомендуют чаще всего. Для этого он взял все эти списки, проанализировал их и выложил свою мета-подборку из 25 книг. Делимся ей с вами.
Примечание Все книги, для которых есть перевод, мы привели на русском языке. Оригинальный список можно посмотреть здесь.
Немного о методологии
Автор загуглил что-то вроде «лучшие книги по программированию» и собрал найденные ссылки. После удаления дубликатов осталось 150 штук. По заголовкам страниц автор также сразу отбросил списки книг:
После этого у автора осталось 200 HTML-файлов, для которых он написал CSS-селекторы для извлечения названий книг. Наконец, он нормализовал эти названия, приведя их к общему виду, и составил этот список, исходя из частоты упоминания каждой книги.
Примечание Более подробное описание с примерами кода можно найти в оригинале статьи.
25 место
«Continuous Delivery», Jez Humble & David Farley
Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours— sometimes even minutes–no matter what the size of a project or the complexity of its code base.
Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk delivery process. Next, they introduce the «deployment pipeline,» an automated process for managing all changes, from check-in to release. Finally, they discuss the «ecosystem» needed to support continuous delivery, from infrastructure, data and configuration management to governance.
24 место
«Алгоритмы на Java», Роберт Седжвик, Кевин Уэйн
Книга Седжвика и Уэйна «Алгоритмы на Java» является классическим справочным руководством в котором содержится необходимый объём знаний для программиста в области алгоритмов, накопленных за последние несколько десятилетий
В книге представлен широкий спектр рассматриваемых тем: исчерпывающее толкование структур данных и алгоритмов сортировки, поиска, обработки графов и строк, включая пятьдесят алгоритмов (код на сайте), которые должен знать каждый программист. Описываются новые реализации алгоритмов на Java, написанные в ясном модульном стиле, при котором весь код доступен читателю и полностью готов к использованию. В книге изучение алгоритмов на Java ведётся в контексте важнейших научных, инженерных и коммерческих приложений. Клиенты и алгоритмы выражены с помощью реального кода, а не псевдокода, как во многих других книгах.
Эта книга отличается от множества других ясным и кратким текстом, детальными примерами с иллюстрациями, тщательно подобранным кодом, историческим и научным контекстом, а также упражнениями для самостоятельной проработки на всех уровнях. В книге представлены точные соображения относительно производительности, поддерживаемые соответствующими математическими моделями и эмпирическими исследованиями, которые подтверждают достоверность этих моделей.
23 место
«Сам себе программист. Как научиться программировать и устроиться в Ebay?», Кори Альтхофф
Автор книги всего за год научился программировать, что само по себе немало. Однако Кори Альтхофф пошёл дальше, и научившись программировать, он устроился разработчиком в одну из самых серьёзных современных IT компаний — Ebay. Как ему удалось? Читайте эту книгу, изучайте программирование на языке Python по уникальной авторской методике — вам это тоже по силам!
22 место
«Rapid Development», Steve McConnell
Corporate and commercial software-development teams all want solutions for one important problem — how to get their high-pressure development schedules under control. In «Rapid Development», author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. Inside, you’ll find:
21 место
«Кодеры за работой. Размышления о ремесле программиста», Питер Сейбел
Программисты — люди не очень публичные, многие работают поодиночке или в небольших группах. Причем самая важная и интересная часть их работы никому не видна, потому что происходит у них в голове. Питер Сейбел, писатель-программист, снимает покров таинственности с этой профессии. Он взял интервью у 15 величайших профессионалов: Кена Томпсона, создателя UNIX, Берни Козелла, участника первой реализации сети ARPANET, Дональда Кнута, Гая Стила, Джейми Завински, Саймона Пейтон-Джонса, Питера Норвига, Дугласа Крокфорда, Джошуа Блоха, Брендана Айка, Джо Армстронга, Брэда Фицпатрика, создателя Живого Журнала, и других.
Все они «подсели» на программирование ещё в школе. Тогда, на заре зарождения отрасли, лишь в немногих учебных заведениях читались курсы по компьютерным наукам. Поэтому будущим гуру приходилось покорять профессиональные вершины самостоятельно, но всех их отличает творческое горение и полная самоотдача любимому делу.
Вы узнаете, что они думают о будущем программирования и как сами научились программировать, как, по их мнению, нужно проектировать ПО, как выбор языка программирования влияет на продуктивность и можно ли облегчить выявление труднонаходимых ошибок.
20 место
«Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем», Эрик Эванс
Классическая книга Э. Эванса освещает наиболее общий, стратегический круг вопросов, связанных с объектно-ориентированной разработкой программного обеспечения. Это переработка и структуризация знаний о предметных областях, применение типовых архитектурных шаблонов, построение и анализ моделей предметных областей, проектирование программных объектов с точки зрения качества их взаимодействия и передачи логической структуры знаний, организация программ на основе крупномасштабных структур, выработка общего языка и стратегии коммуникации в группе. Подход автора строится на динамичном рефакторинге модели и постоянной дистилляции знаний. Это позволяет достигнуть высокой степени гармонии между логикой предметной области и кодом программы, а также достаточной гибкости программной архитектуры для целей удобной доработки и интеграции программного обеспечения. Книга насыщена практическими примерами из реальных проектов.
Из книги читатель узнает, как с помощью модели предметной области придать разработке сложной системы нужную направленность и динамику. Выделены основные приемы и образцы-шаблоны, образующие общий язык группы разработчиков. Особо подчеркивается необходимость рефакторинга не только кода, но и модели в его основе, что в сочетании с итерационной agile-методикой приводит к углублению знаний о предметной области и повышению качества взаимодействия между специалистами и программистами. Подход книги строится именно на этом фундаменте, предлагая модели и архитектуры для систем и организаций любой сложности.
19 место
«Искусство программирования», Дональд Кнут
Фундаментальная монография известного американского математика и специалиста в области компьютерных наук Дональда Кнута, посвященная рассмотрению и анализу важнейших алгоритмов, используемых в информатике. В 1999 году книга была признана одной из двенадцати лучших физико-математических монографий столетия.
Первый том серии начинается с описания основных понятий и методов программирования. Затем автор сосредоточивается на рассмотрении информационных структур — представлении информации внутри компьютера, структурных связях между элементами данных и способах эффективной работы с ними. Для методов имитации, символьных вычислений, числовых методов и методов разработки программного обеспечения даны примеры элементарных приложений. По сравнению с предыдущим изданием добавлены десятки простых, но в то же время очень важных алгоритмов. В соответствии с современными направлениями исследований был существенно переработан также раздел математического введения.
18 место
«Структура и Интерпретация Компьютерных Программ», Абельсон Харольд, Сассман Джеральд Джей
Книга посвящена описанию различных систем программного синтаксиса, анализу перехода от набора алгоритмов к программному коду. Значительное место уделяется обсуждению набора «элементарных программ», использующихся в качестве элементов конструкции программ более высоких уровней сложности, оптимизации соотношения их «веса» и эффективности. Особое внимание авторы уделяют анализу проблемы взаимодействия компьютера как физического объекта и программного кода, обеспечивающего информационную составляющую вычисления.
Книга будет полезна всем, кому приходится иметь дело с программированием, в том числе и в гуманитарных областях знания.
17 место
«Шаблоны корпоративных приложений», Мартин Фаулер
Создание компьютерных систем — дело далеко не простое. По мере того как возрастает их сложность, процессы конструирования соответствующего программного обеспечения становятся всё более трудоёмкими, причем затраты труда растут экспоненциально. Как и в любой профессии, прогресс в программировании достигается исключительно путём обучения, причем не только на ошибках, но и на удачах — как своих, так и чужих. Книга даёт ответы на трудные вопросы, с которыми приходится сталкиваться всем разработчикам корпоративных систем. Автор, известный специалист в области объектно-ориентированного программирования, заметил, что с развитием технологий базовые принципы проектирования и решения общих проблем остаются неизменными, и выделил более 40 наиболее употребительных подходов, оформив их в виде типовых решений. Результат перед вами — незаменимое руководство по архитектуре программных систем для любой корпоративной платформы. Это своеобразное учебное пособие поможет вам не только усвоить информацию, но и передать полученные знания окружающим значительно быстрее и эффективнее, чем это удавалось автору.
Книга предназначена для программистов, проектировщиков и архитекторов, которые занимаются созданием корпоративных приложений и стремятся повысить качество принимаемых стратегических решений.
16 место
«Жемчужины программирования», Джон Бентли
Эта книга написана для программистов. Хороший программист должен знать все, что написано до него, только тогда он будет писать хорошие программы. Главы этой книги посвящены наиболее привлекательному аспекту профессии программиста: жемчужинам программирования, рождающимся за пределами работы, в области фантазии и творчества. В них рассматриваются: постановка задач, теория алгоритмов, структуры данных, вопросы повышения эффективности кода, а также верификация и тестирование программ.
15 место
«Человеческий фактор. Успешные проекты и команды», Том Демарко, Тимоти Листер
Немногие книги о компьютерах оказали такое заметное влияние на управление разработкой программного обеспечения, как «Человеческий фактор». Уникальное озарение этой книги, долгие годы сохранявшей своё положение в списке бестселлеров: самые сложные проблемы разработки ПО носят не технологический, а социальный характер. Эти человеческие проблемы решать не просто, однако, решив их, вы увеличите шансы на успех до верхнего предела.
В третьем издании появилось шесть новых глав и внесены многочисленные правки в основной текст, так что теперь книга лучше соответствует современным средам разработки и современным проблемам. В частности, обсуждаются патологии лидерства, которые раньше за патологии не считались, эволюционирующая культура собраний, а ещё растущее понимание того, что некоторые наши инструменты служат скорее якорями, а не двигателями. Каждый, кому необходимо управлять проектом по разработке ПО или целой организацией такого рода, найдёт на страницах этой книги множество ценных советов.
14 место
«Алгоритмы. Построение и анализ», Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн
Книга «Алгоритмы. Построение и анализ» удачно объединяет в себе полноту охвата и строгость изложения материала. Много книг, посвященных алгоритмам, отличаются строгостью изложения материала, но страдают определённой неполнотой; другие книги охватывают огромный объём материала, но недостаточно строго излагают его. В данной книге описаны самые разнообразные алгоритмы, сочетается широкий диапазон тем с глубиной и полнотой изложения; при этом изложение доступно для читателей самого разного уровня подготовки. Каждая глава книги относительно самодостаточна и может использоваться в качестве отдельной темы для изучения. Алгоритмы в книге описаны простым человеческим языком и с применением псевдокода, который понятен любому, кто хоть в небольшой степени знаком с программированием, а пояснения принципов их работы даны без излишней математической строгости и требуют лишь элементарных знаний.
Каждый может найти в ней именно тот материал, который касается интересующей его темы и представлен именно с тем уровнем сложности и строгости, который требуется читателю.
Описание алгоритмов на естественном языке дополняется псевдокодом, который позволяет любому имеющему хотя бы начальные знания и опыт программирования, реализовать алгоритм на используемом им языке программирования. Строгий математический анализ и обилие теорем сопровождаются большим количеством иллюстраций, элементарными рассуждениями и простыми приближенными оценками. Широта охвата материала и степень строгости его изложения дают основания считать эту книгу одной из лучших книг, посвященных разработке и анализу алгоритмов.
13 место
«Код. Тайный язык информатики», Чарльз Петцольд
Эта книга — азбука компьютерных технологий. Шаг за шагом автор знакомит читателя с сущностью кодирования информации, рассказывает об истории возникновения компьютеров, на практических примерах помогает освоить основные концепции информационных технологий, подробно излагает принципы работы процессора и других устройств компьютера.
Написанная живо, доступно, иногда иронично, книга богато иллюстрирована, состоит из 25 глав и предметного указателя.
Издание адресовано в первую очередь студентам вузов (как гуманитарных, так и технических), а также всем, кто интересуется принципами создания и работы компьютеров.
12 место
«Не заставляйте меня думать. Веб-юзабилити и здравый смысл», Стив Круг
Книга посвящена юзабилити веб-сайтов и мобильных приложений. Автор популярно, с примерами и иллюстрациями, объясняет, как сделать сайт или мобильное приложение, которым будет удобно пользоваться всем.
11 место
«Путь программиста», Джон Сонмез
Любой программист — прежде всего, человек со своими достоинствами и недостатками. Но в то же время программист — это интеллектуал, человек, постоянно занятый решением задач, анализом требований, исправлением ошибок, взаимодействием с коллегами и заказчиками. Наконец, программист — это человек, регулярно испытывающий серьёзный стресс, вынужденный укладываться в жёсткие сроки и просто обязанный постоянно самосовершенствоваться как профессионал и человек. Эта книга содержит исчерпывающую информацию о том, что требуется для выстраивания успешной карьеры программиста, помогает IT-специалистам лучше понять свою профессию и коллег, всегда оставаться востребованным на рынке труда, целенаправленно и результативно развиваться, а также получать от любимой работы настоящую самоотдачу и подлинное удовольствие.
10 место
«Карьера программиста», Г. Лакман Макдауэлл
Книга «Карьера программиста» основана на опыте практического участия автора во множестве собеседований, проводимых лучшими компаниями. Это квинтэссенция сотен интервью со множеством кандидатов, результат ответов на тысячи вопросов, задаваемых кандидатами и интервьюерами в ведущих мировых корпорациях. Из тысяч возможных задач и вопросов в книгу были отобраны 189 наиболее интересных и значимых.
Шестое издание этого мирового бестселлера поможет вам наилучшим образом подготовиться к собеседованию при приеме на работу программистом или руководителем в крупную IT-организацию или перспективный стартап. Основную часть книги составляют ответы на технические вопросы и задания, которые обычно получают соискатели на собеседовании в таких компаниях, как Google, Microsoft, Apple, Amazon и других. Рассмотрены типичные ошибки, которые допускают кандидаты, а также эффективные методики подготовки к собеседованию. Используя материал этой книги, вы с лёгкостью подготовитесь к устройству на работу в Google, Microsoft или любую другую ведущую IT-компанию.
9 место
«Приемы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма, Джон Влисидис, Ричард Хелм, Ральф Джонсон
В предлагаемой книге описываются простые и изящные решения типичных задач, возникающих в объектно-ориентированном проектировании. Паттерны появились потому, что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме. Авторы излагают принципы использования паттернов проектирования и приводят их каталог. Таким образом, книга одновременно решает две задачи. Во-первых, здесь демонстрируется роль паттернов в создании архитектуры сложных систем. Во-вторых, применяя содержащиеся в справочнике паттерны, проектировщик сможет с лёгкостью разрабатывать собственные приложения.
Издание предназначено как для профессиональных разработчиков, так и для программистов, осваивающих объектно-ориентированное проектирование.
8 место
«Эффективная работа с унаследованным кодом», Майкл Физерс
Учитесь извлекать максимум пользы из унаследованных систем, повышая их производительность, функциональность, надежность и сопровождаемость!
Можете ли вы без особого труда изменить код и тут же получить ответную реакцию на внесённые изменения? Насколько понятен этот код? Если вы ответите на эти вопросы отрицательно, значит, вы имеете дело с унаследованным кодом и понапрасну тратите время и средства на разработку.
В своей книге Майкл Физерс предлагает полноценные стратегические приемы эффективной работы с крупными базами унаследованного нетестированного кода. В основу этой книги положен материал, подготовленный автором к известным семинарам, организуемым компанией Object Mentor, включая приёмы, которым автор обучил сотни разработчиков, технических руководителей и тестирующих программное обеспечение подчинять себе непослушные унаследованные системы.
В этой книге освещаются следующие вопросы:
Кроме того, в этой книге представлены 24 способа разрыва зависимостей, помогающих работать с элементами программного обеспечения обособленно, чтобы сделать внесение изменений в код более безопасным.
7 место
«Идеальный программист. Как стать профессионалом разработки ПО», Роберт Мартин
Всех программистов, которые добиваются успеха в мире разработки ПО, отличает один общий признак: они больше всего заботятся о качестве создаваемого программного обеспечения. Это — основа для них. Потому что они являются профессионалами своего дела. В этой книге легендарный эксперт Роберт Мартин (более известный в сообществе как «Дядюшка Боб»), рассказывает о том, что значит «быть профессиональным программистом», описывая методы, инструменты и практики разработки «идеального ПО». Книга насыщена практическими советами в отношении всех аспектов программирования: от оценки проекта и написания кода до рефакторинга и тестирования. Эта книга — больше, чем описание методов, она о профессиональном подходе к процессу разработки.
6 место
«Мифический человеко-месяц», Фредерик Брукс
Эта книга об управлении проектами в области разработки программного обеспечения.
Фактически книга Ф. Брукса представляет собой сборник очерков, в которых последовательно обсуждаются узловые проблемы разработки крупных программных проектов: повышение производительности труда программистов, организация коллективной работы, планирование и выполнение графика реализации. Одной из главных тем книги стала идея, получившая впоследствии название «закон Брукса», о том что привнесение в проект новых сил на поздних стадиях разработки лишь отодвигает срок сдачи проекта.
5 место
«Head First. Паттерны проектирования», Эрик Фримен, Элизабет Робсон
Больше 12 лет прошло с момента выхода первого издания книги, но она продолжает оставаться актуальной. Основные идеи не изменились, но изменился язык Java, например появились лямбда-выражения. Поэтому авторы приняли решение обновить легендарную книгу и выпустить юбилейное издание.
В мире постоянно кто-то сталкивается с такими же проблемами программирования, которые возникают и у вас. Многие разработчики решают совершенно идентичные задачи и находят похожие решения. Если вы не хотите изобретать велосипед, используйте готовые шаблоны (паттерны) проектирования, работе с которыми посвящена эта книга.
Паттерны появились, потому что многие разработчики искали пути повышения гибкости и степени повторного использования своих программ. Найденные решения воплощены в краткой и легко применимой на практике форме.
Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O’Reilly в ряду множества скучных книг, посвященных программированию. Книга будет интересна широкому кругу веб-разработчиков, от начинающих до профессионалов, желающих освоить работу с паттернами проектирования.
4 место
«Рефакторинг. Улучшение существующего кода», Мартин Фаулер
Подход к улучшению структурной целостности и производительности существующих программ, называемый рефакторингом, получил развитие благодаря усилиям экспертов в области ООП, написавших эту книгу. Каждый шаг рефакторинга прост. Это может быть перемещение поля из одного класса в другой, вынесение фрагмента кода из метода и превращение его в самостоятельный метод или даже перемещение кода по иерархии классов. Каждый отдельный шаг может показаться элементарным, но совокупный эффект таких малых изменений в состоянии радикально улучшить проект или даже предотвратить распад плохо спроектированной программы.
Мартин Фаулер с соавторами пролили свет на процесс рефакторинга, описав принципы и лучшие приемы его осуществления, а также указав, где и когда следует начинать углубленное изучение кода с целью его улучшения. Основу книги составляет подробный перечень более 70 методов рефакторинга, для каждого из которых описываются мотивация и техника испытанного на практике преобразования кода с примерами на Java. Рассмотренные в книге методы позволяют поэтапно модифицировать код, внося каждый раз небольшие изменения, благодаря чему снижается риск, связанный с развитием проекта.
3 место
«Совершенный код. Мастер-класс», Стив Макконнелл
Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учётом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО — с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство. Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдёте нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
2 место
«Чистый код. Создание, анализ и рефакторинг», Роберт Мартин
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение».
Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший.
Книга состоит из трёх частей. В первой части излагаются принципы, паттерны и приёмы написания чистого кода; приводится большой объём примеров кода. Вторая часть состоит из практических сценариев нарастающей сложности. Каждый сценарий представляет собой упражнение по чистке кода или преобразованию проблемного кода в код с меньшим количеством проблем. Третья часть книги — концентрированное выражение её сути. Она состоит из одной главы с перечнем эвристических правил и «запахов кода», собранных во время анализа. Эта часть представляет собой базу знаний, описывающую наш путь мышления в процессе чтения, написания и чистки кода.
1 место
«Программист-прагматик. Путь от подмастерья к мастеру», Дейв Томас, Энди Хант
Книга охватывает различные темы — от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.
Прочитав эту книгу, вы научитесь: