вторник, 8 января 2013 г.

Книжные итоги 2012 года

Всем привет.
Я очень люблю читать. Я люблю читать настолько, что бывает я забываю обо всем другом. К примеру, как то однажды мне одноклассник подарил художественную книжку. Я вспомнил о ней только через несколько лет, будучи студентом, как раз во время каникул после зимней сессии. Книга была очень интересной, но концовка намекала, что есть и продолжение книги. Так я узнал, что это первый том десятитомника. Как можно догадаться, следующий месяц я потратил на остальные 9 томов, и ещё 2 месяца на другие 2 серии книг этого и ещё одного авторов. Только необходимость учиться и работать меня оторвали после проглатывания 30 томов захватывающих историй.
Вторая моя страсть - это программирование. С тех пор, как мама купила нам с братом СЮБОР, программирование прочно обосновалось в моей жизни. И вполне логичным продолжением этих историй стало появление моей страсти к чтению технической литературы. Изучать программирование, пробовать, создавать новые программы - это желание движет мной бОльшую часть моей жизни. Но хватит лирики.
Сегодня я решил подвести итог 2012 года. Какие книги я прочитал, что прочитать не успел и какие планы на 2013 год. Если вам это интересно, то прошу под кат.


Итак, книги, что я прочитал в 2012 году (все картинки кликабельны):

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

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

Вообще, серию head first я начал читать в этом году. Написано просто и понятно, с кучей примеров и последовательным изложением. Рассмотрены все основные паттерны, рекомендую начинающим разработчикам. Если вы ещё не прочитали эту книгу - сделайте это.

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

Не смотря на небольшой размер, эта книга вывернула мне представление о разработке на клиентской стороне. Как работают одностраничные приложения? Как использовать замыкание для контроля области видимости переменных в рамках модуля? Как реализовать MVC на клиенте и обновлять модель через REST? Как управлять зависимостями на клиенте? Это и многое другое описано в данной книге. Пожалуй, это самая полезная книга по javascript, которую я прочитал в 2012 году.

Эта книга ориентирована на новичков в JQuery. Если вы можете манипулировать DOM и делать анимации, работать с JSON и Ajax вызовами, и все это используя JQuery, то эта книга вам ничем не поможет. Я её прочитал только для того, чтобы знать основы использования этой библиотеки.

Об этой книге говорить особо нечего. Описано множество применений библиотеки JQuery и плагинов, и чтобы нарисовать график или изобразить таблицу не требуется большого ума - достаточно заглянуть в эту книгу и скопипастить код. Половина книги посвящена основным функциям JQuery, то бишь анимация, перемещение по DOM, CSS, Ajax и тд. Вторая половина показывает работу с плагинами, меню, формами, валидацией, виджетами и прочими красявостями. Каждый пример снабжен комментариями, так что помимо копипасты можно вполне разобраться, что происходит в коде.

Эта книга, в отличие от предыдущей, больше похожа на учебник, хотя по сути содержит то же самое. Рассмотрено очень много тем, включая написание своих плагинов. Субъективно - это самая полезная книга по JQuery 2012 года для меня.

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

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

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

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

Поскольку я теперь разрабатываю под Sharepoint, мне необходимо было быстро ознакомиться с этой платформой. И эта книга мне безмерно помогла. Объёмом она небольшая и рассчитана на новичков, но если вы хорошо знаете asp.net, то, после прочтения этой книги, вы уже можете приступать к разработке для Sharepoint и вопросов у вас будет гораздо меньше.

Как только Сергей Пугачев аннонсировал эту книгу, я сразу же заказал её на озоне. Не смотря на то, что я в основном веб-разработчик, мне очень интересны и другие темы, особенно если он касаются технологии .NET. Если вы читаете мой блог, то вы знаете, что я уже программировал для Windows Phone, а эта книга всего лишь расширила мои возможности в этом направлении. Я думаю, она будет полезна всем начинающим Windows Phone разработчикам.

