Дмитpий Hecтepук

Блог о программировании — C#, F#, C++, архитектура, и многое другое

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

31 комментарий

Это еще один пост с обзором книг, но в этот раз «с изюминкой» – будем обсуждать книги издательства 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

Реклама

Written by Dmitri

27 августа 2010 в 14:07

Опубликовано в .NET, Books, C#, f#

комментарий 31

Subscribe to comments with RSS.

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

    Enoalife

    27 августа 2010 at 14:40

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

      Restuta

      27 августа 2010 at 15:17

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

      Dmitri

      27 августа 2010 at 15:32

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

    Artem

    27 августа 2010 at 15:19

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

      Dmitri

      27 августа 2010 at 15:31

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

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

        Artem

        27 августа 2010 at 15:51

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

          Dmitri

          27 августа 2010 at 15:56

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

    Enoalife

    27 августа 2010 at 16:07

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

    Enoalife

    27 августа 2010 at 18:13

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

      Dmitri

      27 августа 2010 at 19:23

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

        Enoalife

        28 августа 2010 at 1:12

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

          Dmitri

          28 августа 2010 at 9:18

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

    Victor

    27 августа 2010 at 19:16

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

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

      Dmitri

      27 августа 2010 at 19:22

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

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

    morhetz

    27 августа 2010 at 22:29

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

      Dmitri

      27 августа 2010 at 23:23

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

    nastatiazjxm

    28 августа 2010 at 2:54

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

    Alexander Tankeev

    29 августа 2010 at 12:03

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

    Andrew

    30 августа 2010 at 9:43

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

      Dmitri

      30 августа 2010 at 10:17

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

    Алексей

    2 сентября 2010 at 15:47

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

      Dmitri

      2 сентября 2010 at 16:02

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

    Алексей

    2 сентября 2010 at 15:49

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

      Dmitri

      2 сентября 2010 at 16:03

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

        Вероника

        4 сентября 2010 at 16:59

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

          Dmitri

          4 сентября 2010 at 20:50

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

          Artem

          4 сентября 2010 at 21:12

        • Спасибо;)

          Вероника

          5 сентября 2010 at 5:15


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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: