Страницы

вторник, 22 апреля 2014 г.

Книги для изучения C#/.NET

DISCLAIMER: выбор хорошей книги – это довольно сложный и индивидуальный процесс. Список ниже основывается на моем личном опыте и обилии "перекрестных ссылок" из разных книг, статей, обсуждений в форумах и личных обсуждениях с коллегами. Если вдруг вы не увидите свою любимую книгу в этом списке, это не значит, что она его недостойна, возможно, она просто аналогично одной из книг, представленных ниже.

Пришло время немного переформатировать старый пост с "классическими книгами по C#/.NET", чтобы отразить не просто список достойных источников для изучения C#/.NET, но и упростить выбор нужных книг в зависимости от уровня и потребностей читателя.

Для новичка в программировании

Ни одна из книг не научит вас программированию, а книги о конкретном языке или платформе обычно даже не пытаются этого сделать. Путь профессионального программиста достаточно труден и мечты стать профессионалом за 21 день всегда будут оставаться мечтой (помните о замечательной статье – Teach Yourself Programming in Ten Years?).

Именно поэтому книги о C#/.NET вряд ли будут лучшими источниками, если вы хотите научиться основам программирования, правильному кодированию, или дизайну. Для этого есть масса других источников и упомянуть хочется лишь несколько базовых книг по разработке ПО: "Структура и интерпретация компьютерных программ" Харольда Абельсона и Джеральда Сассмана (MIT), "Почувствуй класс" Бертрана Мейера (MIT) и "Программирование. Принципы и практика использования С++" Бьярне Страуструпа (Texas A&M University). Каждая из этих книг обкатана на тысячах студентов в различных университетах и являются общепризнанной классикой. (Интересно, что в этих книгах используются разные методологии: SICP – ФП и Scheme, в книге Мейера – OO и Eiffel, а у Страуступа – в структурное + ОО программирование на языке С++.)

Для новичка в .NET

Выбор книги для новичка в C#/.NET зависит того, что понимается под понятием "новичок": это новичок в C#/.NET или новичок в программировании? Если у вас есть 3+ опыта в С++, Java или другом высокоуровневом языке программирования, то разумнее будет сразу перейти к списку книг для продвинутых .NET разработчиков.

В противном случае подойдет практически любая обзорная книга о C# и платформе .NET, при этом классическим примером такой книги является книга Эндрю Троелсена:

"Язык программирования C# 5.0 и платформа .NET 4.5", Эндрю Троелсен, 6-е издание, 2012

clip_image002

В отличии от всех других книг, приведенных в этом списке, лишь эта книга не предполагает практически никакого опыта со стороны читателя. Поэтому в книге рассказывается о циклах, объявлении переменных и основах ООП. Также это единственная "универсальная" книга в списке, которая покрывает самые разные технологии платформы .NET: ASP.NET, WPF, WWF, WCF, ADO.NET, а также основы языка C#, отражение, процессы/потоки/домены, многопоточность и ввод-вывод.

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru (ru)


 

Для продвинутого .NET разработчика

Еще раз напомню, что под "продвинутым" в данном случае имеется ввиду скорее ваш собственный уровень зрелости, а не " продвинутое" знание C#/.NET. Так, если вы хорошо знаете С++, то чтение Троелсена будет пустой тратой времени, поскольку вы будете стараться понять, как же C#/.NET устроен внутри, чего книга Троелсена просто не даст.

Так что если вы чувствуете в себе силы копнуть глубже, то лучше всего выбрать одну книгу из списка ниже. При этом выбор должен основываться на следующем критерии: если интересны внутренности платформы .NET/CLR + многопоточность, то это книга Джеффри Рихтера, если же больше интересен именно язык C# - то это книги Албахари или Барта де Смета (при этом у Албахари будет побольше описания базовой библиотеки классов). Если вы уже неплохо знаете C# и хочется ускоренного глубокого погружения, то нужно брать книгу Джона Скита или книги Билла Вагнера.

Книги, ориентированные на платформу .NET

“CLR via C#”, Джеффри Рихтер, 4-е издание, 2012

clip_image004

С момента выхода языка C# и платформы .NET прошло без малого десять лет и за это время появилось немало отличных книг и статей, но при этом одна книга была и будет настоящей классикой в этой области. Я не знаю ни одной другой книги, которая бы пользовалась такой бы популярностью все эти годы, которую бы столько цитировали и советовали другим. Основное преимущество этой книги заключается в фирменном стиле Рихтера, невероятной глубине изложения и отличной подаче материала. Эта книга посвящена именно платформе .Net, ее фундаментальным основам и основным компонентам; в ней практически нет ничего о конкретном языке программирования, за исключением тех мест, когда автор рассказывает о том, как поступает компилятор в тех или иных случаях. Эта книга уже давно заслужила свое место на полке каждого профессионального .Net разработчика и в дополнительных рекомендациях, в общем-то, не нуждается.

Дополнительные ссылки: рецензия, amazon.com, goodreads.com, ozon.ru (ru)

"Программирование на платформе .NET", Дон Бокс, Крис Селлз, 2002

clip_image006

