C# 4.0 in a Nutshell, Fourth Edition
- modified:
- reading: 4 minutes
Стал я счастливым обладателем такой вот замечательной книжки C# IN A NUTSHELL 4th edition. Это уже четвертая редакция этой книги. На руках я видел когда-то третью редакцию, которую мы подарили на одном из мероприятий в ЯрГУ, и книжка 3-й редакции была на русском, а все русские книги печатают на (как бы по мягче выразиться) не очень качественной бумаге. В общем, признаюсь честно книгу до конца пока не дочитал, но уже на данном этапе у меня огромное удивление. Почему? Почему так много говорят о книге Рихтера - CLR via C# (англоязычная версия 3-й редакции у меня так же на полке ждет моего внимания), но так мало о книге C# IN A NUTSHELL, по крайней мере, это так в моем кругу. Про нее я слышал только один отзыв в одном из Подкастов Петербургской Группы Alt.Net, да и то как всегда в разрезе Рихтер - это круто, а C# IN A NUTSHELL - это хороший справочник. Мое мнение - Рихтер нужен для того, чтобы научиться разрабатывать на .NET. А вот чтобы научится программировать на C# то это вам к C# IN A NUTSHELL.
А теперь давайте я попробую объяснить чем же мне понравилась эта книга. Во-первых, огромным обилием примеров, посмотреть их вы можете уже сейчас на официальном сайте книге в разделе Code Listings (правда, примеры там не все). Причем примеры, по-моему, сделаны не просто ради примеров, действительно хорошо подобраны мелкие и часто встречающиеся задачки. Так, например, для Parallel Programming выбрана тема Parallel Spellchecker - и уже в голове всплывают идеи где бы применить эту технологию.
Второе, чем понравилась книжка - это грамотная раскидка по темам. Я, кстати, не стал воротить нос от главы C# Basics, прочитал и ее, а мало ли. Даже там можно уже набрать интересных этюдов. Например, все знают что в C# 4.0 появились именованные и необязательные параметры в методах, но вот приходила ли в голову кому-нибудь такая конструкция?
void Foo(int x, int y) { Console.WriteLine (x + ", " + y); }
void OtherFoo()
{ int a = 0;
Foo(y: ++a, x: --a);
}
Что выполнится первым ++a или --a и что будет на экране? Такими интересными (но, правда, не нужными на первый взгляд) примерами книга полна. Минус в книге, правда в том, что если бы это был Рихтер, то после мы бы увидели пару страниц с MSIL кодом, подробными объяснениями, здесь же мы чаще видим что это так, потому что это так. Оно и не удивительно, посмотрите сколько тем в этой книге освещено:
Если бы там разжевывали каждый пример, то это был бы не меньше чем 5-томник. Но в любом случае ответят с достоинством и примерами на вопросы когда использовать константы, а когда статические только для чтения поля, расскажут об основах работы со сборщиком мусора, да в общем даже и не знаю какие базовые темы там не достаточно освещены.
Еще понравилось, что книгой можно пользоваться как справочником, а так же познакомится со всеми нововведениями языка C# 4 и возможностями .NET 4.0 пробежавшись по главам PLINQ, Dynamic, Code Contracts и другим. Книжка сейчас состоит больше чем из 1000 страниц, предполагаю, что следующая часть должна быть точно двухтомником, либо просто дополнением к этой, так как выкидывать вроде все жалко, а делать ее толще - уже не поднять.
В целом книжка должна быть интересна как матерому C# разработчику вроде как справочника и ознакомления с новыми фичами. Так, я думаю, будет интересна и новичку, правда, сил на чтение ему придется потратить больше, так как примеров там ну просто огромное количество, не знаю было ли это с 1-й редакции или это результат длительного и долгого допиливания. Но все равно новичку начинать лучше с Рихтера и уже потом знакомиться с этой книжкой, либо, может, параллельно.
От себя рекомендую покупать книгу на английском языке, там не литературное произведение и читается легко даже с базовыми знаниями языка, для примера можно ознакомиться с главой Threading in C#. Книга на сайте O’REILLY.
Что думаете об этой книге? Были знакомы с предыдущими версиями?