Пять книг по программированию, которые стоит прочесть

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

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




    Направление: Программирование как профессия


    Книга: Э. Хант, Д. Томас. «Программист-прагматик. Путь от подмастерья к мастеру»



    Эта книга не о технологиях и языках программирования. Она о принципах и подходах – о том, чем программирование является по своей сути. Именно поэтому я поставил ее первой в списке. Многое покажется очевидным, с чем-то вы будете спорить, в чем-то сомневаться и долго искать ответы на собственном опыте. Но однозначно именно эти и подобные принципы и подходы определяют вас как разработчика.

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

    Направление: Архитектура


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



    Удивительно полезная книга знаменитой «банды четырех» (Gang of Four). Отличный пример структурированного и продуманного изложения. По сути, книга заложила терминологию, которой пользуются практически все программисты, обсуждая то или иное архитектурное решение.

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

    Направление: Языки программирования


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



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

    Направление: Технологии


    Книга: Дж. Рихтер. «CLR via C#»



    Практически идеальный учебник по .NET.

    Джеффри Рихтер подробно рассказывает о языке C#, а также об устройстве и фундаментальных принципах функционирования .NET-платформы. Традиционный вопрос на наших собеседованиях: «Вы читали Рихтера? Сколько раз?». Вопрос звучит неизменно многие годы, лишь книги меняются. Раньше была «Windows via C/C++», теперь – эта. У Джеффри настоящий талант открывать двери для новичков, создавать правильный и достаточно глубокий фундамент для дальнейшего развития. Эта книга не единственная, но, если вы начинаете знакомство с технологией .NET, начните с нее. Вы не пожалеете!

    Направление: Области разработки и другие направления


    Книга: Э. Таненбаум, М. ван Стеен. «Распределенные системы. Принципы и парадигмы»



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

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

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

    Приятного чтения!

    Plarium

    123,08

    Разработчик мобильных и браузерных игр

    Поделиться публикацией

    Похожие публикации

    Комментарии 27
      +2
      а где Совершенный код?
        +12

        Хм. Вот нахрена советовать всем читать банду четырех? Во-первых, эта книга для определенного уровня, начинающим ее читать просто вредно — пользы не принесет, и потом, это скорее (в какой-то мере) справочник, а не учебник.


        Во-вторых, объектно-ориентированное проектирование, в таком виде как оно там подается, уже достаточно много лет активно видоизменяется, ярким примером чему стало появление лямбд в Java, в итоге значительная часть описанных паттернов из этой книги стала просто тривиальной конструкцией языка (а в языках типа лиспа или хаскеля — и всегда была такой).


        Ну или Керниган и Ритчи? Серьезно? Не, я не против, классическая книга, и язык, многое определивший в развитии индустрии. Но если вы сегодня, в 2017 не можете назвать более полезную сегодня книгу (а не исторический артефакт, по-хорошему любопытный только ради истории) — это грустно.

          0
          Что бы вы в таком случае посоветовали новичкам из актуального сейчас? Мне как новичку было бы интересно узнать и думаю почитать.
            +1

            Я бы не взялся советовать книги на любой случай. Это зависит от направления, в каком вы хотите развиваться. Есть люди, которые вполне себе живут, программируя под платформы типа MS SQL Server или Oracle, базы данных и все что вокруг них. И зачем им язык C, кроме как ради знания истории?


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


            А уж книгу про язык C начинать читать если вы реально собрались в этом направлении развиваться — скажем, писать что-то в области embedded.


            Вот насчет Таненбаума я скорее соглашусь, хотя сам читал как раз другую его книгу, про ОС, и давно уже, лет 30 тому назад.


            И вот с этим советом можно только согласиться, хотя следовать ему сложно — пока не прочел, откуда знать, что там внутри:


            Но мой вам совет: выбирайте книги, которые дадут в первую очередь понимание, а не просто поверхностную информацию.
              +1

              И еще — я бы посоветовал почитать что-то из другой области. Ну хотя бы Том ДеМарко, Тимоти Листер — есть несколько их книг по управлению проектами, их стоит почитать разработчикам тоже, потому что они дают понимание, как развивается проект в целом, как управлять рисками, как работать в команде. Ну и потом, они просто прикольные )))

              0

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

                0

                Я не знаю, про какую вы конкретно, но да — суть в том, что про паттерны с тех пор написали много чего, под разные языки реализации, скажем под .Net или Java. И это было бы практически полезнее, GoF еще и очень абстрактная книженция.

                  +1
                  Я так понял, что речь идет о книге издательства O`Reily из серии HeadFirst под названием Design Patterns. На мой взгляд это одна из самых понятных книг на эту тему.
                    0
                    Поддерживаю. После прочтения этой книги чтение паттернов «банды четырех» пройдет с большей пользой и удовольствием.
                      0

                      Вот, чтоб было понятнее, почему я против чтения GoF в чистом виде, начинающими: цикл статей Марио Фуско на общую тему, как трансформировались некоторые паттерны с появлением в Java 8 лябмд: https://www.voxxed.com/blog/2016/04/gang-four-patterns-functional-light-part-1/.


                      Отсюда прекрасно видно, что некоторые изменения языка (или переход на другой язык) приводят к тому, что описанные классические паттерны становятся зачастую просто тривиальными, когда у вас есть функции как первокласные сущности языка, функции высших порядков, и некоторые другие вещи.


                      И в общем-то, если посмотреть в сторону лиспа, или даже javascript, можно увидеть, что тот или иной паттерн — всего лишь функция, возвращающая другую функцию, к примеру. А если вы под .Net пишете, то в современном c# тоже многие вещи проще делаются, нежели описано в классической книге про паттерны.


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

              +2
              Ожидал увидеть «Совершенный Код» еще, достойная книга, для пополнения списка.
                0
                Книги это конечно очень хорошо, из этой коллекци я читал Рихтера «CLR via C#». Но мне очень сложно дается их читать, после прочтения пары страниц я начинаю зевать. Как с этим бороться?
                  +1
                  Для тех, кто занимается разработкой корпоративных информационных систем, можно еще посоветовать книги Мартина Фаулера и др.: «Шаблоны корпоративных приложений», «Архитектура корпоративных программных приложений».
                    0
                    Я бы добавил в Ваш список
                    Шаблоны интеграции корпоративных приложений
                    +2
                    Где Фаулер? Где Макконелл? Где Кнут, наконец? Почему надо читать c, но не надо читать, скажем, erlang? Очень спорный список.
                      +1
                      Книга Таненбаума «Операционные системы. Разработка и реализация» — одна из лучших технических книг, которые я прочитал. Рекомендую всем
                        0
                        Можно расширить список :)

                        Чтобы менеджмент на голову не садился
                        • The Clean Coder by Robert Cecil Martin


                        Чтобы научиться писать декларативный и подерживаемый код
                        • Elegant Objects by Yegor Bugayenko


                        Для коллаборации команды и разруливания говнокода в монолитных проектах
                        • Domain-driven design by Eric J. Evans


                        Чтобы иметь представление как организовывать высоконагруженные проекты и предоставлять клиентам
                        • Building Microservices by Sam Newman


                        Тут можно ещё добавить про SCRUM и TDD, остальное практика
                        Также очень подтягивает изучение другой парадигмы, углубление в алгоритмы и куда же без Математики :)

                          +1

                          Scrum и tdd вовсе не обязательно нужно всем. К сожалению, все подобные попытки написать список из пяти (десяти, ста) лучших книг, которые нужно прочесть всем, всегда сводятся в конечном счете к этому.


                          Что включать, а что нет. Например, нужно ли разработчику непременно уметь работать с VCS? И если да, то с какой-то конкретной (например Git), или вообще? И вроде бы хорошо уметь вообще, а много можно назвать книг, которые бы хорошо рассказывали про версионирование кода в общем, без привязки к Git, SVN или чему-то еще?

                            0
                            Elegant Objects by Yegor Bugayenko

                            это ведь тот Егор, о котором я думаю?
                                0
                                Null, великий и ужасный

                                и комментарии почитать
                                  –1

                                  Я вас не понимаю, ну статья, стандартный холивар-shit-throwing в коментах, как обычно. К чему тут Элегантные объекты или Егор (комменты читать особо не вижу смысла — много, бестолково да и пользы ноль. Могу угадать результат — никто никого не переубедил, ведь так? )

                                    0
                                    коменты/отзывы/ревью имеет смысл читать перед покупкой книги, чтобы не выкидывать зря свое время и деньги
                                      0
                                      идеи изложенные в этой книге маргинальны, если вас устраивает быть белой вороной (и писать говнокод, но это уже моя субъективная точка зрения), то как бы пожалуйста, никто не запрещает
                            +3
                            Очень спорный пост.
                            Почти генератор флейма.
                              –1
                              Вот почему мне джависту и немного веб «стоит прочесть» рихтера?
                              не я понимаю книга вроде популярна о нем много пишут. Вот только почему???
                                0
                                Я бы порекомендовал прочесть Сергея Теплякова «Паттерны проектирования на платформе .NET» — современная, написана на русском языке — нет проблем с переводом.

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

                                Самое читаемое