Книги, которые стоит прочесть каждому программисту


Содержание

Книги, которые стоит прочесть каждому программисту

Авторы проекта Dev-Books проанализировали миллионы вопросов и ответов в крупнейшем сообществе программистов Stack Overflow. Всё для того, чтобы найти книги, на которые чаще всего ссылаются разработчики.

В общий список вошло 5 720 книг. Ниже вы найдёте 20 самых упоминаемых из них, которые когда-либо выходили на русском.

По просьбе Лайфхакера своими мнениями насчёт некоторых изданий поделились отечественные эксперты.

1. «Эффективная работа с унаследованным кодом», Майкл К. Физерс

Автор объясняет, как быстро разбираться в унаследованном коде, как тестировать его, как правильно вносить изменения. Книга содержит множество эффективных приёмов, предназначенных специально для этих задач.

2. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма и другие

«Классика для программиста. Первая книга, посвящённая именно шаблонам.«

Леонид Выговский, системный архитектор IT-компании LiveTe
— Издание уже 20 лет переиздаётся в изначальном виде. В этом, конечно, главный недостаток книги: некоторые шаблоны уже неактуальны. Думаю, её полезно читать уже после других, более современных, книг по паттернам проектирования. Тем более что она написана сухим академическим языком. Для понимания паттернов эта книга не must read, но её прочтение добавляет крутости в глазах коллег-программистов. :) Начинать я советую с «Паттернов проектирования» (Head First Design Patterns).

3. «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин

«Интересная, но во многом спорная книга о том, как писать понятный и поддерживаемый код.«

Леонид Выговский, системный архитектор IT-компании LiveTex
— Почему спорная? Книг про написание кода уже огромное количество, и часть приёмов являются общепризнанными. Но каждый автор добавляет что-то своё. Лично для меня мнение Боба Мартина кажется иногда странным и противоречащим другим источникам. Не must read, но прочитать всё же стоит. Качество кода после прочтения становится лучше.

4. «Предметно-ориентированное проектирование», Эрик Эванс

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

Леонид Выговский, системный архитектор IT-компании LiveTex
— Из этой книги выросли концепции СQRS, BDD, onion-architecture и много других интересных идей. Единственный недостаток: книга насквозь теоретическая. Практическую пользу она приобрела только с выходом книги Вона Вернона «Реализация методов предметно-ориентированного проектирования» (Implementing Domain Driven Design). Поэтому читать их надо последовательно, сразу друг за другом.

5. «JavaScript: сильные стороны», Дуглас Крокфорд

Обязательная книга для веб-разработчиков. В ней Дуглас Крокфорд рассказывает о преимуществах языка JavaScript и учит грамотно их применять для создания эффективного кода.

6. «Шаблоны корпоративных приложений», Мартин Фаулер и другие

Книга описывает базовые принципы проектирования ПО для корпоративных платформ.

7. «Совершенный код. Мастер-класс», Стив Макконнелл

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

8. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер и другие

«Из серии книг по написанию понятного и качественного кода, «Рефакторинг» — лучшая.«

Леонид Выговский, системный архитектор IT-компании LiveTex
Выговский: «Она не только показывает хороший код, но и на примере плохого объясняет, чем именно он плох. Эта книга — must read для всех. Причём чем раньше вы её прочтёте, тем лучше. Качество кода после прочтения сильно вырастет».

Если книгу Фаулера вы уже прочли, обратите внимание на «Рефакторинг с использованием шаблонов» (Refactoring to Patterns) Джошуа Кериевски, которую рекомендует Михаил Осотов.

«Рефакторинг с использованием шаблонов» Кериевски — отличная книга для тех, кто каждый день сталкивается с проблемой легаси-кода и технического долга в своих проектах».

Михаил Осотов, директор по производству «Центра высоких технологий»
— Эта книга поможет сохранить свои нервы, подружиться с рефакторингом и сделать код лучше.

9. «Паттерны проектирования», Эрик Фримен, Элизабет Фримен и другие

«Серия Head First, на мой взгляд, идеально подходит для новичков в области разработки ПО.«

Михаил Осотов, директор по производству «Центра высоких технологий»
— Все книги написаны разными авторами, но в каждой виден общий подход, который выражается в простой подаче материала, интересных и простых примерах.

10. «Язык программирования C», Брайан У. Керниган, Деннис М. Ритчи

Классическое учебное пособие по языку C, написанное его же создателями. Однако начинающим эта книга может показаться сложной, поскольку требует от читателя знания основ программирования.

11. «Эффективное использование С++. 55 верных способов улучшить структуру и код ваших программ», Скотт Майерс

Книга содержит советы по проектированию программ, работе с шаблонами и управлению ресурсами, а также другие рекомендации по созданию качественного ПО на языке С++.

12. «Экстремальное программирование: разработка через тестирование», Кент Бек

Автор на примерах описывает методику разработки ПО, которая предполагает тестирование программ ещё до написания их кода.

13. «Алгоритмы. Построение и анализ», Томас Х. Кормен и другие

Эту книгу называют библией алгоритмов. Она зарекомендовала себя как отличное научное пособие для студентов технических вузов и всех, кто интересуется информатикой. Книга доступным языком знакомит с алгоритмами разных типов и описывает их особенности.

14. «Регулярные выражения», Джеффри Фридл

Издание об эффективной работе с текстом в Perl, PHP, Java, Python, Ruby и других языках программирования.

15. «CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#», Джеффри Рихтер

Классический учебник по разработке приложений для платформы Microsoft, в том числе с помощью Silverlight, Windows Presentation Foundation, ASP.NET и прочих технологий компании.

16. «Современное проектирование на C++», Андрей Александреску

Книга для опытных программистов на C++. Автор предлагает новый подход к разработке, сочетающий метапрограммирование шаблонов, обобщённое программирование и объектно-ориентированное программирование на этом языке.

17. «Microsoft ASP.NET 2.0. Базовый курс», Дино Эспозито

Детальное руководство для опытных специалистов по ASP.NET 2.0. Книга учит создавать мощные, надёжные и масштабируемые сайты на этой платформе.

18. «Шаблоны тестирования xUnit. Рефакторинг кода тестов», Джерард Месарош

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