Что вы скажете о книге, в которой для знакомства с платформой .NET советуют книгу Рихтера для ознакомления с темой, поскольку в противном случае, ее, родимую, читать будет сложновато? Так вот, именно Дон Бокс, гуру технологии COM (который правда и сам на нее уже не может смотреть) и Крис Селлз (тоже славный малый) осмелились на это в своей книге. И совет этот, действительно полезен, поскольку авторы иногда залазят в такие дебри, что без бУтыля – никуда. Многие темы, такие как взаимодействие управляемого и неуправляемого кода или механизм кросс-доменного взаимодействия описан просто невероятно подробно. Конечно, некоторые темы уже устарели (ведь книга вышла в далеком 2002 году), но большинство из них будут актуальны на протяжении всего времени жизни платформы .NET.

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru (ru)

Книги, ориентированные на язык C#

“C# 5.0 Unleashed” by Bart De Smet, 2nd Edition, 2012

clip_image008

Представьте себе, что Рихтер таки нашел в себе силы и добавил в последнее издание не сотню новых страниц о многопоточности, а полностью переработал книгу и добавил туда сотню страниц по DLR (Dynamic Language Runtime), сотню страниц по лямбда-выражениям и деревьям выражений, еще сотню страниц с советами по работе в Visual Studio, полторы сотни страниц по LINQ-у, да еще и о контрактах не забыл. Добавьте сюда отличные картинки, которые иллюстрируют ход мыслей автора и помогают понять тот или иной аспект рассматриваемой темы; сотню сносок, в которых автор рассказывает, почему были приняты те или иные решения разработчиками языка или платформы, не забудьте о лирических отступления на разные теоретические аспекты программирования - и вы получите одну из лучших книг о языке C# и платформе .Net, которая когда-либо выходила в свет! И, кстати, в отличие от того же Троелсена, в этой книге вы не встретите никаких WPF-ов, WCF-ов или других ASP.NET-ов, все 1650 (!) страниц книги посвящены «всего лишь» языку C# и фундаментальным основам платформы .Net. Сочетание широты охвата и глубины изложения делает эту книгу одним из лучших источников информации для всех, кто хочет заняться изучением языком C# или пополнить свои знания в одной из тем.

Дополнительные ссылки: мнение, amazon.com, goodreads.com

“C# 5.0 in a Nutshell” by Joseph Albahari, Ben Albahari, 5th Edition, 2012

clip_image010

Это еще один фундаментальный труд, объемом немногим более тысячи страниц, посвященный исключительно языку программирования C# и платформе .NET. И хотя у нас принято считать книгу Рихтера настоящей классикой, а ко всем остальным относиться с пренебрежением, книга братьев Албахари действительно заслуживает внимание. В этой книге рассматриваются практически все ключевые темы, касающиеся языка C# и платформы .NET, начиная от таких распространенных тем, как многопоточность, сборка мусора, сборки, домены, LINQ, заканчивая менее распространенными темами, как контракты, сериализация, потоковый ввод/вывод и регулярные выражения. И хотя глубина изложения иногда может не дотягивать до некоторых других представителей, в ней отлично соблюден баланс между сложностью изложения и практичностью, так что этой книги в большинстве случаев достаточно для глубокого понимания соответствующей темы.

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru (ru)

“C# in Depth” by Jon Skeet, 3d Edition, 2013

clip_image012

Если вы когда-либо осмелитесь задать вопрос на StackOverflow.com о том, чтобы почитать для повышения своих знаний о языке C#, то он будет закрыт примерно через 3,5 секунды, как дубликат одного из сотен (!) сообщений, при этом в большинстве из них в первом же ответе будут советовать книгу Джеффри Рихтера, если речь касается еще и CLR и платформы .NET, и книгу Джона Скита, если речь идет о языке C#. Конечно, немаловажную роль в этом играет статус Джона Скита на StackOverflow.com, но, тем не менее, правда в этом действительно есть. У Скита есть удивительная особенность рассказывать сложные вещи простыми словами; многие весьма непростые темы раскрыты очень подробно; автор рассказывает о том, как «думает компилятор» и, что немаловажно, о чем думали разработчики компилятора, принимая то или иное решение при реализации этой возможности.

Благодаря своей структуре, книга “C# In Depth” позволяет увидеть эту целостную картину языка C# и структурировать новые или существующие знания. На протяжении всей книги автор рассказывает об эволюции языка C#, рассматривая по ходу изложения проблемы, присущие предыдущим версиям и способы их решения в последующих версиях. При этом автор дает понять, каким путем идет развитие языка C#, прогнозируя его новые возможности и будущие изменения.

Дополнительные ссылки: рецензия, amazon.com, goodreads.com, ozon.ru (ru)

“Effective C# (Covers C# 4.0)”, “More Effective C#” by Bill Wagner, 2010, 2008

clip_image014

