В течении последнего года мои знания и представления о софтверной инженерии изменились. Эволюционировали. Очень много понятий и областей узнал обзорно. Некоторые копнул полгубже. Было много чего - изучение онлайн курсов, посещение семинаров, общение с отличными профи. Но это ведь только направляющие вещи. Важным является не только то, чтобы понять куда можно копать. Более важная составляющая - это писать код. Ставить эксперементы. Непонимая пытаться понять. И читать. Что касается кода и эксперементов - это тема для других статей. Эту же я хочу посвятить своим спутникам этого года, а именно - книгам, которые я читал и продолжаю читать. Книгам, которые мне нравятся. Тем, которые я считаю нужными и полезными для разработчика и человека, полного духа исследования.
И тем, которые мне хочется прочесть.
Книги по .net и windows programming model
Во первых, есть несколько ключевых книг по .net в целом и C# в частности, которые я и сам бы описал тут. Однако, зачем делать это дважды. Просто сошлюсь на пост своего друга, замечаетлного человека и специалиста. Вот тут находится статья "Must have книги по .NET 4 BCL". Спасибо Роману за хороший обзор. Особенно из этих книг я люблю детище Джеффри Рихтера - "CLR via C#" . Даже переводная есть. Потому и приведу фото ее обложек. Английскую, конечно почти все .net разработчики как минимум листали хорошо.
Действительно замечательная книга по .net я прочитал ее раньше, но иногда возвращался к ней в течении года. Однако тема обсуждения этой книги и так порядком затаскана, так что оставим эту затею и перейдем к следующему пункту.
Должен отметить, что с книгами Рихтера я познакомился намного раньше, чем с платформой .net. Еще в 2001 году был в востогре от чтения его книги "Windows. Создание эффективных Win32 приложений с учётом специфики 64-разрядной версии Windows". Именно с нее началось мое изучение windows как платформы. Однако каждому понятно, книга опубликовання в 1999 году по win2k вряд ли может счтаться актуальной. И будет прав. Она устарела. Однако многие концепты изложенные в ней работают успешно и сейчас. И ей на смену доступна новая замечательная книга того же автора "Windows via C/C++, 5th Edition"
и хоть она тоже не является суперновинкой, но она очень хорошо отражает суть платформы. Есть переводной вариант. Кончено кто-то может сказать, что в эпоху Windows RT это уже не актуально, однако позволю себе возразить. А на чем по вашему работает это самый
Windows RT ? Правильно, на нормальном таком себе, стандартном ядре Windows, и хоть авторам прикладушек для телефонов это может и не очень нужно, но что творится под капотом для кого то важно.
В общем Кесарю - Кесарево...
В дополнение к секции о .net windows хочу упомянуть несколько книг для более узкой аудитории.
Во первых - пара книг по WPF. Это хорошо известная WPF 4 Unleashed - замечательно изданное руководство. Среди книг по WPF мне нравится больше всего. Так же неплоха оказалась книга Мэтью Макдональда Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4 , однако я её держал в руках только в переводе, и это портит впечатление. Стоит сказать, что это тоже не самое суперсвежее нечто, но именно с ними приходилось работать, а именно книгам, с которыми я прошел этот путь и посвящен обзор. Для большинства этих изданий существуют обновления, например Pro WPF in C# 2012: Windows Presentation Foundation in .NET 4.5
Во вторых, о ужас, довелось мне читать книгу по Windows Communication Foundation на русском... Звучит местами жутко... Как вы бы правильно перевели "end point"? Да правильно, перевод только снижает понятность того, о чем идет речь.. Сказать хороша или плоха не могу. Потому что других не читал. Остальное что смотрел - MSDN. Вот книга Professional WCF 4: Windows Communication Foundation with .NET 4
Что касается Windows RT, упаси меня писать что то с использованием Windows RT, но в общем идея платформы не плоха и не нова, но избавте меня плиз... Книгу читал только одну. Обзорную и поверхностную, но как оказалось очень приятную. Мне ее вручили на MSSWIT 2012 бесплатно ) Мелочь, а приятно. Вот она: Бесплатная книга: Windows 8 для C# разработчиков
Тоненькая. Без глубин. Обзор возможностей с примерами. Но большое спасибо автору.
Начав секцию книг о .net бестселлером Рихтера, закончу тоже очень весомой и любимой мной книгой. framework design guidelines
Книга фактически является набором рекомендаций и практик как именно нужно проектировать фреймворк. Фраза, что хорошоий фреймворк стоит догрого, обретает смысл, когда осознаешь сколько раз нужно делать рефакторинг, пересматривая буквально всё. Каждое утвержддение прокоментированно известными в этой области людьми. Книга "must read" как для тех, кто пишет бэкэнды, так и вообще для разаботчиков, кто старается создать продукт, который будут потреблять другие разработчики.
На этой славной ноте закончим говорить о .net/windows мире.
Python и Java. И другое.
Я обажаю гетерогенные системы. Не потому что это хорошо для решений, скорее наоборот. А потому, что позволяют с более интересной позиции глянуть на используемые технологии и подходы. А потому, не желая становиться чисто .net разработчиком, использую и другие языки. Плюс, в некоторых предметных областях и ситуациях это делать просто приходится. А я этому даже рад.
Мое кредо - язык программирования в разработке -вещь вторичная. Первичная вещь - это идея. Реализуйте на том, на чем реализовывать логичнее, дешевле, надежнее и легче. А так же на том, на чем приятнее. И еще важно стараться быть сильным, квалифицированным и образованным. Сохраняя в руках основной свой инструмент не бояться других. Мне нравиться быть в курсе событий в C/C++ мире, нравится, что я могу выразить свои идеи на этом языке. Но есть и еще. Этот самый год дал мне в руки два замечательных инструмента. Если говорить о Python, то у меня уже был хоть и небольшой, но коммерческий опыт использования его, то что касается Java - все мои встречи с ней сводились к лабораторкам и эксперементам на андроиде, то есть не густо.
Итак, для знакомства с Java я использовал стандартный сценарий и почитав Экеля Thinking in Java в русском переводе (а хотелось бы оригинал).
Я перешел к другой книге, совсем недавно порекомендованной мне моим коллегой, Concurrent Programming in Java: Design Principles and Patterns by Doug Lea
Нельзя сказать, что эта книга общего назначения для того, чтобы стать хорошим джавистом, но она затрагивает темы всегда меня волновавшие, и следовательно мне нравится. Не могу дать хорошей рецензии по ней, но суть, я думаю, ясна - речь идет о многопоточном программировании в Java, о локах и дед-локах, о зависимости состояний, об исключениях из правил и т.п.
В общем получив некоторую дозу знакомства с Java на реальном бэкэнде и веб сервисе читаю эти книги и просветляюсь. Кто то наверное скажет, что Java не для слабонервных и что на ней писать некомфортно. Я вижу у каждого языка свои недостатки. И у C#, и даже у Python, о котором пойдет дальше речь.
В середине прошлого лета я как и многие записальись на замечательный курс от Питера Норвига и Себастьяна Труна по исскуственному интеллекту. И я, подойдя к этому вполне серьезно, а так же интересуясь Python, решил подготовиться. И весь свой отпуск в Крыму каждый вечер писал прототипы на Python. Разминался. Читал книги. Это был старт. За год я прирос к Python так, что не могу сказать к чему я сейчас ближе, к C# или Python. Но это пожалуй и не важно на данном этапе. Итак, Python. Как и многие, я сделал стандартную ошибку и начал читать Марка Лутца. Моё мнение - Лутца читать нужно ну только если вы сосвем еще не слезли со скамейки 1-го курса... Но прочитал, так что привожу тут эту бессмысленную для меня (возможно полезную для кого-то) книгу
Читать её или нет - ваще дело. А я бы рекомендовал несколько других книг.