19. «Компиляторы. Принципы, технологии и инструментарий», Альфред В. Ахо и другие

Книга описывает базовые принципы разработки компиляторов и делает особый акцент на оптимизации кода. В помощь читателю — большое количество примеров из практики.

20. «Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET», Кржиштоф Цвалина, Брэд Абрамс

Издание содержит лучшие приёмы разработки библиотек для платформы Microsoft .NET Framework. Книга должна упростить работу любого .NET-специалиста, который пишет код для других разработчиков.

Книги, которые стоит прочесть каждому программисту

Вас пригласили на собеседование. Рубашка выглажена, телефон на беззвучном, во рту две подушечки мятной жвачки — вы почти готовы. Осталось показать потенциальному работодателю, что вы ещё и исключительно умный молодой человек. Или девушка — тут уж как получится.

Единственная проблема — стать умным за 30 минут до собеседования невозможно. Нужны годы тренировок. Месяцы. Или хотя бы неделю до собеседования нужно потратить на штудирование проф-литературы. Не факт, что вы сразу же чему-то научитесь, но руководитель оценит старания.

Мы подготовили список литературы для людей, которые хотят влиться в IT-сферу, но не знают, с какой стороны к ней подступиться. Для тех, кто пришел на собеседование, провалился и не хочет повторений. И для тех, кто решил закрепить уже имеющиеся навыки.

Эти книги мы читаем сами и советуем стажёрам. А в списке для разработчиков есть даже парочка курсов, потому что им важно и на словах, и на деле быть Львом Толстым, а не. Ну вы сами знаете.

На оригинальность списка не претендуем. Просто хотим поделиться литературой, которая поможет вам устроиться на работу тестировщиком, программистом, дизайнером или менеджером проектов, например, к нам. Самые главные книги — 5-6 штук в начале каждого списка. Так что не пугайтесь простыней — берите пункт первый и читайте.

Кажется, самое время для толстого намёка, что мы набираем стажёров :)

5 книг для начинающих программистов

Полезная подборка, чтобы разобраться в C++, JAVA, Python и узнать про код Грея.

Часто тем, кто всерьёз занимается олимпиадной информатикой, рекомендуют прочесть трёхтомник Дональда Кнута. Кстати, недавно вышел четвёртый том. Но всё же перед тем как взяться за Кнута, советую обратить внимание на книгу Роберта Седжвика «Фундаментальные алгоритмы C++. Анализ. Структуры данных. Сортировка. Поиск».

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

Герберт Шилдт — один из самых опытных авторов книг по изучению языков программирования. Если вы планируете изучать Java, стоит начать именно с этой книги. Шилдт пишет простым языком, последовательно и структурированно.

Время от времени встречаются вставки «вопрос – ответ» — своего рода лайфхаки, чтобы глубже понять прочитанный материал.

Приятным дополнением станут главы о Swing и JavaFX.

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

Эту книгу можно описать так: просто и интересно. Автор рассказывает о программировании на «Пайтоне» понятно даже для младшего школьника. Самоучитель содержит живые примеры и забавные картинки. В конце книги обсуждается разработка двух несложных игр.

Эта удивительная книга построена всего лишь на одной известной задаче про Ханойские башни. Несмотря на это, она содержит главы и про битовую арифметику, и про код Грея. Все примеры приводятся на языке Pascal.

Автор онлайн-курса программирования на Python в Фоксфорде, волонтёр международных workshop для ACM

Автор онлайн-курса разработки игровых приложений под Android на языке JAVA в Фоксфорде, преподаватель в IT-школе Samsung

5 обязательных к прочтению книг для программиста

Опубликовано shwan в 19.12.2020

Наверное в каждой сфере существуют книги, которые являются обязательными для чтения для любого уважающего себя работника. Вот и программирование не является исключением. Я составил свой личный список книг охватывающий все наиболее важные этапы разработки программного обеспечения, от проектирования, до написания и поддержки кода.

Стив Макконнелл — Совершенный код

Это действительно самая важная книга в карьере любого программиста, так как до ее прочтения он просто не имеет права себя таковым называть. По своей сути это «библия программиста», в которой очень доходчиво и просто изложены «заповеди программирования». И читать ее нужно систематически, чтобы освежать в памяти, осознавать и применять на практике изложенный в ней материал. Данная книга рассматривает вопросы проектирования, написания программного кода, тестирование, отладку и поддержку программного обеспечения. И каждый из этапов автор рассматривает очень подробно, приводя примеры. Основная идея книги заключается в том, что для написания качественного программного продукта необходимо контролировать его ложность на каждом этапе разработки, и на всех его уровнях.

Джеффри Рихтер — CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C#

Очень подробное и грамотное руководство по языку разработке на языке C#. Книга подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (CLR) Microsoft .NET Framework версии 4.5. Материал книги направлена на обучение созданию по-настоящему надежных приложений любого вида, в том числе с использованием Microsoft Silverlight, ASP.NET, Windows Presentation Foundation и т.д. Материал излагается грамотным техническим языком. Данная книга является обязательной для изучения всем разработчикам на платформе .NET Framework и использующих язык программирования C#.

Цукерберг рекомендует:  Словари в Python

Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес — Приемы объектно-ориентированного проектирования. Паттерны проектирования

Данная книга подробно и понятно описывают простые решения типичных задач, возникающих в объектно-ориентированном проектировании, рассматривает наиболее популярные и часто используемые паттерны. Материал содержит множество красивых, а главное работающих на практике решений, улучшающих надежность и качество кода, позволяя повысить продуктивность разработки. Учитывая, что большинство проектов сейчас разрабатываются в объектно-ориентированном стиле, данная книга обязательна для чтения для любого разработчика.

Мартин Фаулер, Кент Бек, Джон Брант, Дон Робертс — Рефакторинг. Улучшение проекта существующего кода

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

Эндрю Хант, Дэвид Томас, А. Алексашин — Программист-прагматик. Путь от подмастерья к мастеру


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

Лучшие книги по программированию

В свое время я работал и продолжаю работать сейчас разработчиком. Начал в качестве веб-программиста в 2004 году, перешел на полный стек в 2009 году, начал разработку для iOS в 2013.