Тема эффективности использования стала настолько популярной, что подобная литература появляется по большинству языков программирования и многим технологиям. Язык программирования C# не является исключением. Представителем серии «эффективного программирования» на языке C# являются две книги Била Вагнера. Первая книга вышла еще в 2004-м году и посвящена C# 1.0; в ней рассматриваются самые разные вопросы, начиная от различий между классами и структурами, заканчивая важностью строгой гарантии исключений и проблемами взаимодействия управляемого и неуправляемого кода. Вторая книга вышла незадолго до официального выхода C# 3.0 и уже отражает всю специфику этой версии языка и платформы. В книге рассматриваются особенности работы с обобщениями (generics), многопоточностью (в том числе и при работе с пользовательским интерфейсом), новые возможности языка C# 3.0 и отдельно рассматриваются вопросы, связанные с LINQ. В марте 2010 года вышло второе, переработанное издание первой книги, в которой отражены изменения C# 4.0, включая такие новшества как PLINQ и тип Dynamic (которому посвящена целая глава).

Дополнительные ссылки для "Effective C#": рецензия, amazon.com, goodreads.com

Дополнительные ссылки для "More Effective C#": amazon.com, goodreads.com

Для эксперта

Несмотря на всю глубину глубин книг Рихтера, Барта Де Смета или Джона Скита, есть еще более специфические и более подробные источники по конкретным темам. Так, например, ни одна из книг выше не заменит аннотированную спецификацию языка C# Андерса Хейлсберга с прекрасными комментариями ведущих экспертов нашей области. Да и какими бы полными не были разделы о параллельном и асинхронном программировании в книгах Рихтера и Албахари, ничто не сможет сравниться с книгой Джо Даффи. А если вам потребуется копнуть действительно глубоко, то вам пригодятся знания по языку IL, и о том, как IL преобразуется в машинный код, и в этом случае будут полезны книги Сергея Лидина и Саши Голштейна соответственно.

“The C# Programming Language” by Anders Hejlsberg et al, 4th Edition, 2010

clip_image016

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

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru (ru)

“Concurrent Programming on Windows” by Joe Duffy, 2008

clip_image018

Самый подробный труд о многопоточном программировании под Windows. Здесь покрыты практически все темы: начиная от асинхронных моделей программирования в .NET (к сожалению не покрыта TAP – Task-based Asynchronous Programming) и асинхронным вводом-выводом, заканчивая моделями памяти и lock-free. Хотите сломать себе мозг об многопоточность? Книга Джо Даффи к вашим услугам!

В качестве дополнения к книге Джо Даффи можно посоветовать "Design Patterns for Decomposition and Coordination on Multicore Architectures", в которой покрыты TPL, PLINQ и другие темы, появившиеся уже после выхода книги Даффи.

Дополнительные ссылки: amazon.com, goodreads.com

“.NET 2.0 IL Assembler” by Serge Lidin, 2014

clip_image020

Сколько раз вам приходилось декомпилировать код, чтобы понять, как работает та или иная возможность компилятора C#? Или сколько раз вы смотрели на сгенерированный IL код, чтобы понять, что происходит внутри вашего любимого кода? Обе эти задачи возникают не слишком часто, да и Рефлектор со своей задачей отлично справляется в большинстве случаев. Но, тем не менее, знание языка ассемблера виртуальной машины никогда лишним не бывает, к тому же некоторые возможности CLR доступны только через него. Ну, а если когда-нибудь у вас появится желание или необходимость пополнить свои знания «управляемого» ассемблера, то неплохо иметь под рукой (или хотя бы знать о его существовании) отличное руководство, качество которого признано многими специалистами.

P.S. Сергей является автором языка IL;)

Дополнительные ссылки: amazon.com, goodreads.com

“Pro .NET Performance: Optimize Your C# Applications” by Sasha Goldshtein, 2012

clip_image022

Когда речь заходит о высокопроизводительных системах, то о C# и .NET Framework вспоминают в последнюю очередь. В этом есть разумное зерно, но что если вам все же нужно выжать все возможное из вашего "управляемого" приложения? В этом плане недостаточно спуститься с высокого уровня языка C# на уровень IL-кода, приходится копать глубже, на уровень машинного кода и внутренностей CLR. Именно для таких случаев нужна книга Саши Голшейна, известного блоггера и спикера.

"Pro .NET Performance" – это уникальная на данный момент книга с описанием внутреннего устройства типов, обобщений, с описанием тонкостей сборки мусора (например, с описанием Card Table) и другими экспертными техниками.

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru 

“Under the Hood of .NET Memory Management” by Chris Farrell, 2011

clip_image024

Небольшая (~200 страниц) книга о сборке мусора от компании Red Gate. Это отличная книга, в которой процесс сборки мусора показан несколько более детально, чем в любом другом источнике. Здесь довольно подробно описываются сегменты, card table, типичные проблемы перерасхода и утечек памяти, и даже кратко рассматривается модель памяти Windows.

Однозначно полезная книга, если решите узнать об управляемой памяти больше, чем описано у старины Рихтера.

Дополнительные ссылки: amazon.com, goodreads.com

 

Книги по проектированию

Ни одна из книг, представленных выше не даст нужных знаний об ООП, функциональном программировании, или о дизайне приложений. Если вам нужна книга по ООД, то нет ничего лучше книги Мейера "Объектно-ориентированное конструирование программных систем", о которой я говорю трижды в день десятку человек, но пока лишь двое решились за нее взятьсяJ.