Вероятно, вы будете удивлены, что делают книги по Java в блоге .NET разработчика? На самом деле, я половину 2012 года работал именно Java девелопером. Это была прекрасная возможность познакомиться с новой платформой. Конечно, Java и JVM во многом похожи на C# и .NET, и это, плюс помощь коллег (привет коллегам), помогло мне быстро освоиться. Немалую роль сыграла и данная книга. В ней описаны все основы, которые нужно знать начинающему Java разработчику, а так как у меня был большой опыт C#, то изучение этой книги прошло намного быстрее. Если вы планируете изучать когда либо Java - то эта книга однозначно мастрид.

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

Для работы с Java, требуется некоторая IDE. Для меня выбор пал на Eclipse и эта книга помогла мне быстро разобраться, как пользоваться данной средой программирования. Рассмотрено множество тем, начиная от создания проекта и хоткеев и до работы с SVN.

Это пожалуй, самая запоминающаяся нетехническая книга 2012 года. Она полна забавных и поучительных историй Ричарда Фейнмана. Я не мог оторваться от этой книжки, пока не прочитал всю (на что у меня ушло всего несколько дней). В общем, если вы технарь и хотите приятно и познавательно провести время - то я бы эту книгу порекомендовал.

Теперь о тех книгах, что я читать начал, но прочитать не успел в 2012 году:

Известная книга известного автора. Я помню, ещё в 10м классе, когда ездил на областную олимпиаду по программированию, я видел у ребят эту книгу. Тогда я не понял в ней практически ничего. Это мой Эверест, это та книга, которую я обязательно дочитаю. В этом году я осилил немного, но я не брошу это занятие. Если вы хотите детально разбираться в алгоритмах и уметь доказывать почему у алгоритма именно такая сложность, то эта книга для вас. Этот фундаментальный труд рассматривает довольно много тем, он научит вас не только использовать различные алгоритмы, но и создавать свои собственные, возможно, более эффективные. 100% мастрид.

Эту книгу я купил в рамках изучения CSS3 и HTML5. Написано понятно, много примеров. Книга довольно известная и, думаю, будет полезна всем веб разработчикам.

Также я уже подготовил список книг, которые я прочитаю в 2013 году. Некоторые из них я уже начал изучать, некоторые только лежат на полке, некоторых у меня ещё нет:

Однажды на собеседовании мне дали задачу построить простой парсер выражений. Он должен был обрабатывать математическое выражение и получать результат (или бросать исключение, если выражение неверно). После этого, когда я работал над калькулятором, я прикрутил к нему созданный тогда и доработанный парсер. После этого, мне стало интересно, можно ли в этот парсер добавить больше логики, переменных, функций и прочего. И тут возникло желание изучить устройство интерпретаторов и компиляторов. Дело даже не только в том, чтобы написать собственный интерпретатор. Дело в том, что эта тема охватывает множество других - тут тебе и регулярные выражения, и синтаксические деревья, и лексический анализ, и много много других интересностей. Так я пришел к известной "книге дракона". Прочитав буквально сотню страниц, я уверился в том, что изучение книги будет для меня крайне полезно и даже записал её в свой список мастрид. Не смотря на то, что книга написана понятным языком, читается она тяжело, по крайней мере мне. Некоторые разделы приходится перечитывать несколько раз, чтобы понять и запомнить.

В конце лета на Coursera был курс по алгоритмам. К сожалению, я о нем узнал только когда курс уже почти закончился. Но даже то, что я успел изучить, убедило меня купить книгу авторов курса и прочитать её. Тем более, что в феврале этот курс будет снова.

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

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


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

Всем спасибо и полезного вам чтения.