Я начал свой путь программиста с прочтения трех книг: одна была про HTML, другая – про CSS и третья, соответственно, об SQL. Прочие знания я получил из Google, Stack Overflow и блогов. Вообще, Интернет – прекрасная штука. Каждый день я прочитывал по 5 или больше тематических статьей. И, что самое главное, все эти знания были бесплатны.

В основном мои знания о программировании были получены из университета и опыта работы. Как-то так. Действительно, получается, что большая часть из того, что вы изучаете о программировании, были получено в основном во время решения определенных практических задач.

То, что меня также интересует – это чтение различных специализированных книг. Увы, но размеры списков по типу «Обязательных к прочтению для разработчиков» выходят далеко за рамки адекватных. Ситуация со сжатым списком из этого списка также ненамного лучшая…

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

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

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

Полный список содержит 139 книг. Все книги, которые вы увидите в этом списке, находятся на вершине популярности рассмотренных списков.

В этом списке вы не найдете книгу о том, как стать Java-разработчиком, но вы можете увидеть книги, которые используют язык Java для приведения практических примеров, рассматриваемых тем. Вы сможете найти книгу, направленную на один конкретный язык программирования, но которая также пригодится и для разработчиков на других языках. Также я включил здесь книги, не связанные с разработкой непосредственно, но которые в то же время считаются неплохими для развития особого «программного» мышления.

Короче говоря, без лишних слов – я рад представить:

Список лучшей литературы для разработчиков

7 упоминаний:

Паттерны проектирования: Элементы повторного использования программного обеспечения

«Классическая книга, прочтение которой ознакомит читателя с различными паттернами программного проектирования, а также раскроет некоторые секреты наиболее популярных из них.» Джон Сонмец

«Еще одно произведение классики, содержащее в себе огромную коллекцию различных паттернов программирования.» Лик Бун

Код: Скрытый язык аппаратного и программного обеспечения

«Должна быть в закладках у каждого, кто так или иначе связан с программной индустрией, не важно при этом – программист ли он али нет.» Вуди Леонхард

«После прочтения этой книги вы поймете, что на самом деле выполняет ваш код и как на самом деле этот код исполняет процессор. Это одновременно и весело, и полезно.» Джон Сонмерц

8 появлений:

Эффективная работа с правильным кодом

«Я обожаю эту книгу, так как рано или поздно в один прекрасный момент программисту придётся заниматься поддержкой и разработкой уже существующих комплексных систем.» Джейсон Роял

«Если вы принимаете участие над работой с большим объемным кодом более пяти лет, эта книга, вероятно, станет вашей новой Библией. Прочтите это и примите в свои сердца.» Джон Сонмерц

Люди: Продуктивные проекты и команды

«Эта книга оказала на меня наибольшее влияние в свое время. Пожалуй, я могу сравнить ее с эффектом от прочтения Манифеста Анти-Дилберта.» Джоел Сполски

«Если вы желаете носить гордое звание тим лидера на практике, нежели на словах – эта книга определенно для вас.» Джеф Атвуд

9 упоминаний:

Паттерны разработки корпоративных приложений

«Книга очень полезна при разработке массивных приложений, так как она предлагает детальное объяснение ситуаций, когда нужно использовать определенный программный паттерн (а когда наоборот — нет). Даже не могу назвать примерное количеств раз, сколько мне приходилось обращается к данной книге.» Род Хилтон

«Обеспечивает читателя каталогом качественных проверенных корпоративных паттернов и ситуаций, советует, когда эти самые паттерны стоит использовать.» Иан Джойс

11 упоминаний:

Вступление в алгоритмы

«Пожалуй, это лучшая книга для понимания и использования алгоритмов (которые де-факто являются основным инструментом разработчика программного обеспечения).» Вуди Леонхард

12 упоминаний:

Чистый код: Пособник мастера программного обеспечения

«Если вы пожелаете прочитать книгу, связанную с программированием, определенно – вам стоит обратить свое внимание на эту.» Роберт Грайнер

«Это еще одна книга, которой удалось полностью изменить стилистику написания моего кода. Я могу ясно разделить свою жизнь на период до прочтения книги и после.» Джон Сонмерц

Рефакторинг: Улучшение дизайна существующего кода

«Книга, строго рекомендуемая к прочтению для каждого, кто желает улучшить качество кода.» Деепак Карантх

«Обязательна к прочтению каждому, кто так или иначе принимает участие в работе с объектно-ориентированными языками программирования.» Дэниель Рид

14 упоминаний:

Мифический человеко-месяц, или Как создаются программные системы

«Это классика, но недавно исправленная и дополненная. В высшей степени поразительно то, как она тесно связана с разработкой программного обеспечения. Если вы принимаете участие в программировании, определенно эта книга – обязательна к прочтению.» Джейсон Роел

«Бесспорно, единственная классика, посвященная программированию. Позор всякому, кто еще не прочитал ее.» Джеффри Атвуд

15. упоминаний:

Прагматичный программист: От новичка к мастеру

«Насколько революционна эта книга? Пожалуй, достаточно для того, чтобы развернуть целую издательскую кампанию. Если вы все еще не прочитали ее – это, бесспорно, большое упущение с вашей стороны.» Род Хилтон

«Эта книга не только изменит ваш код: она изменит вас как программиста. Наполненная практическими советами по улучшению вас и вашего кода, бесспорно, является отличным приобретением для каждого, кто хочет стать лучшим в сфере разработки программного обеспечения.» Деепак Карант

16 упоминаний:

Идеальный код: Практическое пособие по программной архитектуре

«Сделайте для себя приятное. Пусть это будет первой книгой, которую вы прочитаете – и первой книгой, которую вы посоветуете другим.» Джеффри Атвуд

«Эта книга потрясла меня больше всего. Определенно, после ее прочтения то, как я писал код, и то, что я думал о программировании в целом, претерпело серьезные изменения.» Джон Сонмец

Полный список содержит в себе 139 книг. При желании на языке оригинала его можно рассмотреть здесь.

Автор перевода: Евгений Лукашук

Каждому программисту. Лучшие книги по программированию. Обзор