Тем не менее, есть ряд книг о дизайне в контексте платформы .NET, на которые стоит обратить внимание. Во-первых, это знаменитая FDG – Framework Design Guidelines Квалины и Абрамса, которая должна быть настольной книгой любого .NET разработчика (и просто незаменима при разработке собственных coding conventions). Во-вторых, это замечательная книга Роя Ошерова "The Art of Unit Testing", в которой отлично описаны техники и приемы юнит-тестирования и их влияние на дизайн приложений. В-третьих, это уникальная в своем роде книга Марка Симана об управлении зависимостями в .NET, ну и книга Томаса Петрисека "Real-World Functional Programming", которая показывает связь ООП и ФП техник с примерами на C# и F#.

Ни одна из этих книг не заменит фундаментальных книг о дизайне, DDD или архитектуре приложений, но отлично подойдет в качестве дополнительного источника по этим темам.

“Framework Design Guidelines” by Krzysztof Cwalina, Brad Abrams, 2nd Edition, 2008

clip_image026

Разработка качественных систем является весьма сложной задачей, а разработка качественных библиотек (особенно фреймворков) является поистине вершиной мастерства архитекторов и разработчиков. Сложность здесь кроется в специфике принимаемых решений, ведь акцент серьезно смещается в сторону простоты и удобства использования, расширяемости и надежности. И хотя именно тема разработка библиотек является центральной, книга будет также невероятно полезна и простым разработчикам, ведь знание ключевых идиом языка является совершенно необходимым, когда команда смотрит хотя бы немного дальше своего носа, и заботится не только о написании кода, но и о его последующем сопровождении. Кроме того, книга очень часто выступает таким себе арбитром во многих спорах, касающихся идиом именования, обработке исключений, проектированию собственных классов или использованию других идиом языка C#; а поскольку такие дискуссии происходят с завидным постоянством, то подобный козырь лишним точно не будет.

Дополнительные ссылки: рецензия, amazon.com, goodreads.com, ozon.ru (ru)

“Dependency Injection in .NET” by Mark Seemann, 2011

clip_image028

Внедрение зависимостей (DI, Dependency Injection) – это уже чуть ли не де факто стандарт любого enterprise приложения. Но вот вопрос: помогает ли эта техника вместе с контейнерами создавать более простые в сопровождении и развитии системы? Не превратились ли контейнеры в очередной культ карго программирования? Поскольку любую технологию довольно легко использовать неправильно, то всегда полезно получить более фундаментальное представление о том, чем она является и чем она не является.

Книга Марка Сиимана является довольно уникальным сборником советов, паттернов и примеров использования техники внедрения зависимостей. Поэтому не зависимо от того, являетесь ли вы сторонником или противником DI и IoC эта книга будет вам полезной.

Дополнительные ссылки: рецензия, amazon.com, goodreads.com, ozon.ru (ru)

“The Art of Unit Testing with Examples in C#” by Roy Osherove, 2nd Edition, 2013

clip_image030

Паттерны не ограничиваются классическими паттернами, описанными в книге банды четырех. Паттерны повсюду: есть архитектурные паттерны, есть паттерны проектирования, есть DI-паттерны, есть DDD паттерны, есть паттерны рефакторинга, есть даже паттерны поведения. Точно также существуют паттерны разработки юнит-тестов. Есть типовые подходы к организации тестового кода для решения тех или иных задач. Лучшим источником по этой теме является фундаментальный труд "xUnit Test Patterns: Refactoring Test Code", а книга Роя является отличной книгой по этой же тематике в контексте платформы .NET.

Дополнительные ссылки: рецензия, amazon.com, goodreads.com, ozon.ru (rus)

“Real-World Functional Programming: With Examples in F# and C#” by Tomas Petricek and Jon Skeet, 2010

clip_image032

Что лучше ООП или ФП? Опыт последних лет (мой и многих других специалистов) показывает, что эти парадигмы не являются соперниками, а прекрасно дополняют друг друга. ООП рулит в области стратегии, а ФП незаменимо в вопросах тактики; ООП со своей абстракцией определяет крупные строительные блоки, а ФП со своей чистотой прекрасно справляется с вопросами реализации.

В этом плане книга Томаса Петрисека (с участием Джона "Stackoverflow" Скита) не слишком уникальна, но весьма полезна, поскольку дает представление о том, как думать в функциональном стиле и как это мышление влияет на дизайн и реализацию. Отличительной же особенностью этой книги являются примеры на языках C# и F#.

Дополнительные ссылки: amazon.com, goodreads.com

Книги по технологиям

Я не хочу детально описывать книги по конкретным технологиям, таким как WCF, WPF, ASP.NET (+MVC), Entity Framework и других. Причин здесь несколько: во-первых, очень сложно найти книгу, которая будет *значительно* выделяться среди конкурентов; во-вторых, цена ошибки при выборе неудачной книги в этом случае не столь велика. Наверняка книга с хорошим рейтингом даст вам все необходимые знания по конкретной технологии и вряд ли сможет существенно повлиять на ваши фундаментальные знания.

