Ревью нескольких .Net-ориентированных книг от Manning

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

Заметьте, тут всего 4 книжки. Хочется больше, но как-то руки не доходят попросить у Manning несколько review-копий.


DSLs in BOO


Собственно сам язык Boo (некоторые почему-то пишут BOO) мне интересен только одной фичей – поддержкой метапрограммирования или, другими словами, возможностью расширять компилятор. Привлекательно это потому, что научиться конкретно метапрограммированию в Boo не так сложно, хотя и приходится отказаться от таких приятностей как синтаксис C#, Visual Studio (нужно использовать SharpDevelop) и соответственно IntelliSense. Как бы там ни было, популярный блоггер Айенде решил встать «впереди планеты всей» и написал книжку про то, как создавать доменно-специфичные языки (DSL-и) на этом питонообразном языке.

Если быть откровенным, то книжка у Айенде не получилась. Совсем. Главной причиной является то, что Айенде плохо пишет – у него явно нет навыков для написания больших монографий, и с первых страниц книги читатель может ощутить тот дискомфорт который автор испытывает, пытаясь передать мысль в когерентной форме. Теперь насчет собственно структуры контента. Во-первых, Айенде плохо продает идею DSLей – а ее, как мне кажется, нужно продавать. Например, показать пример BDD-фреймворка и сказать что это DSL – это как-то нечестно потому что я, например, могу привести контр-пример где мы используем, скажем, Cucumber (Ruby) чтобы написать то же самое, и для этого мне не нужен Boo. Возникает естественный вопрос: а что нам дает именно Boo, чем он лучше и полезнее?

Далее в книге идет описание самого языка, и интересно что на создание DSLей на этом языке выделено всего 2 главы из 13 – остальное это либо вводные части, либо примеры реализаций. Кстати насчет примеров – они все не просто короткие, они коротенькие и ультра-простые. Это я к тому, что в моей практике DSLи имеет смысл использовать тогда, когда за одной строчкой DSL скрывается 5-10 обычного C#. У Айенде же в примерах соотношение примерно 1:1. Зато количество инфраструктурных обсуждений в книге очень большое – тестирование, создание UI, да просто обсуждение того как сортировать скрипты – возникает вопрос о смещении ценностей. Ведь все-таки изначальная идея была продать Boo как язык для создания DSLей, а в результате она как бы вышла на второй план.

В заключение скажу что на книгу я возлагал много надежд, купив ее в форме early access для подготовки к небольшому семинару по метапрограммированию, но в результате разочаровался. Что ж, иногда и так бывает.

1 stars1 stars1 stars1 stars1 stars

ASP.NET MVC 2 in Action


Иначе как «вынос мозга» эту книжку не обозвать. MVC in Action – это книга по Asp.Net MVC для тех кто уже похоже все знает но хочет проверить свои знания и заодно получить дозу зубодробильной информации от настоящих гуру в этом деле. Написало ее целых 5 авторов (все MVP), и они за словом в карман не лезут – тут у них и MvcContrib и Rhino.Mocks и другие прелести.

На самом деле – первая часть книги это еще цветочки – ее хоть как-то можно читать новичкам. А вот начиная со 2й части уже становится значительно сложнее, т.к. без хорошего багажа знаний современный паттернов и практик во всем написанном вполне реально утонуть. Тут, кстати, фигурирут такие вещи как DDD и такие технологии как Spark. (Это кстате в каком-то смысле минус т.к. большинство людей сейчас скорее интересует Razor.) В трерьей части книги появляются такие вещи как AutoMapper и NHibernate (опять же, все преподнесено на хорошем, презентабельном уровне). Ну и в последней главе, уже в разбивку, показаны разные многофункциональные прелести. В одной из глав, правда, приведен пример того, как написать autocomplete text-box, что немножко выбивает из ритма.

Если резюмировать – хорошая, компактная но полная актуальной информации «от станка» книжка. Подойдет для тех кто уже начал писать на MVC и теперь хочет сделать что-то серьезное. Рекоммендую!

4 stars4 stars4 stars4 stars4 stars

C# in Depth