Бьярне Страуструп. Программирование: Принципы и практика с использованием C++ (2-е издание). М.: Издательский дом «Вильямс», 2020. Пер. с англ. – 1328 стр. Тираж 300 экз.

Bjarne Stroustrup. Programming: Principles and Practice Using C++. Second edition.

Программирование – это искусство выражать решения задач так, чтобы компьютер мог их осуществить. Основные усилия программиста направлены на то, чтобы найти и уточнить решение, причем довольно часто полное понимание задачи приходит лишь в ходе программирования ее решения.
Эта книга предназначена для тех, кто еще никогда не программировал, но готов учиться этому ценой тяжелого и упорного труда. Она поможет овладеть главными принципами и приобрести практический опыт программирования на языке C++. Моя цель заключается в том, чтобы изложить достаточный объем сведений и научить вас решать простые и полезные задачи по программированию с помощью самых лучших и современных методов. Если вы учитесь на первом курсе университета, то можете изучать эту книгу на протяжении семестра (в предположении, что у вас имеется еще четыре курса средней сложности). Если вы изучаете программирование самостоятельно, то не ждите, что сможете освоить этот курс за меньшее время (ну, при условии, что вы будете работать по 15 часов в неделю, возможно, вам хватит 14 недель).
Три месяца могут показаться долгими, но объем курса довольно велик, и первые простые программы вы сможете написать, проработав над книгой около часа. Кроме того, сложность материала постепенно возрастает: в каждой главе вводятся новые полезные понятия, которые иллюстрируются реальными примерами.

* * *
Станете ли вы профессиональным программистом или экспертом по языку C++, прочитав эту книгу? Конечно, нет! Настоящее программирование – это тонкое, глубокое и очень сложное искусство, требующее знаний и технических навыков. Рассчитывать на то, что за четыре месяца вы станете экспертом по программированию, можно с таким же успехом, как и на то, что за полгода или даже год вы полностью изучите биологию, математику или иностранный язык (например, китайский, английский или датский) или научитесь играть на виолончели. Если подходить к изучению книги серьезно, то можно ожидать, что вы сможете писать простые полезные программы, читать более сложные программы и получите хорошие теоретическую и практическую основы для дальнейшей работы.
Прослушав этот курс, лучше всего поработать над реальным проектом.

* * *
Когда – начиная с 1949 года – в мире появились первые электронные компьютеры с хранимыми программами, каждый из них имел собственный язык программирования. Существовало взаимно однозначное соответствие между выражением алгоритма (например, вычисления орбиты планеты) и командами конкретной машины. Очевидно, что ученый (пользователями чаще всего были ученые) писал математические формулы, но программа представляла собой список машинных инструкций. Первые примитивные списки состояли из десятичных или восьмеричных цифр, точно соответствовавших их представлению в машинной памяти. Позднее появились ассемблер и «автокоды»; иначе говоря, люди разработали языки, в которых машинные команды и машинное оборудование (например, регистры) имели символические имена. Так, программист мог написать «LD R0 123», чтобы загрузить содержимое ячейки памяти, расположенной по адресу 123, в нулевой регистр. Однако каждая машина по-прежнему имела собственный набор команд и собственный язык программирования. (С. 893)

Стив Макконнелл. Совершенный код. Мастер-класс (Практическое руководство по разработке программного обеспечения). М.: Русская редакция, Спб: Питер, 2005. Пер. с англ. – 896 стр.

© Steven C. McConnell, 2004

Аннотация. Более 10 лет первое издание этой книги считалось одним из лучших практических руководств по программированию. Сейчас эта книга полностью обновлена с учетом современных тенденций и технологий и дополнена сотнями новых примеров, иллюстрирующих искусство и науку программирования. Опираясь на академические исследования, с одной стороны, и практический опыт коммерческих разработок ПО – с другой, автор синтезировал из самых эффективных методик и наиболее эффективных принципов ясное прагматичное руководство. Каков бы ни был ваш профессиональный уровень, с какими бы средствами разработками вы ни работали, какова бы ни была сложность вашего проекта, в этой книге вы найдете нужную информацию, она заставит вас размышлять и поможет создать совершенный код.
Книга состоит из 35 глав, предметного указателя и библиографии.

«Великолепное руководство по стилю программирования и конструированию ПО».
Мартин Фаулер, автор книги «Refactoring»

«Книга Стива Макконнелла… это быстрый путь к мудрому программированию… Его книги увлекательны, и вы никогда не забудете то, что он рассказывает, опираясь на свой с трудом полученный опыт».
Джон Бентли, автор книги «Programming Pearls, 2d ed»

«Современное ПО должно быть надежным и гибким, а создание защищенного кода начинается с дисциплинированного конструирования программы. За десять лет так и не появилось лучшего руководства по этой теме, чем эта книга».
Майкл Ховард, специалист по защите ПО, корпорация Microsoft; один из авторов книги «Writing Secure Code»

Если вы не имеете специального образования, вы не одиноки. Ежегодно программистами становятся около 50 000 человек (BLS, 2004, Heскеr, 2004), однако число дипломов, вручаемых ежегодно в нашей отрасли, составляет лишь около 35 000 (NCES, 2002). Легко прийти к выводу, что многие программисты изучают разработку ПО самостоятельно. Программисты-самоучки встречаются среди инженеров, бухгалтеров, ученых, преподавателей, владельцев малого бизнеса и представителей других профессий, которые занимаются программированием в рамках своей работы, но не всегда считают себя программистами. Каким бы ни было ваше программистское образование, в этом руководстве вы найдете информацию об эффективных методиках программирования.

* * *
Методики, описанные в этой книге, заполняют пустоту, остающуюся в знаниях программистов после прочтения вводных и более серьезных учебников по программированию. Что читать человеку, изучившему книги типа «Introduction to Java», «Advanced Java» и «Advanced Advanced Java» и желающему узнать о программировании больше? Вы можете читать книги о процессорах Intel или Motorola, функциях ОС Microsoft Windows или Linux или о другом языке программирования – невозможно эффективно программировать, не имея хорошего представления о таких деталях. Но эта книга относится к числу тех немногих, в которых обсуждается программирование как таковое. Наибольшую пользу приносят те методики, которые можно использовать независимо от среды или языка. В других источниках такие методики обычно игнорируются, и именно поэтому я сосредоточился на них.
Как показано ниже, информация, представленная в этой книге, выжата из многих источников. Единственным другим способом получения этой информации является изучение горы книг и нескольких сотен технических журналов, дополненное значительным реальным опытом. Если вы уже проделали всё это, данная книга всё равно окажется вам полезной как удобный справочник.