К тому же, книги по технологиям выходят настолько часто, что они устаревают буквально каждые полгода. Ниже представлен перечень книг по тройке технологий: WPF, WCF и ASP.NET MVC. Книги по другим технологиям готов обсудить в комментариях.

  • WPF: WPF 4.5 Unleashed by Adam Nathan (rus), 2013
  • WCF: Programming WCF Services by Juval Lowy (rus), 3d Edition, 2010
  • WCF: Inside Windows Communication Foundation by Justin Smith, 2007
    Книга хоть и старая, но будет полезна всем, кто решит заняться "расширением" WCF, путем написания собственных коммуникационных каналов и т.п. "продвинутыми" вещами.
  • ASP.NET MVC: Pro ASP.NET MVC 4 by Adam Freeman (rus), 2013

Заключение

Еще раз хочу напомнить, что не стоит переживать, если вдруг вы не увидите своей любимой книги в этом списке. Моя цель дать набор хороших источников, которые покрывают определенную нишу и потребуются разработчику на определенном этапе его карьеры; при этом вполне понятно, что есть аналогичные книги, которые ничем не хуже некоторых приведенных книг. Так, например, "C# 5.0 Essentials" вполне может заменить книгу Джо Албахари "C# 5.0 In a Nutshell", но читать их обе не имеет практически никакого смысла.