Несмотря на то, что у меня есть свои фавориты в плане книжек по C#, я счел своим долгом прочитать именно эту – ведь её автором является не кто-то там, а сам Джон «Чак Норрис» Скит. Для тех из вас кто живет на другой планете, мистер Скит является звездой портала StackOverflow и одним из ведущих экспертов по C# (а также по Java, на которой он пишет в Google, хотя подозреваю что его интерес к этому языку несколько меньше по весьма понятным причинам).

Итак, если коротко – то C# in Depth (я читал первую версию, сейчас есть вторая) – это просто конфетка. Для человека который хочет узнать что такое C# (например, если вы пришли к нему из мира Java или C++), эта книга – манна небесная. Написана она очень хорошо – в очередной раз подтверждает что мы британцы в принципе неплохо пишем :)

Книга, как вы догадались, является хрестоматией C# разработки, начиная от азов и кончая такими вещами как Linq. Читается она очень легко, без WTF-моментов. Скит пишет в очень неформальной манере, завлекая читателя в интересные тонкости языка. Я читал много книг по C#, но такой дозы позитива я до этого не находил нигде. Мне кажется, что эта книга формирует неплохой «двойной удар» с книжкой C# in a Nutshell (о книгах O’Reilly мы еще поговорим) – ведь первая объясняет что это за язык такой, а вторая описывает библиотеки классов.

Вообщем, впечатление осталось очень позитивное, поэтому C# in Depth получает твердую пятерку как за стиль так и за содержание.

5 stars5 stars5 stars5 stars5 stars

Real-World Functional Programming

После того как я опубликовал отзывы по книге Expert F#, коллеги подсказали что неплохо было бы мне было посмотреть и на эту книгу, благо не всем хочется пролистывать дорогой (одна из самых дорогих книг) талмуд на тему F#. Также, стимулировали к прочтению этой книги две вещи – то что книжка покрывает не только F# но и C#, а также (drumroll please) то что и к этой книге приложил руку сам Джон Скит (хотя основной автор – Томаш Петричек). Сорри если кого-то этот мем начал раздражать – я не нарочно.

Итак, R-WFP – это книжка про «бытовое» функциональное программирование без высоко поднятого носа сообществ языка Haskell, Lisp или каких-то еще – это, в очередной раз, прагматика и лично мне это очень нравится. (Собственно термин ‘Real-World’ в названии как бы намекает…) Первое что пришло мне в голову – они украли у меня идею функциональной анимации! Я недавно на эту тему статью писал, она даже на CP приз выиграла. Впрочем, очень приятно что авторы пишут про знакомые мне идеи. Также приятно что не остались за бортом и другие языки программирования – такие как Lisp и Erlang. Понятное дело что мы тут про .Net говорим, но наше сообщество порой страдает узким мировозрением по отношению к другим платформам.

Книга, точно так же как и C# in Depth, делает плавную прогрессию от азов (например, от рассказов про то что такое кортежи или списки – это ведь нужно для понимания F#) и прогрессируя до таких вещей как применение функций высокого порядка. Вообще что меня поразило, так это широта задач, которые покрывает эта книга – тут и анимация, и создание DSLей (я правда и сам писал про DSLи на F#) и реактивное программирование. Правда тут есть один весьма существенный (с моей точки зрения) минус – поскольку книга была опубликована в декабре 2009, в книге не слова на тему Reactive Extensions. Обидно! Ведь не знаю как вам, а лично мне очень хотелось бы иметь описание тех новых структур и опереторов, которые там фигурируют, а также четкое руководство к использованию. Хоть я и сам, в принципе, понимаю что и как.

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

4 stars4 stars4 stars4 stars4 stars