Цукерберг рекомендует:  Основы Vaadin

* * *
За доказательствами влияния, оказываемого языками программирования на мышление программистов, далеко ходить не надо. Типичная история такова: «Мы писали новую систему на C++, но большинство наших программистов не имели особого опыта работы на C++. Раньше они использовали Fortran. Они писали код, который компилировался на C++, но на самом деле это был замаскированный Fortran. В итоге они заставили C++ эмулировать недостатки языка Fortran (такие как операторы goto и глобальные данные) и проигнорировали богатый набор объектно-ориентированных возможностей C++». Данный феномен наблюдается в отрасли уже много лет (Hanson, 1984; Yourdon, 1986a). (С. 60)

Питер Гудлиф. Ремесло программиста. Практика написания хорошего кода. Спб.: Символ-Плюс, 2009. Пер. с англ. – 704 стр.

Pete Goodliffe. Code Craft: The Practice of Writing Excellent Code.

Аннотация. Ничто не сравнится по ценности с советами настоящего программиста-профессионала. Книга Питера Гудлифа «Ремесло программиста» написана ясно, практично и занимательно. Она поможет вам перейти на более высокий уровень мастерства программирования и покажет, как писать код, который больше чем «просто работает». Да, вы умеете писать работающий код, но как написать понятный код? Как добиться его надежности и отсутствия ошибок? Смогут ли другие программисты выяснить логику и цель вашего кода? Выдающиеся программисты не просто обладают техническими знаниями – у них есть правильный подход и отношение к программированию.
Перед вами руководство по выживанию в условиях промышленного производства ПО. Эта книга посвящена тому, чему вас никто не учил: как правильно программировать в реальной жизни. Здесь вы найдете не связанные с конкретными языками рекомендации, полезные всем разработчикам и касающиеся таких проблем, как стиль представления, выбор имен переменных, обработка ошибок, безопасность, эффективность групповой работы, технологии разработки и составление документации.
Читатель должен обладать опытом программирования, ибо книга не учит программированию – она учит правильно программировать. Издание будет полезно и студентам старших курсов, знакомым с принципами программирования.

«Легко читается, занимательно, даже забавно… Книга полна мудрости, накопленной за годы реальной работы, мучений и побед в сфере программных разработок… Жаль, что у меня не было такой книги, когда я начинал работать программистом».
Стив Лав (Steve Love), старший разработчик

«Именно та книга, которая нужна необстрелянным новобранцам. Рассказывает всю правду, легко читается и охватывает широкий круг тем, которые должен знать новичок».
Джон Джеггер (Jon Jagger), преподаватель, программист

Программирование – ваша страсть. Печально, но это так. И как закоренелый технарь вы программируете чуть ли не во время ночного сна. И вот вы попали в центр реального мира, в саму эту отрасль, и занимаетесь тем, о чем и не мечтали: забавляетесь с компьютером, а вам за это еще и деньги платят. Ведь вы сами готовы были заплатить за то, чтобы иметь такую возможность!
Но всё не так просто и не похоже на то, чего вы ожидали. Огорошенные назначением вам нереальных сроков выполнения задач и неумелым руководством (если его можно назвать этим словом), непрерывным изменением технического задания и необходимостью разбираться в дрянном коде, доставшемся вам от предшественников, вы начинаете сомневаться в том, что выбрали для себя правильный путь. Всё вокруг мешает вам писать тот код, о котором вы мечтали. Что ж, таковы условия существования в организациях, где пишут программы. Вы попали на передний край упорной битвы за создание шедевров художественного мастерства и научного гения. Удачи вам!

* * *
Программные ошибки распадаются на несколько крупных категорий, знание которых облегчит дальнейшие действия. Природа некоторых ошибок такова, что их труднее отыскать, и это связано с тем, к какой категории они относятся. Слегка отстранившись и прищурясь, мы обнаружим следующие три класса ошибок:

Сбой при компиляции
Крайне досадно, когда код, на который вы потратили столько времени, отказывается компилироваться. Это значит, что вам придется вернуться и исправить противную маленькую опечатку или несоответствие типов параметров, а затем снова компилировать и только потом приниматься по-настоящему тестировать свой труд. Как ни странно, это лучший тип ошибок, с которым вы можете столкнуться. Почему? Просто потому, что их проще всего обнаружить и исправить. Они проявляются сразу и наиболее очевидны.
Чем дольше поиск ошибок, тем дороже их исправление; это проиллюстрировано в разделе «Экономика ошибок» на стр. 216. Чем раньше вы сможете найти и исправить каждую ошибку, тем скорее вы сможете продолжить работу и тем меньшим объемом неприятностей и затрат обойдетесь. Ошибки компиляции очень легко заметить (на них просто трудно не обратить внимания) и обычно легко исправить. Вы не сможете запустить программу, пока не устраните их.
Чаще всего сбой при компиляции бывает вызван глупой синтаксической ошибкой или обычной невнимательностью, например при вызове функции с параметром неверного типа. Сбой может быть вызван ошибкой в make-файле, ошибкой этапа сборки (например, отсутствием реализации функции) или даже нехваткой дискового пространства на машине, где осуществляется сборка. (С. 214)

Роберт Мартин. Чистый код: Создание, анализ и рефакторинг. (Библиотека программиста). Спб.: Питер, 2010. – 464 стр.

Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship.


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

