خواندن این کتاب را مدتها پیش شروع کرده بودم اما تا حالا فرصتی نشده بود که نظرم را راجع به آن بگویم. این کتاب حجیم ۱۴۰۰ صفحهای همه چیز را راجع به C# 2008 به آدم یاد میدهد و میتواند به عنوان یک مرجع دائمی مورد استفاده قرار گیرد. مطالب این کتاب آنقدر جامع و کامل هستند که حتی در فصول مقدماتی و ساده آن هم میتواند چیزی را برای یادگیری پیدا کرد. این کتاب شامل ۳۳ فصل و ۲ ضمیمه میباشد.
فصل اول و دوم مقدماتی راجع به داتنت و C# میگویند که دانستن آنها مفید خواهد بود. خصوصاً فصل اول که ابزار پراستفاده ildasm.exe را معرفی میکند.
فصل ۳ و ۴ ساختارهای اصلی C# را توضیح میدهد که فکر میکنم هر کسی که کمی C# بلد باشد اینها را هم بلد باشد.
فصل ۵ و ۶ راجع به ساختار شی گرا در زبان C# میباشد. خواندن این فصل خصوصاً فصل ۶ به کسانی که میخواهند C# را به خوبی بفهمند توصیه میگردد.
فصل ۷ راجع به Exception Hadling است. خیلی برنامهها بدون یک Exception Handling خوب هم کار میکنند. اما یک Exception Handling خوب تاثیر زیادی در کیفیت برنامه دارد و باعث میشود خطایابی و نگهداری آن خیلی راحتتر باشد.
فصل ۸ راجع به چرخه زندگی Objectها در C# است. دانستن مطالب این فصل برای مواقعی که بعضی چیزها را در C# نمیفهمید خیلی مفید است. مع الوصف بنده به شخصه دانستن این اطلاعات را ضروری میدانم.
فصل ۹ و ۱۰ راجع به Interfaceها و Collectionها و Generic میباشد. ناگفته پیداست که دانستن اینها هم برای یک برنامهنویس حرفهای خصوصاً آنها که به طراحی هم علاقه دارند خیلی لازم است.
فصول ۱۱ الی ۱۳ راجع به امکاناتی از C# صحبت میکند که هم جز مباحث پیشرفته و به در بخور آن محسوب میشوند و هم مقدمهای بر LINQ هستند. یعنی استفاده موثر از LINQ بدون آنها امکان پذیر نیست. برخی مطالب این سه فصل عبارتند از Delegate، Event، Lambda، Indexer، Automatic Properties و Extension Methodها.
فصل ۱۴ اختصاص دارد به مقدمهای از LINQ. اگر این مقدار از LINQ کارتان را راه نینداخت که قریب به یقین همین طور است باید از منابع دیگری برای یادگیری تکمیلی LINQ استفاده کنید. بنده خودم به شخصه از کتاب LINQ in Action استفاده کردم.
فصول ۱۵ الی ۱۹ کلاً راجع به اسمبلیها یا همان dllها و مباحث مرتبط با آنهاست. راجع به ساختار داخلی آنها، کار با آنها از طریق Reflection، مسائل مرتبط با AppDomainها، برنامههای چند ریسمانی (Multi Thread) و CIL و Dynamic Assemblies. به نظر شخصی من مطالب این چند فصل آنقدر خاص هستند که ممکن است خیلیها هیچ وقت به آن نیاز پیدا نکنند. توصیه میکنم بعد از آن که فهمیدید هر کدام از این فصول راجع به چه موضوعی صحبت میکنند آنها را رها کرده و هر وقت که واقعاً به آنها نیاز داشتید به سراغشان بروید. بنده به شخصه فقط مبحث Reflection را مطالعه کردم و فکر هم میکنم حالا حالاها به غیر از مبحث چند ریسمانی به بقیه مطالب آن بینیاز باشم.
فصول ۲۰ الی ۲۶ راجع به Class Library داتنت میباشند. بیشتر افراد با بعضی مطالب این فصول از قبل آشنا هستند و خیلیها هم ممکن است هیچ نیاز پیدا نکنند و یا نخواهند که از بعضی از آنها استفاده کنند. مطالب این فصول به نظر من باید به صورت Reference مطالعه شوند. یعنی تا زمانی که واقعاً به آنها نیاز نشده نباید سراغشان رفت. مطالب این فصول عبارتند از IO، Object Serialization، ADO.NET، LINQ API، WCF و WF.
فصول ۲۷ الی ۳۳ کمی از خود C# فاصله گرفته و به برنامهنویسی UI در داتنت میپردازند. این فصول مطالبی را راجع به Windows Forms، WPF و ASP.NET بیان میکنند. به نظر شخصی من جای این طور مطالب در یک کتاب تخصصی C# نیست. یعنی اگر کسی بخواهد ASP.NET یاد بگیرد بهتر است به یک کتاب اختصاصی راجع به ASP.NET مراجعه کند نه یک کتاب C#. با توجه به این موضوع و با توجه به این که مطالب مطرح شده در این فصول خصوصاً در مورد ASP.NET کمی مقدماتی هستند، بنده هیچ کدام آنها را نخوانده و به کسی هم توصیه نمیکنم. خصوصاً این که خود من به دنبال درک بهتر C# به سراغ این کتاب آمدم نه به دنبال یادگیری مقدماتی ASP.NET.
ضمیمه اول ممکن است به درد کسانی که مجبورند در داتنت از اشیای قدیمی COM استفاده کنند بخورد. ضمیمه دوم هم راجع به مونو است که فکر میکنم حالا دیگر حسابی out of date شده باشد.
پ. ن.:
۱- ظاهراً این کتاب به فارسی هم ترجمه شده. نگاهی به اینجا بیندازید.
۲- بلد بودن بعضی مباحث که خودم آنها را غیر ضروری فرض کرده بودم برای قبولی در امتحان ۵۳۶ اجباری میباشد.
۳- اگر قرار باشد بار دیگر هم کتابی راجع به C# بخوانم احتمالاً این دفعه نگاهی به کتاب C# in Depth بیندازم. آن هم به خاطر ارادت خاصی که نسبت به Jon Skeet پیدا کردهام.