Если же вы знаете книгу, которая действительно достойна этого списка своей уникальностью, я с удовольствием ее сюда добавлю.

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

  1. Не правильные ты, дядя Серёжа, ссылки на книжки даёшь - сравни прайс озона http://www.ozon.ru/context/detail/id/6089823/ и альтернативного магазина, который я не так давно для себя открыл http://www.combook.ru/product/10189381/ ;о) И как не маловажное дополнение, например эта книга "там" в наличии, в отличии от озона (который, быть может, там же её и закажет :о)

    ОтветитьУдалить
    Ответы
    1. Обрадовался, побежал смотреть, чуть тапки не потерял :) Однако не все так радужно - http://www.combook.ru/product/10780473/ - 692р, http://www.ozon.ru/context/detail/id/26230428/ - 614р Причем мало того, что у ozon-а еще и доставка дешевле, так он еще в нашу деревню доставляет курьерской компанией, быстро и без предоплаты, а combook - с предоплатой и только почтой :(
      Не, сидим на озоне :)

      Удалить
    2. Спасибо, понял! Виноват – не учёл.

      Удалить
    3. Я даю ссылки скорее для того, чтобы показать наличие русскоязычного издания. А потом уже каждый сам сможет решить, в каком магазине ее лучше купить: на рутрекере, озоне или где-то еще:) хотя разница в цене для некоторых книг и правда удивляет.

      Удалить
    4. Да понятно :о) Но тогда можно дать ссылку в действительно максимально универсальное мерило – в маркет яндекса ;о)

      Удалить
    5. А вот это очень ОК идея!! Нужно будет воспользоваться.

      Удалить
  2. Очень здоровоская подборка!

    ОтветитьУдалить
  3. Подскажите, где нибудь в Москве можно купить книги в оригинале? Или только с амазона заказать?

    ОтветитьУдалить
    Ответы
    1. Я покупал на озоне, но цены сверх суровые. Есть опыт заказа с амазона, идут не быстро, но даже с учетом доставки получается дешевле.
      Ну и всегда остается вариант купить электронную версию. Быстро и дешево.

      Удалить
    2. Хочется оставлять заметки прямо в книге, а если электронную версию то я пока не нашел вменяемого ридера с удобными заметками, может у вас есть что посоветовать?

      Удалить
    3. Я пользуюсь goodreader-ом (под iOS). Сам давно не читаю без заметок, но в электронном виде их и писать удобнее, да и просматривать их потом проще.
      Например, все мои посты в Г+ с цитатами появляются именно таким путем: делаю заметку в книге причтении, потом пересматриваю их и публикую наиболее интересные.

      Удалить
    4. Спасибо за совет, отличное приложение, стоит своих денег!

      Удалить
  4. Спасибо за статью. Как раз закончил читать Ошерова и стал искать новую книгу для чтения.

    Пара опечаток:
    >решились за нее взятьсяJ.
    >баны четырех

    И еще вопрос автору (а может и не только): стоит ли начинать изучение веб-разработки с Pro ASP.NET MVC 4?
    C# знаю достаточно хорошо (мое мнение :-) ), ASP.NET изучал только обзорно (на уровне книги Троелсона), с html проблем нет (но можно обновить знания), JS - совсем ни как. Хотелось бы найти книгу, после прочтения которой сформировалась бы хорошая база для разработки веб-приложений на ASP.NET. В общем какие есть рекомендации по данной теме? :-)

    ОтветитьУдалить
    Ответы
    1. Pro ASP.NET ИМХО вполне подойдет, как и многие другие книги.
      Тут главное не искать идеальный учебник, а просто взять хороший и начать учиться;)
      За очепятки - спасибо, поправлю.

      Удалить
  5. Сергей, .net perfomance перевели - http://www.ozon.ru/context/detail/id/23816449/ можно добавить ссылку на ozon :)

    ОтветитьУдалить
  6. Книгу Эндрю Троелсен. Язык программирования C# 5.0 и платформа .NET 4.5 (6-е издание) я скачивал вот отсюда http://hitanyway.in.ua/category/develop/book-c/ . может еще кому то пригодится.

    ОтветитьУдалить
  7. Этот комментарий был удален автором.

    ОтветитьУдалить
  8. Владимир, спасибо, пригодилось!

    Сергей, спасибо за науку! Иногда удивляюсь, как люди находят время на прочтение множества книжек и блогерства, когда есть семья, дети, два-три раза в неделю спорт, то на остальное времени почти не хватает. А если еще и какие-то свои проекты...

    ОтветитьУдалить
    Ответы
    1. Со временем это просто не требует такого фундаментального количества времени.
      Обычно сложно начать, если же процесс более или менее поставлен, то усилий тратится меньше, а значит и поддерживать читательский интерес - тоже проще.

      Удалить
  9. Спасибо Сергей!

    Хочу спросить Вас, вот сейчас я прохожу как раз Абельсона и Сассмана по Вашей рекомендации. Эта книга у меня вторая (первая книга была по javaScript) и мне приходится прилагать большие усилия для решения каждой задачи. Пока я осилил лишь 20 самых первых. Одну задачу могу решать целый день. Неужели мне придется целый год одну эту книгу проходить? Или стоит параллельно читать две другие книги для новичков? Я просто не хотел бы брать везде по чуть-чуть, а в итоге не понять ничего. Надеюсь вопрос не глупый)

    ОтветитьУдалить
    Ответы
    1. По сути, книга Сассмана - это полноценный университетский курс, рассчитанный на два семестра. Если вы еще и работаете, то усилия спокойно могут распределиться на год.

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

      З.Ы. Вопрос - не глупый:) Риск взяться за слишком многое и не преуспеть ни с чем - проявляется на практике с завидным постоянством.

      Удалить
    2. Я сейчас учусь на 3 курсе, и пока не знаю где применять знания из этой книги. Надвигается лето и будет много свободного времени. Допустим я буду решать упражнения из sicp, где рекурсивные процедуры используются для решения математических задач, поэтому у меня выстраивается картинка калькулятора. Значит мне им и заниматься? Или есть книга, где есть более полезные упражнения?

      Удалить
  10. Спасибо! Хорошая подборка.
    От себя могу добавить только то, что для тех, кому больше нравится смотреть видео, есть классный портал http://itvdn.com/. Я начинал именно с них, а потом уже читал книги. Может быть, кому-то пригодится.

    ОтветитьУдалить
  11. Добрый день, у вас рецензия на Скита перенаправляет на рецензию Вагнера.

    ОтветитьУдалить
    Ответы
    1. И еще вот тут: "Если вам нужна книга по ООД"

      Удалить
  12. А что Вы можете сказать про книгу "Герберт Шилдт - C# 4.0. Полное руководство - 2011" ?

    ОтветитьУдалить
    Ответы
    1. С него начинал изучать c#, очень хорошая книга

      Удалить
  13. Сергей, как считаешь, книга Албахари C# 5.0 In a Nutshell и CLR via C# Рихтера, взаимозаменяемы?

    ОтветитьУдалить
    Ответы
    1. Если книги Албахари и Гриффитса нацелены на изучение темы "в ширину", то CLR via C# уходит "в глубину".

      Удалить
    2. Согласен с @Shnur: они не совсем взаимозаменяемы, поскольку Рихетр больше направлен на внутренности платформы, а Албахари покрывает большой объем материала, но не с такой глубиной.

      Удалить
  14. Уважаемый Сергей! С вашим списком литературы по языку C# я солидарен. Мне кажется, что можно было добавить ещё три книги, которые весьма удачные:
    1.Mark Michaelis, Eric Lippert Essential C# 6.0
    2.Eric Gunnerson, Nick Wienholt A Programmer’s Guide to C# 5.0
    3.Иэн Гриффитс Программирование на C# 5.0

    ОтветитьУдалить
    Ответы
    1. Владимир, я лично немного знаком с первой книгой, но не знаком с остальными. А чем они хороши, и в чем они выделяются из книг, которые уже есть в списке? (вопрос это довольно интересен, поскольку я, как потенциальный читатель, хотел бы понимать, как именно выбирать среди такого огромного списка книг).

      Удалить
    2. О, спасибо! Пропустил книжку Гуннерсона. Должно быть интересно.

      Удалить
    3. Добрый день, Владимир! Подскажите пожалуйста если эти книги есть в открытом доступе или их можно только приобрести, что достаточно хорошо бьёт по карману. Спасибо!

      Удалить
  15. Сергей! Прежде всего, хочу сказать, что рад знакомству с вашей книгой и блогом. Большая редкость встретить талантливого русско-язычного автора, умеющего умно, интересно, ясно и доходчиво излагать сведения, связанные с профессиональным программированием. Важно, что вы даёте своё понимание, свой взгляд, свою интерпретацию и пишете своим стилем. Ваша книга выделяется не только профессионализмом, но и тем, как она структурирована. Кто ясно мыслит, тот ясно излагает – это в полной мере относится к вам. Желаю вам продолжить писательское творчество - ведь программистам, живущим в России, естественно, лучше читать качественную специальную литературу именно на родном русском языке.
    Теперь о выборе книг. Человеку, приступившему к изучению языка C#, сделать правильный выбор наиболее подходящих и лучших книг из нескольких десятков уже имеющихся, - это не тривиальная задача. Важен выбор именно первой книги.
    Несколько лет назад, я начал изучать язык C# 4.0 и стал искать подходящую книгу. Прочитал множество книг, в том числе и на английском языке. Удивился тому, что нет книги, в которой на 350 стр. было бы ясное и полное изложение всего инструментария этого языка. При изучении нового языка программирования, хочется быстрее узнать все его возможности, а не брести через многословные описания примеров тысяче-страничных учебников. Мне был нужен удобный учебник (примерно 300-350 стр.) для первого чтения, но не просто для «чайников», а формирующий базовые знания программиста на C#.
    Для первой книги совершенно не подходит 1000 страничный «кирпич» Троелсена. Он напихал туда, как вы сами об этом уже говорили, массу всего, что связано с применением C# и плохо структурировал материал конкретно о языке C#. Непродуманные группировка и порядок изложения сведений о всех имеющихся средств этого языка – вот чем часто грешат авторы учебников. Книга “C# 5.0 Unleashed” by Bart De Smet великолепно написанная, энциклопедическая книга и гораздо лучше, чем у Троелсена, но там ведь 1500 стр. Это существенно затягивает процесс узнавания всех средств языка. В качестве первой книги тоже не годится, а вот второй книгой – обязательно должна быть!
    Книга, которая, по-моему, лучше подходит на роль первой – это Eric Gunnerson, Nick Wienholt A Programmer’s Guide to C# 5.0. Она не только хорошо структурирована и упорядочена, но там всего 400 стр. и ясный стиль изложения.
    Что касается меня, то в итоге, я сам для себя написал книгу и назвал её «C# 6.0 - Концентрированный учебник». В ней изложено фактически всё, что я усвоил из множества прочитанных книг по C# (книги из вашего списка я тоже читал). Конечно, в моём учебнике всё творчески переработано, со своими примерами, по-своему упорядоченно так, чтобы уместилось на 330 стр. но, ничего важного не было упущено.
    Посоветуйте, пожалуйста, возможно ли реализовать на этой основе проект создания бесплатного коллективного учебника по C#? Идея состоит в том, чтобы где-нибудь выложить свой текст и предоставить возможность всем желающим писать свои комментарии и свои добавления, как приложение к основному тексту, который будет продолжать составлять объём не более 350 стр. Все желающие смогут принять участие с целью совершенствования и развития этого учебника. Такой учебник будет оставаться совершенно бесплатным и доступным для всех, кто хочет освоить язык C#.

    ОтветитьУдалить
    Ответы
    1. Владимир, спасибо за столь развернутый комментарий (только недавно увидел, что он попал изначально в спам и из-за этого не был виден какое-то время).

      По поводу учебника: это отличная идея и для этих целей отлично подойдет gitbook. В качестве примера можно посмотреть на книгу Андрея Акиньшина: https://github.com/AndreyAkinshin/ProblemBook.NET

      Удалить
    2. Здравствуйте, Владимир! Я начинаю учить язык C# и такая книга, которую вы предлагаете, очень бы мне пригодилась. Как Ваши успехи с её написанием?

      Удалить
  16. Eric Gunnerson, Nick Wienholt A Programmer’s Guide to C# 5.0 - книга отличается тем, что замечательно подходит для первого чтения, изучающим язык C#. Хорошо структурирована, материал разумно упорядочен, стиль изложения отличный и всего 400 стр.
    После этой книги надо, конечно, прочитать всё остальное из вашего списка.

    ОтветитьУдалить
    Ответы
    1. Владимир, спасибо. Я добавлю описание этой книги в список.

      Удалить
    2. Книга Mark Michaelis, Eric Lippert Essential C# 5.0 фактически равноценна книге Bart De Smet C# 5.0 Unleashed. Они по-разному структурированы, отличаются стилем изложения и примерами, но оба учебника можно назвать классическими, так как в них подробно и достаточно глубоко рассмотрены все имеющиеся средства языка. Эти книги дополняют друг друга, ведь у каждого автора свой подход к теме, поэтому, после прочтения важного раздела языка C# в одной из них, полезно посмотреть, как это изложено во второй книге. Оба учебника значительно лучше ориентированы на процесс обучения языку C#, чем известная книга Троелсена.

      Удалить
    3. По-моему, книга Алекса Дэвиса «Асинхронное программирование в C# 5.0» также заслуживает включения в список рекомендуемых книг. Это лучшая книга по функциям async/await . Тема раскрыта отлично и всего на 100 стр.

      Удалить
  17. Сергей, может быть, уже должен появиться коллективный учебник языка C#, бесплатный и общедоступный? Фактически, все имеющиеся средства языка подробно описаны, детально объяснены и показаны на примерах различными авторами известных учебников на тысячах страниц. Однако эти сведения не сконцентрированы в одном небольшом учебнике на 350-400 стр., что затрудняет освоение материала в процессе самостоятельного обучения. Имеет смысл упорядочить необходимую информацию и представить её максимально ясно, компактно, без излишнего многословия, чтобы можно было освоить язык быстро, удобно и эффективно. Таким образом, все основные средства языка будут сгруппированы в хорошо продуманной последовательности по главам, и рассмотрены достаточно глубоко с простыми примерами их применения. В итоге, появится базовый учебник (максимум 400 страниц) с возможностью расширения основного текста дополнительными приложениями и комментариями специалистов.

    ОтветитьУдалить
    Ответы
    1. Владимир, здравствуйте!
      Вы могли бы поделиться ссылкой на файл "коллективного учебника языка C#"?
      Спасибо.

      Удалить
  18. Сергей, может быть, уже должен появиться коллективный учебник языка C#, бесплатный и общедоступный? Фактически, все имеющиеся средства языка подробно описаны, детально объяснены и показаны на примерах различными авторами известных учебников на тысячах страниц. Однако эти сведения не сконцентрированы в одном небольшом учебнике на 350-400 стр., что затрудняет освоение материала в процессе самостоятельного обучения. Имеет смысл упорядочить необходимую информацию и представить её максимально ясно, компактно, без излишнего многословия, чтобы можно было освоить язык быстро, удобно и эффективно. Таким образом, все основные средства языка будут сгруппированы в хорошо продуманной последовательности по главам, и рассмотрены достаточно глубоко с простыми примерами их применения. В итоге, появится базовый учебник (максимум 400 страниц) с возможностью расширения основного текста дополнительными приложениями и комментариями специалистов.

    ОтветитьУдалить
    Ответы
    1. Сори, этот комментарий тоже оказался почему-то в спаме:(. ответил в предыдущем комментарии.

      Удалить
  19. Подскажите пожалуйста, подойдет ли книга "CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C# 4-ое издание" для изучения C# и .Net Core

    ОтветитьУдалить
    Ответы
    1. Книгу Рихтера "CLR via C#" следует прочитать после того, как уже освоен один из указанных выше классических учебников C# 6.0. Рихтер нужен для углубления знаний необходимых профессиональному программисту на C#.

      Удалить
  20. Владимир, подскажите пожалуйста а сама книга актуальна ли для изучения .Net Core? Как я понимаю она покрывает только внутренности Microsoft.NET Framework 4.5. Спасибо!

    ОтветитьУдалить
    Ответы
    1. @Danil: книга Рихтера вышла за несколько лет до того, как была начата работа над .NET Core. Это я к тому, что было бы странно, если бы в книге Рихтера было хотя бы что-то о .NET Core. К томму же, мне не ясно, именно о .NET Core вам нужно? Учитывая, что там было внесено миллион изменений между RC1, RC2 и релизом.

      Удалить
    2. Я бы переформулировал вопрос человека выше так: как сильно в начинке/логике работы отличается .net 4.5 и .net core. Работают ли большинство утверждений Рихтера о платформе .net 4.5 для core. Как-то так наверное.
      Хотя в любом случае, стоит понимать, что это все-таки новая платформа. Вообще этот год довольно много нового принес в .net. Релиз asp.net core, .net core, к релизу готовится entity 7, а ведь в каждом не мало крупных изменений. Эх...

      Удалить
  21. Есть ли планы обновить подбоку книг? с учётом что Рихтер и некоторые другие уже понемногу устаревают в контексте кора, 6 и 7 шарпа.

    ОтветитьУдалить
    Ответы
    1. Да я, как-то, не вижу обилия книг, которые освещают сей кор и 6 и 7-й шарпы:).

      Удалить
    2. ну, справедливости ради, c# это не C++, где можно посмотреть на список изменений в стандарте и поматериться. В C# - изменение можно понять в списках "что нового"

      Удалить
  22. Я бы убрал Троелсена и поставил бы сразу Джона Шарпа, хоть от второго бомбил, когда переходил от практики к теории. По поводу - C# in Depth, ничего не могу сказать - так как изучал её для того, что бы закрыть пробелы в знание в синтаксиса(странное решение, а потом от неё перейти на троелсена ещё стране), ну я думаю, что если Троелсен стоит первым, то вместо Depth - должен быть CLR Да и вообще, Троелсона лучше читать так:
    Сначала прочитать с 1 по 10, потом написать несколько маленьких консольных приложений.
    Потом с 11 до 17 - идут главы, которые хорошо бы знать, ну можно жить и без них.
    17 - Главу читаем и переходим к 19
    С 19 до 21, дальше выбираем специализацию:
    Веб или приложение или игры(Unity, MonoGame)
    Первое это с 21 по 26 и с 32 до конца
    Второе это с 26 по 32
    Третье это - уже делаем. Если я не прав, то подправьте меня

    ОтветитьУдалить
  23. Этот комментарий был удален автором.

    ОтветитьУдалить
  24. Здравствуйте, спасибо за ваш труд по подбору книг и их описанию.
    Но я ищу вполне конкретную вещь. Мне нужно научиться делать пользовательские библиотеки (.Net CustomObject, .Net Assembly или как их ещё называют). В общем графические библиотеки (свои кнопки, datagrids и т. п.), то, что потом я могу вставить в другие приложения через dll. В какой книге можно прочитать этот процесс от начала до конца?

    ОтветитьУдалить
  25. Esposito D. Programming ASP.NET Core , Microsoft Press, 2018. — 416 p. — ISBN 1509304444.

    ОтветитьУдалить