* * *
…И предоставлю всю необходимую для этого информацию. Но когда вы впервые заберетесь на велосипед, вы всё равно неизбежно упадете.
С программированием дело обстоит точно так же. Конечно, мы могли бы записать все «хорошие» принципы чистого кода, а потом доверить вам всю практическую работу (другими словами, позволить вам упасть, забравшись на велосипед), но какие бы из нас тогда были учителя?
Нет. В этой книге мы пойдем по другому пути.
Умение писать чистый код – тяжелая работа. Она не ограничивается знанием паттернов и принципов. Над кодом необходимо попотеть. Необходимо пытаться и терпеть неудачи. Необходимо наблюдать за тем, как другие пытаются и терпят неудачи. Необходимо видеть, как они спотыкаются и возвращаются к началу; как мучительно принимаются решения и какую цену приходится платить за неверный выбор.
Приготовьтесь основательно потрудиться во время чтения книги. Перед вами не «легкое чтиво», которое можно проглотить в самолете и перевернуть последнюю страницу перед посадкой. Книга заставит вас потрудиться, и потрудиться усердно. Какая работа вам предстоит? Вы будете читать код – много кода. И нам придется как следует подумать, что в этом коде правильно, а что нет. Вы будете наблюдать за тем, как мы разбираем эти модули, а потом собираем заново. Это потребует немало времени и усилий; но мы считаем, что результат того стоит.
Книга разделена на три части. В первых нескольких главах излагаются принципы, паттерны и приемы написания чистого кода. В них приводится довольно солидный объем кода, и читать их будет непросто. Весь этот материал подготовит вас ко второй части. Если вы отложите книгу после первой части – всего хорошего!
Во второй части книги трудиться придется еще больше. Она состоит из нескольких практических сценариев нарастающей сложности. Каждый сценарий представляет собой упражнение по чистке кода – или преобразовании проблемного кода в код с меньшим количеством проблем. Чтобы усвоить материал этой части,

* * *
Правило № 1: выполнение всех тестов
Прежде всего система должна делать то, что задумано ее проектировщиком. Система может быть отлично спланирована «на бумаге», но если не существует простого способа убедиться в том, что она действительно решает свои задачи, то результат выглядит сомнительно.
Система, тщательно протестированная и прошедшая все тесты, контролируема. На первый взгляд утверждение кажется очевидным, но это весьма важно. Невозможно проверить работу системы, которая не является контролируемой, а непроверенные системы не должны запускаться в эксплуатацию.
К счастью, стремление к контролируемости системы ведет к архитектуре с компактными узкоспециализированными классами. Всё просто: классы, соответствующие принципу SRP, проще тестировать. Чем больше тестов мы напишем, тем дальше продвинемся к простоте тестирования. Таким образом, обеспечение полной контролируемости системы помогает повысить качество проектирования.
Жесткая привязка усложняет написание тестов. Таким образом, чем больше тестов мы пишем, тем интенсивнее используем такие принципы, как DIP, и такие инструменты, как внедрение зависимостей, интерфейсы и абстракции, для минимизации привязок.
Как ни удивительно, выполнение простого и очевидного правила, гласящего, что для системы необходимо написать тесты и постоянно выполнять их, влияет на соответствие системы важнейшим критериям объектно-ориентированного программирования: устранению жестких привязок и повышению связности. Написание тестов улучшает архитектуру системы. (С. 201)

Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений (3-е издание). Издательский дом «Вильямс», 2008. Пер. с англ. – 720 стр.

Grady Booch and oth. Object-oriented Analysis and Design with Application. Third edition.

Аннотация. Книга представляет собой новое издание бестселлера Гради Буча по объектно-ориентированному анализу и проектированию. Авторы описывают объектные методы решения сложных проблем, связанные с разработкой систем и программного обеспечения. Используя многочисленные примеры, они иллюстрируют основные концепции объектно-ориентированного подхода на примере разработки систем управления, сбора данных и искусственного интеллекта. Читатели найдут в книге практичные советы, касающиеся важных вопросов анализа, проектирования, реализации и оптимального управления проектами.
Книга будет полезна системным аналитикам и архитекторам, программистам, преподавателям и студентам высших учебных заведений, а также всем специалистам по информационным технологиям.

Гради Буч получил всемирное признание за его новаторскую работу в области архитектуры, проектирования и моделирования программных систем. С момента создания компании IBM Rational в 1981 году, он работал ее ведущим научным сотрудником. В марте 2003 года Гради получил звание почетного сотрудника IBM (IBM Fellow).
Гради – один из основоположников языка Unified Modeling Language (UML), а также автор нескольких оригинальных разработок компании Rational. Работая над многочисленными проектами, связанными с интенсивным программированием, Гради был не только архитектором программных систем, но и учил сотрудников принципам проектирования.

«Чем сложнее система, тем она уязвимее». Трудно себе представить строителя, размышляющего, а не вырыть ли еще один подвальный этаж под уже построенным стоэтажным зданием. Такое мероприятие было бы слишком дорогим и опасным. Как ни странно, пользователи программного обеспечения, не задумываясь, просят делать аналогичные изменения в программах. Более того, они считают, что для программиста эта задача не представляет никаких трудностей.
Наша неспособность справиться со сложностью, характерной для программного обеспечения, приводит к задержкам, дополнительным расходам и нарушениям технического задания. Такую ситуацию часто называют кризисом программного обеспечения, но, откровенно говоря, болезнь, длящуюся столь долго, следует называть нормальным состоянием. К сожалению, этот кризис уже привел в расточительному расходованию трудовых ресурсов – самого дорогого товара, – и многие возможности оказались упущенными. Для того чтобы создать новое программное обеспечение, необходимое пользователям, совершенно не достаточно просто собрать команду хороших программистов. Кроме того, во многих организациях большое количество персонала вынуждено отвлекаться на поддержку морально устаревших программ. Учитывая прямой и косвенный вклад, который вносит программное обеспечение в экономику наиболее развитых стран, а также огромные возможности, появляющиеся благодаря информатизации, следует признать, что мириться с такой ситуацией больше нельзя.
Как изменить эту мрачную картину? Поскольку источником всех проблем является сложность, присущая программному обеспечению, следует начать с изучения сложных систем, существующих в других научных дисциплинах. Действительно, если оглянуться вокруг, то можно обнаружить весьма успешно функционирующие системы, обладающие значительной сложностью. Некоторые из этих систем созданы человеком, например, космический корабль «Space Shuttle», туннель, соединяющий Англию и Францию, а также крупные корпорации. В природе существуют еще более сложные системы, такие как система циркуляции крови у человека (С. 34)