10 комментариев:

  1. Круто! Молодец, Тёма!
    "Это одна из тех книг, что я читаю каждый год. Я читаю её перед собеседованиями и сменой работы..." - это несколько сурово звучит :-)

    ОтветитьУдалить
    Ответы
    1. Ну, это ты из контекста вытащил :) Эту книжку полезно и просто так перечитать.

      Удалить
  2. Как называлась художественная литература, которую Вам подарил одноклассник? :)

    ОтветитьУдалить
  3. Список книг впечатляет!
    Можно поинтересоваться -- зачем Вам столько книг по совершенно различным технологиям? Ради саморазвития или с целью реального (уже сейчас) применения на практике?

    ОтветитьУдалить
    Ответы
    1. На самом деле никогда не знаешь, что и когда тебе может пригодиться. Давайте рассмотрим, какие темы я изучал:
      1. .NET, Sharepoint, HTML, CSS и Javascript по сути я обязан знать по работе.
      2. Java мне была необходима также по работе (об этом я уже писал)
      3. Архитектурные паттерны. Без этого никуда. В последнее время даже не важно, на клиенте пишем или на сервере. Паттерны нужны не только для того, чтобы грамотно спроектировать систему, но и чтобы быстро вникать в существующий код, да и разговаривать с другими разработчиками на одном языке. За примерами далеко ходить не надо: cейчас популярно MVC в вебе, MVVM в WPF, CQRS, репозитории, IoC, синглтоны, да можно долго перечислять. Нужен более конкретный пример? Откройте книгу по написанию плагинов к Eclipse Расширения Eclipse: принципы, шаблоны и подключаемые модули - там применение паттернов на каждом шагу. Посмотрите классы/интерфейсы FCL в .NET - это же и итераторы, и команды, и компоновщики.
      4. Алгоритмы. Да, без знания алгоритмов жить можно. Но со знанием жить намного проще. Зачастую, особенно при оптимизации программы, выручает замена кастомного поиска элемента на хешсет (или хешмап, что одно и то же), или, к примеру, мы знаем, что Array.Sort в Java использует сортировку слиянием, а в .NET - быструю сортировку, и, зная это и характер входных данных, можно написать свою сортировку, которая будет работать быстрее стандартной на тех данных, с которыми приходится работать.
      Так что, как видите, из всех представленных книг, мне возможно не пригодится только windows phone. Вот на нем я программировал чисто ради развлечения. Наверное потому, я, в задаче про калькулятор, и постарался использовать темы из алгоритмов и паттернов, так что даже тут время было потрачено не зря.

      Удалить
  4. Артём, по поводу алгоритмов. Вы читали Дональда Кнута (серия "Искусство программирования")? Если да, то опишите, пожалуйста, свои ощущения. Вы очень интересно делитесь впечатлениями о книгах.
    Спасибо!

    ОтветитьУдалить
    Ответы
    1. Я планировал прочитать тома Кнута, однако, знакомый и весьма авторитетный для меня программист, отозвался о них как то так: "Теория алгоритмов там преподнесена весьма неплохо, но описание работ с перфокартами и устаревшими технологиями - просто лишний мусор". Потому я пока намерен изучать более актуальный материал, а Кнута я оставлю до тех времен, когда/если чтение его для меня станет действительно необходимым.

      Удалить
  5. Артём, отличный список книг, по крайней мере по java/js/архитектурным изыскам.
    Из мира Java хотелось бы отметить еще "Effective Java" Joshua Bloch - на мой взгляд, она будет отличным продолжением после Хорстмана - только ее лучше читать в оригинале.

    А по JS недавно прочитал - "JavaScript Профессиональные приёмы программирования" Джона Рейсига,- я бы ее отнес к категории must read.

    ОтветитьУдалить
    Ответы
    1. Спасибо! Согласен с тобой по обоим пунктам. О книге "Effective Java" я слышал много раз и всегда только хорошие отзывы. А книгу о javascript от создателя JQuery думаю, стоит почитать. Возможно я добавлю её в список книг 2013 года :)

      Удалить