Начнем с этих двух, потому как говорится в начале серий South Park, эта серия - моя любимая. Это две книги, которые по сути являсь справочниками на самом деле лучшее, по чем можно изучать Python. В основном я конечно говорю о CPython, но именно эти две книги будут актуальны для любой реализации Python 2.7, так как не выходят за пределы стандарта языка. То есть Jyton и IronPython и Pypy - все в полной мере совместимы с материалами этих книг. Рекомендую их всем, особенно первую. Вот они на амазоне:
Продолжим о мире Python, но теперь немного о более специфических вещах. Теперь немного о DJango, базульках и web. Коснуться этой темы заставило меня некоторое наставничество с моей стороны. После работы в Вузе не могу отделаться от привычки хоть кому-то помогать учиться. В общем есть человек, которому я немного помогаю, а ввиду этого и сам повышаю квалификацию. Итак, три книги, которые я бы порекомендовал начинающему web разработчику на Python, которые успел немного полистать сам:
Не скажу, что прямо в глубоком восторге, но прочтения стоят, и пользоваться как справочниками вполне можно. вот вот и вот. Существуют наверняка лучшие материалы для прочтения, но имеем то, что имеем. Сори за каринки с Амазона )))
По питону еще не все. В рамках эксперементов с исскуственным интеллектом и прохождения целой серии курсов от стэнфорда и не только мне пришлось немало позаниматься математикой на Python а потому почитываю сейчас потихоньку вот эти книги:
Это уже чисто для меня. Для удовольствия можно сказать.
Смежная литература
Изучая курсы по AI, алгоритмам, обработке натуральных языков и программированию я коснулся не только книг по питону, но и целого ряда других.
1. Для того, чтобы написать С модуль к питону стоит глянуть
и конечно саму илтературу по C/C++ (приводить ее тут не буду, так как это отдельная интересная тема)
2. В рамках изучения AI хорошо поработал с вот этой книгой (тут 2-е и 3-е издания)
3. Изучая обработку натуральных языков коснулся трех замечательных книг, две из них по прежнему читаю:
Natural Language Processing with Python
Speech and Language Processing
Grammatically Correct
Первая из этих книг доступна в свободном виде для скачивания.
4. И на последок. Образование у меня, как и у многих людей, требует углубления. Цель всего этого - стать более эффективным, заниматься более близкими сердцу задачами, развиваться. Изучение курсов подтолкнуло меня к началу занятий по фуднаментальным вещам. Кое чему я уже успел научиться.
Проработать делатьно материалы приведенные ниже быстро не удастся. Но значительно продвинуться в знаниях читая одну или две и используя остальные как справочник можно. Вот она, моя идея фикс:
Introduction to Algorithms
Algorithms
The Algorithm Design Manual
Bundle of Algorithms in C++, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph



Все пункты, кроме последнего, у меня есть в наличии, и, я радуюсь им как ребенок.
Были конечно еще справочники, так же купил себе кучу литературы по С/С++, но многое еще даже открыть не успел, может быть упомяну их позже.
Natural Language Processing with Python
Speech and Language Processing
Grammatically Correct
Первая из этих книг доступна в свободном виде для скачивания.
4. И на последок. Образование у меня, как и у многих людей, требует углубления. Цель всего этого - стать более эффективным, заниматься более близкими сердцу задачами, развиваться. Изучение курсов подтолкнуло меня к началу занятий по фуднаментальным вещам. Кое чему я уже успел научиться.
Проработать делатьно материалы приведенные ниже быстро не удастся. Но значительно продвинуться в знаниях читая одну или две и используя остальные как справочник можно. Вот она, моя идея фикс:
Introduction to Algorithms
Algorithms
The Algorithm Design Manual
Bundle of Algorithms in C++, Parts 1-5: Fundamentals, Data Structures, Sorting, Searching, and Graph




Все пункты, кроме последнего, у меня есть в наличии, и, я радуюсь им как ребенок.
Были конечно еще справочники, так же купил себе кучу литературы по С/С++, но многое еще даже открыть не успел, может быть упомяну их позже.
Комментариев нет:
Отправить комментарий