* * *
Дилетанты постоянно ищут некий волшебный метод или инструмент, который мог бы сделать процесс разработки программ тривиальным. В отличие от них, профессионалы знают, что такой панацеи не существует. Дилетанты хотят иметь готовые рецепты; профессионалы знают, что такой подход ведет к негодным проектным решениям и нагромождению лжи, за которой разработчики скрываются от ответственности за ранее принятые неверные решения. Дилетанты либо игнорируют документацию вообще, либо делают из нее фетиш, заботясь больше о том, как их бумажный продукт выглядит в глазах заказчика, чем о его сути. Профессионал признает важность документации, но всегда отдает предпочтение разумным архитектурными новшествам.
Процесс объектно-ориентированного анализа и проектирования невозможно описать с помощью рецептов, однако он определен достаточно хорошо, чтобы стать основой прогнозируемого и воспроизводимого процесса разработки программного обеспечения. В главе изучаются процессы анализа и проектирования (его цели, результаты, этапы и критерии успеха), а также приведен обзор процесса разработки программного обеспечения в целом. (С. 281)

Цукерберг рекомендует:  Вакансии 7 Студио

12 книг, которые должен прочитать каждый программист

Программирование – та сфера, в которой практика значит куда больше, чем теория, но знания лишними не бывают. Сайт KV.BY опубликовал подборку из 12 книг, которые должен прочитать каждый программист. Список составлен в произвольном порядке, не по значимости или простоте\сложности книг.

1. «Computer Science: A Very Short Introduction», Subrata Dasgupta

Серия книг «A Very Short Introduction» издаётся Оксфордским университетом с 1995 года, и в 2020 году вышла книга по информатике. Не стоит презрительно махать рукой, исходя из «общего» названия – именно в этом и заключается цель книги. Она написана экспертом для общей аудитории. Автор делает общий экскурс в тему, своеобразное «введение» (каково название, таково и содержание).

2. «Искусство программирования», Дональд Кнут

По соседству с достаточно «лёгкой» книгой гордо красуется монументальный труд математика и учёного в области информатики Дональда Кнута. Несмотря на достаточный возраст (а первая книга вышла в 1968 году), она по праву считается одним из главных must-read-ов в сфере программирования и должна стать настольной книгой каждого уважающего себя профессионального программиста.

За что же её так ценят? «Искусство программирования» отличает крайне глубокий подход к теме и академическое изложение. Книга обеспечивает прочную базу в программировании. Однако за всё это придется «платить» – книга не так уж легка в прочтении. Не столько из-за языка (хотя и он не прост), сколько из-за необходимости иметь определённый набор знаний в математике, ведь школьного уровня тут явно не хватит. Книга изобилует примерами и задачами, сложность которых варьируется от решаемых за 1 минуту до до сих пор нерешённых вопросов.

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

3. «Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест и Клиффорд Штайн

Книга проще и немного моложе, чем предыдущая – первое издание вышло в 1990-ом. Но от этого она не стала ни на толику хуже. Её советуют уже студентам, причём тем, кто также хорошо подкован математически. Язык несколько проще, чем в «Искусстве программирования», а примеры современнее. Книга не сколько учит программировать, сколько мыслить общо и понимать структуру алгоритмов.

Книга доступна в русском и английском вариантах. Она успела пережить три переиздания, каждый раз вносились исправления и дополнения.

4, 5 и 6. Герберт Шилдт и серия книг по С++ («С++ для начинающих. Шаг за шагом», «C++. Базовый курс», «Полный справочник по C++»)

Как видите, серия представляет собой постепенное увеличение сложности материала. Первая книга – самый настоящий самоучитель для начинающих – вообще не сведущим в программировании она не подходит. Её отличает простота в примерах и наглядность решений.

Пара минусов: перевод сделан не так качественно, как хотелось бы, а потому наличие ошибок и опечаток несколько омрачает общую картину. Кроме того, ошибки можно найти и в самих кодах. Однако читатели шутят, что их наличие только помогает быстрее находить собственные.

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

7. «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес

Кто-то её хвалит, а кто-то обвиняет в старости – так или иначе, книга так называемой Банды четырёх привлекла в своё время большое внимание, и, что говорить, привлекает его до сих пор. Да, 1995 год издания для книги о паттернах (которые окончательно систематизировали в 2001—2002 гг.) – не лучший вариант, тем не менее в ней приведены шаблоны, существующие и успешно действующие и поныне. Она скорее яркий пример уже «классической» литературы, методы которой, увы, уже не применить, но для понимания знать стоит. Непростая по своей сути и языку она все же называется «ситом», которое отделяет любителей от профессионалов. Однако сильно подпортить мнение о книге может перевод – многие читатели предпочитают оригинал неудачным синонимам и откровенным ляпам русскоязычного издания.

8. «Совершенный код», Стив МакКоннел

Ещё одна книга must-have и must-read. Всё-таки больше ориентирована на начинающих программистов и разработчиков ПО, но и более опытным «заходит». Изобилует примерами, написана скорее в стиле теории с отсылками на собственный опыт и жизнь, отчего читается достаточно легко. Даст знания не только общие, но и о мелочах процесса разработки, так как здесь показан весь путь от начала до конца.

Многие читатели отмечают, что именно эту книгу стоит читать как можно раньше. И пусть она критикуется некоторыми за наличие «воды», но именно это ощущение автора подкупило другую часть аудитории, которая находит «Совершенный код» книгой для программиста любого уровня. Но, как и в абсолютном множестве подобных книг, английский вариант кажется куда более привлекательным и точным, чем перевод.

9. «Дизайн и эволюция C++», Бьёрн Страуструп

Книга, которая по праву заслуживает овации читателей. Она была издана в 1994 году и как практическое пособие устарела, но как книга-история, книга-пояснение, как появился С++ и как он строился, из каких частей и почему – просто незаменима. Читатели отмечают, что её стоит изучать тем, кто заинтересован в программировании не только как в работе, но и как в процессе, приносящем определённое удовлетворение. Язык, стиль, манера – всё это приятно, легко и захватывающе. И лишь одно может испортить впечатление: на этот раз не перевод, а само издание. Речь, конечно же, о русском варианте.

10. «Just for Fun. Рассказ нечаянного революционера», Линус Торвальдс, Дэвид Даймонд