31 responses to “Ревью нескольких .Net-ориентированных книг от Manning”

  1. А обзора книг по C# будет? Чтобы знать на что ориентироваться начинающим.
    Я одновременно читаю 3 (!) книги, чтобы хоть что-то понять.

    1. В разделе C# in Depth есть всё что Вам нужно, автор явно говорит, что эта одна из лучших, зачем Вам знать про худшие?

    2. Берите C# in Depth и будет вам счастье. А потом читайте C# in a Nutshell плюс если ну ооочень интересуют всякие internals, читайте CLR via C#.

  2. Спасибо, сейчас читаю на бумаге ASP.NET MVC от Дино Эспозито, потом возьмусь за электронную от Manning.

    1. Когда МС на юзер-группах раздавали книжку Эспозито (это было про Asp.Net 2/WebForms), я тоже глянул. Показалось как-то гиперзаумно и не очень читабельно. Хотя это давно было.

      1. У него их было две, для начинающих и продвинутая, полагаю, это была вторая. У меня она есть в русском переводе и в свое время неплохо помогла.

        Эта строится по тому же принципу — много разбора внутренностей, практическим моментам уделено не так много внимания. Но мне нравится, помогает понять, как это все работает.

      2. Да, это была продвинутая.

  3. Кстати, C# in Depth Second Edition пока ещё не вышла. Я так понимаю, дата выхода запланирована на сентябрь 2010й год.

  4. C# in Depth не для начинающих. Первый листинг просто убил: классы, свойста, списки с самого начала книги.

    1. Ну… у Струструпа, если я правильно помню, где-то в самом начале книги написан алгоритм про подсчет всех пятниц 13го когда полнолуние.

      1. Страуструп как раз строго не рекомендуется читать, как первой книгой по языку.
        Шилдт оптимальный вариант, как для C++, так и C# – ОЧЕНЬ разжёванно написано, хотя, бывает, что некоторые вещи не особо понятны и бОлее лучшее объяснение лучше найти в других источниках.

      2. Да, я плюсы изучал из таких больших коробочных изданий по Visual C++ 97 (вроде такая версия была), и только потом “догонялся” Струструпом.

  5. Хотелось бы узнать, что вы думаете о книгах Pro C# 2010 Троелсена и Pro WPF in C# 2010 Мэтью Макдоналда, т.к. с них я начал изучение .NET?

    1. Троэльсена не читал – обещали прислать и не прислали. Вроде как хорошая книга, много положительных отзывов. Следует просто понимать, что у авторов Apress в основном достаточно академичный стиль, и в этом плане периодически становится скучновато.

      Pro WPF смотрел, но уже под впечатлением книги Applications = Code + Markup (Petzold), и это было давно. Сейчас особого соблазна читать книги по WPF не имеется, поэтому опять же от комментариев воздержусь.

  6. >хотя основной автор – Томас Петричек – вы заметили насколько поляки любят ФП?

    Насколько я знаю, он Томаш (Tomáš Petříček) и он чех :)
    Как всегда спасибо за очередной чудесный книжный обзор.

    1. Опа! А вот это забавный ляп с моей стороны! Придется поправить обзор.

  7. Книги замечательные

  8. Alexander Tankeev Avatar
    Alexander Tankeev

    Спасибо за серию интереснейших обзоров.

  9. Дмитрий, посоветуйте пожалуйста пару хороших книг по написанию unit тестов.

    1. Ну мне кажется что ключевой книжкой является XUnit Test Patterns из Martin Fowler Signature Series. Это тяжелая, глубокая книга, которая покрывает все основные концепции (смеллы, тестовые дубли, и т.п.). Если же говорить о более «легких» книгах которые более приближены к .Net, то первое что приходит на ум – это The Art of Unit Testing.

      1. Благодарю :)

  10. Дмитрий, а как вы книги получаете? Покупаете бумажный вариант(они как по мне – безумно дорогие) или электронный вид?

    1. Бумажный вариант. Дороговизна зависит от вашей зарплаты :) Правда часто книги получаю бесплатно от издательств.

      1. Например вот http://www.ozon.ru/context/detail/id/5184008/
        4500 за книгу – мне кажется перебор.

      2. Ой нет, я беру исключительно с amazon.co.uk

  11. Кстати, посоветуйте пожалуйста материалы по созданию DSL на C#

    1. Ну C# сам по себе неидеальный язык для DSLей, хотя через методы расширения может что-то и получится. Я бы смотрел на F# или (Iron)Ruby, а также на системы вроде MPS (см. мой последний пост).

      1. Вероника Avatar
        Вероника

        Как можно достучаться до функций f# в c#. В инете нашла только как создать тип объявленный в f#, если он объявлен в namespace. А если просто какую-нибудь хитрую функцию не из класса вызвать?

      2. Не очень понял вопрос. Что значит “функцию не из класса”?

      3. Видимо, имелись ввиду глобальные функции модуля. В таком случае они вызываются просто ModuleName.Method(). Тут стоит заметить, что даже если у вас модуль явно не объявлен, он создается автоматически с именем файла.

      4. Вероника Avatar
        Вероника

        Спасибо;)

Оставить комментарий