Одно из самых лёгких чтив списка, которое по достоинству оценят любители «пингвина». Написанная в соавторстве с самим создателем системы Linux Линусом Торвальдсом, она в отчасти даже забавной форме повествует о его жизни, о забитом мальчишке, истории появления Linux и забавных случаях из жизни. Всё это приправлено техническими описаниями и размышлениями о бытии. Для обывателя, не посвящённого в тонкости технической стороны, книга может показаться скучноватой, но для опытного программиста, особенно того, который «отдался» Linux-y, чтиво будет крайне занимательным.

11. «Рефакторинг. Улучшение существующего кода», Мартин Фаулер

Очередная книга «в возрасте» (1999 год), но при этом ни в коем случае не ставшая от времени хуже. Автор не только талантливо подаёт информацию, но и делает большой акцент на практику. Многое из книги применяется на практике и сейчас, хотя что-то, безусловно, устарело.

Однако читатели чуть ли не в один голос заявляют: книга должна быть настольной для любого серьёзного программиста. Классика, которая насыщена пусть иногда спорной, но качественной практикой. И даже если читатель будет с чём-то не согласен, он всегда сможет найти что-то, что придётся ему по душе даже сейчас, спустя столько лет после выхода книги, ведь некоторые части книги на самом деле уже неактуальны ввиду появления новых технологий. Печалит лишь одно: всё тот же неточный перевод.

12. «Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования», Федерико Бьянкуцци, Шейн Уорден

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

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

Какие книги следует читать, чтоб стать программистом

Какие тысячи книг надо прочитать, чтоб выявить те «три», которые реально помогли стать хорошим программистом? Хочется поговорить не столько о конкретных книгах, сколько о типах книг. И в чем заключался академический подход к этому в СССР…

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

Разработчикам в большинстве случае деньги платят за умение решать комплексные задачи — стартапить распределенные приложения, выявлять узкие места в производительности уже работающих систем, оптимизировать эти узкие места и пр.

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

Чтоб стать таким проводником, нужно одновременно соприкоснуться с двумя формами:

2. сторона человеческого восприятия

Ведь именно этим фундаментальным аспектам обучали в высших технических школах СССР. Если освоить хорошо их, то дальнейшие книги сами выстроятся — потребуются знания о методиках разработки, конкретных языках и фреймворках. Выбираться будут из тактических соображений, в зависимости от задачи и изучаются за конечное время.

  • Вопрос задан более трёх лет назад
  • 21468 просмотров

Сам программист и имею некоторый опыт преподавания программирования, как школьникам, так и студентам.

Начинать с изучения алгоритмов архитектур, баз данных и прочего категорически не советую!

Убьете в себе всякое желание развиваться в этом направлении. Лучшая мотивация для человека продолжать что то начатое, это когда он видит как что то, только что созданное им, пускай и почти бесполезное, но (!)Работает.

Начните с какой нибудь книжки изучения языка (C, Java, C#)для начинающих. Для начала освойте основные конструкции языка: Типы данных, Ввод, Вывод, Условия, Циклы, Функции/Методы.
Потом переходите на решение простых задач:
— Вывести все числа от 0 до 10
— Вывести все четные числа
— Вывести таблицу умножения
— Красиво отформатировать выводимую таблицу умножения
— Вывести треугольник паскаля (тоже можно с форматированием)
Далее стоит уже порешать простейшие алгоритмические задачи, которые потихоньку заставят вас обратиться к книжкам этой тематики:
— Найти решение уравнения заданного коэффициентами, методом деления отрезка пополам.
— Позволить пользователю ввести набор чисел и вывести их в сортированном виде.
— Прочитать файл и вывести все встречающиеся в нем слова (уникальный список слов)

… тут уже начинает кончаться фантазия потому что я еще не пил свой утренний кофе, но если вам потребуется я с удовольствием добавлю список.

После того как эти азы вам будут уже известны вы и сами найдете себе задачу по плечу. И вам будет гораздо интереснее читать те книжки которые вам тут советуют. И не важно какую платформу и язык вы выберете потом, важно сначала научиться программировать.

Книги для программистов [закрыт]

Есть какие-нибудь книги которые должен прочитать каждый хороший программист?

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками fori1ton, VenZell, ReinRaus, atwice, etki 10 апр ’15 в 8:34 .

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

5 ответов 5

Любые книги, где описывается следующие:

Структуры данных:

  • Массивы и строки
  • Связанные списки
  • Стек и очередь
  • Деревья и графы

Алгоритмы и «концепции»:

  • Сортировка и поиск
  • Рекурсия
  • Манипуляция битами
  • Объектно-ориентированное проектирование

Язык программирования

Операционные системы

Дизайн и юзабилити(опционально)

Конечно это не полный список, но для начала хватит.

Думаю, будет интересно и полезно познакомится с ассемблером. Сейчас это может показаться лишним (не нужным и не современным), но посмотреть, так сказать, на «внутренности» всех действий поможет еще в большей степени понять программисту, что именно происходит с машиной.

Немного конкретики: мне многие советовали «Алгоритмы. Построение и анализ» Кормена, Лейзерсона, Ривеста и Штайна. Сам пока прочитал несколько глав, написано вполне толково. Требования к текущим знаниям три: знание хоть какого-нибудь языка (но не Php или т.п., конечно), знания в математике (на первые главы хватит понятия о функциях) и голова на плечах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками книги или задайте свой вопрос.

Похожие

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.14.35440

Какие книги читать начинающему программисту?

Какие книги стоит прочитать начинающему программисту?

«Какие книги рекомендуете почитать?». Этот вопрос задают мне все, кто начинает свой путь в области разработки. И действительно, на занятиях разбирается множество концепций и примеров, но иметь всю теорию, собранную в одном месте, никогда не помешает. Я и сам прочел десятки книг про разработку и продолжаю их читать. Это очень помогает в профессиональном развитии.

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

Тем не менее, в этой статье я постараюсь рассказать про книги, которые на мой взгляд самые полезные. Я буду говорить про веб-разработку, так как это моя основная область деятельности, но еще и посоветую несколько книг, которые должны прочитать все разработчики. Начнем:

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих