‫معرفی کتاب «کلید موفقیت در رشته کامپیوتر را فشار دهید»

کتاب الکترونیکی «کلید موفقیت در رشته کامپیوتر را فشار دهید» نوشته حامد تکمیل یکی از آزادکاران (Freelancer) خوبی است که دورادور با اخلاقیات خوب حرفه‌ای او آشنا هستم. محتوای این کتاب از جنس آن چیزهایی است که هر دانشجو و تازه فارغ التحصیل کامپیوتری باید آن را مطالعه کنند به خصوص آنها که قرار است کم و بیش به صورت مستقل کار کنند. خوانند باید مطمئن باشد دانستن مطالب آن می‌تواند کمک بسیار خوبی به انتخاب مسیر شغلی مناسب و پیشرفت وی می‌نماید. در واقع این کتاب حاصل تجارب نویسنده آن است. تجاربی که اگر آن را از دیگران یاد نگیرید مجبور می‌شوید خودتان با هزینه بسیار گزاف‌تری به دست آورید. چه بسا بدون اطلاع از این تجارب در راه پیشرفت شغلی مایوس شده و خیلی زود مسیرتان را به جایی که نمی‌خواستید کج کنید.

عمده مطالب کتاب اختصاص دارد به معرفی و مقایسه رشته‌های مرتبط با کامپیوتر، آزادکاری، توصیه‌های مفید برای دانشجویان کامپیوتر و کارآفرینی. بنده مایلم این کتاب را «توصیه‌های برای موفقیت در آزادکاری و کارآفرینی برای دانشجویان و تازه فارغ التحصیلان کامپیوتر» بنامم. اگر قصد شما استخدام در ادارات دولتی یا حتی بخش‌های عمومی و تخصصی برنامه‌نویسی در شرکت‌های مختلف خصوصی تولید نرم‌افزار است، گمان نمی‌کنم این کتاب چندان برایتان مفید باشد.

کتاب به صورت الکترونیکی و رایگان و عدم استفاده از امکانات انتشاراتی‌های متداول منتشر شده است. ولی با این وجود صفحه بندی، تقسیم بندی مطالب و ویراستاری خوبی داشته و حاوی کمترین اشتباه املایی و نگارشی است.

با اجازه از نویسنده کتاب علاقمند هستم نکاتی را به مطالب کتاب اضافه یا مطالب موجود را باز تکرار کنم:

  1. حداقل در شهرهایی مثل تهران که فضاهای مسکونی بسیار فشرده و گرانقیمت هستند (اجاره آپارتمان شصت متری در مناطق متوسط تهران در تابستان ۹۲ حدود ۱۰ میلیون رهن و ۶۵۰ هزار تومان اجاره)، یکی از مصایب آزادکارها تهیه فضای مناسب جهت فعالیت است. آپارتمان‌های مسکونی کوچک تر از آن هستند که بتوانید در کنار همسر و فرزند یا والدین و خواهر و برادر خود با تمرکز کافی به انجام کار بپردازید. واحدهای مسکونی آنقدر در دل هم فرو رفته‌اند که انگار در حالی زندگی مشترک با همسایگان هستید. خیلی کم پیش می‌آید که سکوت کافی از ناحیه همسایگان و عابرین کوچه و خیابان فراهم شود. اجاره دفتر حتی به صورت اتاق‌های مشترک و محقر نیز چندان ارزان تمام نمی‌شود. ۳۰۰ الی ۵۰۰ تومان بابت اجاره یک اتاق ۹ متری از یک دفتر مشترک در مناطق متوسط شهر حداقل چیزی است که با آن روبرو هستید. بنابراین اگر در شهری مثل تهران آزاد کار هستید قید کار در منزل را بزنید و بابت اجاره دفتر مبلغ کافی در نظر بگیرید.
  2. خدمات بیمه و بازنشستگی خوشبختانه در مورد آزادکارها چندان هم بد نیست. در حال حاضر می‌توان بیمه تامین اجتماعی را از طریق بیمه خویش فرما با هزینه معقول دریافت کرد. بیمه های تکمیلی را هم می‌توان از بیمه های خصوصی یا نهادهایی مثل سازمان نظام صنفی تهیه نمود. در بدترین حالت می‌توان با تاسیس موسسات و شرکت‌های بسیار کوچک و شراکت با چند آزاد کار دیگر مسائل بیمه و بازنشستگی را تا اندازه‌ای برطرف نمود.
  3. به شخصه با بسیاری از حالات مطرح شده در متن کتاب به صورت مستقیم برخورد کرده‌ام و آنها را ناشی از تجربه واقعی می‌دانم. یکی از آنها امکانات سخت‌افزاری مناسب و تلف کردن بیهوده وقت در اینترنت است. اگر امکان تهیه کامیپوتر، اینترنت و منابع مناسب را ندارید کار بر شما سخت خواهد بود. و اگر توانایی مقابله با وسوسه هر دقیقه ای در اینترنت را ندارید باز هم همین طور!
  4. در بخش‌های مختلف کتاب تاکید زیادی به قدرت اینترنت و لزوم به کارگیری صحیح آن شده است. دلم می‌خواهد من هم به سهم خودم تاکید بیشتری روی این موضوع داشته باشم. اینترنت امکان ارتباطی فوق العاده عالی در دستان شماست که مهارت ها و توانایی‌های خود را به دیگران بشناسانید و افراد مشابه خود را پیدا کنید. اینترنت فقط اسپم و فیس بوک و فیلترینگ نیست. مزایای ارتباطی اینترنت اگر درست شناخته شود می‌تواند بسیار کارا باشد.
  5. بنده هم شخصاً از دست کم گرفتن کار آموزی و پروژه فارغ التحصیلی بسیار زیاد متضرر شده‌ام. بنابراین به خوانندگان این مطلب و این کتاب شدیداً توصیه می‌کنم مطابق راهنمایی‌های کتاب اهمیت بسیار زیادی به کارآموزی و پروژه فارغ التحصیلی بدهند. حین خواندن کتاب مدام «دفتر ارتباط با صنعت» دانشگاه به یادم می‌آمد. زمان تحصیل ما در نیمه پایانی دهه هفتاد هیچ اثری از آن در دانشکده کامپیوتر ندیده بودم. شاید اگر فعالیت این «دفتر» جدی‌تر می‌بود، فارغ التحصیلان موفق‌تری می‌داشتیم. کم نبودند فارغ التحصیلانی که تازه در محیط کار می‌فهمیدند که بازار کار از آنها چه انتظاراتی دارد. البته خوب به خاطر می‌آورم اساتید معظم و محترم آن زمان دانشگاه را که کار هم زمان با تحصیل را مناسب نمی‌دانستند و کلاً مخالفت سر سختانه ای با آن داشتند.
  6. یکی از مهارت‌های بسیار موثر در موفقیت افراد، توانایی نوشتن، ارتباطات نوشتاری و شبکه‌سازی (پیدا کردن و ارتباط با افرادی که می‌توانند در موفقیت شما سهیم باشند) است. این مهارت‌ها کم و بیش در بخش کارآفرینی کتاب پوشش داده شده‌اند. داشتن چنین مهارت‌هایی در هر مرحله ای که از کار و زندگی هستید توصیه می‌شود.
  7. اگر مجبور به ثبت شرکت شدید، سعی کنید درگیر شرکت سهامی خاص نشوید. بورکراسی مسئولیت محدود خیلی کمتر است. ضمناً شرکت‌های موفقی را می‌شناسم که مسئولیت محدود هستند. در آسانی ثبت شرکت‌های مسئولیت محدود همین بس که ثبت آن به صورت اینترنتی می‌باشد. یادتان باشد که هر وقت کارتان توسعه پیدا کرد امکان تغییر نوع شرکت یا انتقال دارایی‌های آن به شرکت نوع جدید وجود دارد. در متن کتاب اشاره ای به موسسات نشده است. ولی فکر می‌کنم ثبت موسسه هم یکی از راه های کم دردسر داشتن شخصیت حقوقی و راه اندازی شراکت باشد.

برای دریافت کتاب به مطلب مربوطه در وبلاگ سیلور کاور مراجعه فرمایید.

‫کتاب Pro ASP.NET MVC 3

3هر وقت که مجبور شوم یک چیز جدید یاد بگیرم یکی از اولین کارهایی که انجام می‌دهم پیدا کردن یک منبع یا کتاب خوب برای یاد گرفتن آن است. برای کار روی یک پروژه ASP.NET MVC باید مقداری اطلاعات MVC خودم را به روز می‌کردم و چند مثال عملی می‌دیدم. به همین خاطر از چند جا پرس و جو کردم و به کتاب Apress Pro ASP.NET MVC 3 Framework by Adam Freeman and Steven Sanderson رسیدم.

اولین نکته‌ای که با خواندن این کتاب به ذهن می‌رسد این است که نویسندگان فرض کرده‌اند خواننده هیچ اطلاعات قبلی راجع به MVC ندارد. به همین خاطر کلی راجع به MVC توضیح داده‌اند. علاوه بر این مقدار زیادی هم راجع به C#‎ و Visual Studio توضیحات مفصل داده‌اند. به همین خاطر این کتاب برای کسانی که می‌خواهند از ASP.NET WebForm به ASP.NET MVC سویچ کنند و ضمناً مدت‌ها با C#‎ برنامه‌نویسی کرده‌اند کمی نامناسب شده است.

در کل این کتاب مخصوص مبتدی‌ها نوشته شده است. برای کسانی که می‌خواهند برنامه‌نویسی و برنامه‌نویسی وب را تازه با ASP.NET MVC شروع کنند. خوانندگان حرفه‌ای‌تر کتاب باید بعضی فصول را جا بگذارند و خیلی فصول دیگر را هم سرسری ورق بزنند. در یک کلام نباید گول حجم ۸۴۰ صفحه‌ای آن را بخورند.

ترجمه کتاب اصول برنامه‌نویسی

کتاب «اصول برنامه‌نویسی» همان طور که از اسمش پیداست، کتابی است راجع به اصول برنامه‌نویسی (مهندسی نرم‌افزار)، اما بر خلاف دیگر کتاب‌ها بیشتر یک کتاب عملی است تا یک کتاب تئوری. حدود چهار ماه پیش ترجمه این کتاب به صورت یک کار گروهی داوطلبانه شروع شد.قرار بود ترجمه‌ها ۴ هفته‌ای تمام شوند که البته تمام شد. ولی مدت زمان زیادی صرف ویراستاری و تا اندازه‌ای هم صفحه‌بندی کتاب شد که آن هم خیلی غیر طبیعی نبود. به هر صورت ترجمه، ویراستاری و صفحه‌بندی کتاب هم اکنون به پایان رسیده و به صورت یک کتاب الکترونیکی منتشر شده و از این آدرس قابل دریافت است. فهرست دوستانی که در این کار همکاری داشته‌اند به شرح ذیل است:

ایلیا وکیلی: ویراستار
معمار نرم‌افزار
reticent at@sign gmail.com

محمد صاحب: مقدمه
برنامه‌نویس
dotnetdev.info

افشار محبی: فصل یک و دو
طراح و برنامه‌نویس دات‌نت
afsharm.com

علیرضا ارومند: فصل سه
برنامه‌نویس دات‌نت
oroumand.com

فاطمه علیمردانی: فصل چهار
برنامه‌نویس
alimardani.kh at@sign gmail.com

صابر سلیمانی: فصل پنج و صفحه‌بندی
توسعه‌دهنده نرم‌افزار
abugslife.ir

امیر حسین رهنما: فصل شش
برنامه نویس دات نت و اندروید
amirrahnama at@sign gmail.com

ابراهیم بیاگوی: فصل هفت
آزاد کار
ebrahim at@sign byagowi.com

نادر مینایی: فصل هشت
برنامه‌نویس دات‌نت
nader.mineh at@sign gmail.com

مهدی پرهیزی: فصل نه
برنامه‌نویس و توسعه‌دهنده، نویسنده برنامه “با ما به‌روز باشید” شبکه ۳
parhizi.ir

مصطفی ستاری: موخره
برنامه نویس
hacking4fun.com

از تک تک دوستانی که در این کار شراکت داشتند صمیمانه تشکر می‌کنم به خصوص ایلیا وکیلی که زحمات زیادی را در رابطه با ویراستاری متحمل شدند.

لینک‌های مرتبط:

کمک به ترجمه کتاب اصول برنامه‌نویسی

می‌خواهم یک کتاب الکترونیکی ۷۹ صفحه‌ای به نام «اصول برنامه‌نویسی» را به فارسی ترجمه کنم. هر چند اعتقاد دارم که یک برنامه‌نویس خوب باید بتواند از منابع اصلی استفاده کند. اما حدس می‌زنم ترجمه فارسی یک منبع خوب بتواند افراد بیشتری را به خواندن منبع ترغیب کند. حجم کتاب خیلی کم است اما از طرفی مشغله‌های من کم نیستند و از طرفی دیگر هم دوست دارم به این بهانه هم که شده چند دوست جدید پیدا کنم. بنابراین از هر کسی که وقتش را دارد و به موضوع کتاب علاقه‌مند است دعوت می‌کنم ترجمه یک یا دو فصل حدوداً ۸ صفحه‌ای کتاب را به عهده گرفته و به اینجانب کمک نماید.

برای کسب اطلاعات بیشتر راجع به کتاب به این نوشته مراجعه کنید. خود کتاب با اجازه نامه Creative Commons منتشر شده است. پس بنابراین ترجمه و انتشار مجدد آن مشکلی نخواهد داشت. بدیهی است که ترجمه کتاب نیز تحت همین مجوز منتشر خواهد شد. فصل اول و دوم کتاب ترجمه شده است. به خاطر آن که کار نظم و ترتیب داشته باشد به ترجمه‌هایی که بعد از چهارشنبه ۱۶ شهریور ( ۴ هفته بعد) به دستم برسد ترتیب اثر داده نخواهد شد. برای پرهیز از دوباره کاری از قبل هماهنگ شود. علاقه‌مندان به من (afshar dot mohebbi atsign gmail dat kam) ایمیل بزنند.

به روز رسانی:
کار ترجمه با همکاری تعدادی از دوستان شروع شده است. برای کسب اطلاعات بیشتر راجع به روند کار به پروژه Foundation of Programming in Persian در کدپلکس مراجعه کنید. 

‫کتاب اصول برنامه‌نویسی (Foundation of Programming)

کتاب «اصول برنامه‌نویسی» که یک کتاب الکترونیکی ۷۹ صفحه‌ای است، توسط یکی از فعالان CodeBetter منتشر شده. کلیت مطالب کتاب راجع به مفاهیم نسبتاً جدید تولید نرم‌افزار مثل Persistence، DI، DDD، Unit Test و غیره است. نویسنده در ابتدای کتاب اظهار داشته که این کتاب برای پشتیبانی از حرکت ALT.NET نوشته شده است. این کتاب همچون خود ALT.NET بیشتر روی مفاهیم و تکنیک‌ها مانور می‌دهد چون معتقد است برنامه‌نویسان به اندازه کافی به API دات‌نت مسلط شده‌اند پس حالا وقت آن است که اصولی‌تر برنامه بنویسند.

با دیدن بخش‌های اول کتاب ممکن است فکر کنید یک کتاب کلاسیک «مهندسی نرم‌افزار» را باز کرده‌اید. اما کتاب کار زیادی به تئوری ندارد و بلافاصله به مثال‌ها، نمونه‌ها و ابزارهای عملی می‌پردازد. البته واقعیت این است که می‌شود این کتاب را یک کتاب «مهندسی نرم‌افزار» عملی نامید. چون با معرفی تکنیک‌ها، روش‌ها و ابزارهایی به شما کمک می‌کند تا همان اصول فراموش شده «مهندسی نرم‌افزار» را عملاً به کار گیرید.

عناوین فصول کتاب:
۱- ALT.NET: معرفی جبهه ALT.NET و تفاوت آن با MSDN Way
‫‫۲-‫ Domain Driven Design: معرفی الگوی DDD‎
‫۳- ‫Persistence: ارتباط با دیتابیس و ذخیره داده‌ها‎
‫‫۴-‫ Dependency Injection: معرفی و ابزارها‏
۵- Unit Testing: تست واحد
۶- Object Relational Mappers: معرفی و استفاده از NHibernate
۷- کار با Memory به طور اصولی
۸- مدیریت Exceptionها
۹- Proxy و استفاده از آن
۱۰- جمع‌بندی

تاریخ این کتاب ۲۰۰۸ بوده و کمی قدیمی می‌باشد. اما با این وجود خواندن و به کارگیری آن به همه برنامه‌نویسان توصیه می‌شود.

‫کتاب Programming WCF Services

این روزها WCF رواج زیادی در شرکت‌های ایرانی پیدا کرده است. برای من هم یکی دو موقعیت پیش آمده که مجبور شوم با WCF کار کنم. به اولین منبعی که برای یادگیری مراجعه کردم فصل ۲۵ کتاب Pro C# 2010 بود. این فصل خلاصه و مقدمه‌ای از WCF است و به هیچ وجه قصد وارد شدن به جزییات را ندارد. خواندن این فصل توانست دستم را به طور کامل در WCF راه بیندازد اما خودم فکر می‌کردم برای یادگیری بهتر WCF بهتر است یک کتاب اختصاصی راجع به WCF بخوانم. به همین خاطر کتاب Programming WCF Services را انتخاب کردم.

سه فصل اول این کتاب اختصاص دارد به مقدمات WCF یعنی همان‌هایی که در فصل ۲۵ کتاب قبلی پوشش داده شده بود. بنابراین آنها را بی‌خیال شدم و مستقیماً از فصل ۴ که راجع به Instance Management بود شروع کردم. این فصل و تا اندازه‌ای هم فصل بعدی چیزهای جالبی برای یاد گرفتن داشت. اما از فصل ۶ تا آخر کتاب را هر چقدر که بیشتر نگاه کردم متوجه شدم که هیچ کدامشان برای نیاز فعلی من ضروری نیستند و بعداً هم می‌توانم در صورت ضرورت به آنها مراجعه کنم. این فصول راجع به کنترل خطا، تراکنش، مدیریت همزمانی، صف، امنیت و سرویس‌های خاص Windows Azure صحبت می‌کنند.

‫کتاب LINQ in Action

یکی از عادت‌های من در این وبلاگ نوشتن درباره‌ی کتاب‌هایی است که خوانده‌ام. یکی از کتاب‌هایی که مدت‌ها پیش خواندن آن را شروع کردم کتاب LINQ in Action است. این کتاب را برای تکمیل اطلاعاتم راجع به LINQ شروع کردم چون حس می‌کردم چیزهایی که راجع به LINQ از کتاب Pro C# 2008 and the .NET 3.5 Platform یاد گرفته بودم کافی نیست.

با توجه به این که هدف من از یادگیری LINQ صرفاً استفاده از LINQ-to-NHibernate بود، در نتیجه فقط ۵ فصل اول کتاب که راجع به مقدمات LINQ و Linq-to-Objects را مطالعه و بقیه فصول (۸ فصل) که راجع به LINQ-to-XML و LINQ-to-SQL بودند را بی‌خیال شدم. البته این کتاب کمی قدیمی است و در سال ۲۰۰۸ منتشر شده یعنی زمانی که LINQ-to-EF وجود نداشته است.

چیزی که من از خواندن همان ۵ فصل متوجه شدم این بود که یادگیری کامل LINQ بیشتر در کار عملی امکان پذیر است تا مطالعه صرف. از طرفی مطالب مربوط به LINQ به زعم من خیلی فرار هستند و اگر در در عمل و به طور مداوم استفاده نشوند خیلی زود فراموش می‌گردند.

نمی‌دانم از ۲۰۰۸ تا حالا کتاب بهتری برای LINQ منتشر شده یا نه ولی به هر صورت خواندن این کتاب را توصیه می‌کنم به کسانی که می‌خواهد LINQ به طور علمی و کاملاً دقیق بیاموزند.

پ.ن.: در این لینک هم چند کتاب دیگر برای LINQ معرفی شده.

‫کتاب‌های NHibernate

یکی از بزرگترین مشکلات موجود بر سر راه هر فناوری یا ابزاری کمبود منابع یادگیری علی‌الخصوص کتاب در مورد آن است. خوشبختانه این محدودیت‌ها رفته رفته در مورد NHibernate رفع گردیده و علاوه بر وبلاگ‌ها و انجمن‌های پرسش و پاسخ، چند کتاب و منبع مفید هم در مورد آن منتشر شده. در ادامه مروری داریم بر آنها:

NHibernate 3.0 Cookbook

اگر با مفهوم Cookbook به طور کلی آشنایی داشته باشید به خوبی متوجه نوع مطالب این کتاب خواهید شد. Cookbook معمولاً به کتاب‌های راهنمای آشپزی گفته می‌شود که در هر یکی دو صفحه آن دستور پخت یک نوع غذا نوشته شده است. در این طور کتاب‌ها معمولاً خیلی کم از مباحث تئوریک و آکادمیک سخن به میان می‌آید. علاوه بر این پیوستگی مطالب در این طور کتاب‌ها خیلی کم است. مثلاً شما می‌تواند بدون خواندن ۱۰۰ صفحه اول کتاب مستقیماً به سراغ دستور غذای توضیح داده شده در صفحه ۱۰۱ رفته و آن را اجرا کنید.
این کتاب ۳۲۸ صفحه‌ای هم دقیقاً همین روش را در مورد NHibernate دنبال می‌کند. یعنی در هر یک از ۷۰ دستورالعمل آن یکی از امکانات، تنظیمات یا شرایط NHibernate به طور کاملاً عملی توضیح داده شده است. مزیت این کتاب در این است که شما می‌توانید مستقیماً به آن بخشی که نیاز دارید مراجعه کرده و مجبور نباشید مقدمات آن را بلد باشید. درست مثل این که به یک Community مرتبط مراجعه کرده و یا از یک همکار واردتر از خودتان بپرسید. جالب است بدانید نویسندگان این کتاب از فعالان پروژه NHibernate و Communityهای مربوطه هستند.

NHibernate In Action


این کتاب بر اساس کتاب مشابهی برای Hibernate (جاوا) نوشته شده و در دنیای Hibernate/NHibernate مرجع استاندارد یادگیری Hibernate/NHibernate می‌باشد. کتاب پشتوانه تئوریک خیلی خوبی دارد و سعی کرده همه مباحث را از مقدماتی تا کامل پوشش دهد. این کتاب شبیه کتاب‌های درسی است یعنی ترتیب مطالب آن باید تا اندازه‌ای حفظ شود. چون بیشتر مطالب وابسته هستند به مطالبی که در فصول قبل توضیح داده شده‌اند. در نتیجه این کتاب برای کسانی مناسب است که وقت مناسبی داشته و می‌خواهند NHibernate را از سیر تا پیاز یاد بگیرند. به عبارت دیگر اگر شما در به کارگیری NHibernate کمی عجله داشته و یا صرفاً با مباحث خاصی از آن کار دارید بهتر به سراغ کتاب NHibernate 3.0 Cookbook بروید.
این کتاب کاملاً بر خود NHibernate متمرکز است و خبری از امکانات جانبی NHibernate در آن نیست. حتی از LINQ-to-NHibernate هم چیزی در این کتاب گفته نشده. نکته آخر در مورد این کتاب این که ویرایش جاری آن در حال حاضر یعنی بهمن ۱۳۸۹ بر اساس NHibernate 2.1 است. هر چند که مفاهیم توضیح داده شده در این کتاب در NHibernate 3.0 هم قابل استفاده است، اما اگر این موضوع اذیت‌تان می‌کند می‌توانید کمی صبر کنید. زیر احتمالاً به زودی ویرایش جدیدی از این کتاب بر اساس NHibernate 3.0 منتشر خواهد شد.

NHibernate Reference Documentation & API Version: 3.0.0


هر چند که این منبع یک کتاب غیر رسمی است و منتشر نشده است، اما این منبع، مرجع اصلی و رسمی در مورد NHibernate است. این کتاب همچون دیگر کتاب‌های مرجع تمام جزییات و امکانات NHibernate را از سیر تا پیاز ردیف کرده است. یادگیری و حتی استفاده‌های متوسط از این کتاب کمی سخت است. در نتیجه این کتاب بیشتر مناسب وقتی است که می‌خواهید تمام جزییات و شرایط یک امکان خاص را پیدا کرده و مورد استفاده قرار دهید.

NHibernate 2 Beginner’s Guide


یک کتاب مقدماتی در مورد کار با NHibernate که ظاهراً نمونه کدهای آن VB.NET می‌باشد. این کتاب از سطح بسیار پایینی شروع کرده و می‌تواند برای برنامه‌نویسان بسیار تازه کار واقعاً مفید و آموزنده باشد. البته اگر آشنایی مختصری با NHibernate یا حتی دیگر ORMها دارید توصیه می‌شود از این کتاب استفاده نکنید چون چیز زیادی در آن پیدا نخواهید کرد.

NHibernate with ASP.NET ProblemDesignSolution (Wrox Blox)‎


این کتاب الکترونیکی حدوداً ۱۲۰ صفحه‌ای بسیار ساده نوشته شده و مقدمات استفاده از NHibernate را در یک برنامه ASP.NET بیان می‌کند. در این کتاب فقط چند بحث اولیه‌ی NHibernate استفاده شده است. این کتاب مناسب برنامه‌نویسان ASP.NETی است که می‌خواهند برای اولین بار از NHibernate در برنامه‌شان استفاده کرده ولی نمی‌خواهد درگیر جزییات آن شوند.

نکته:
آخرین نسخه NHibernate در حال حاضر یعنی بهمن ۱۳۸۹ نسخه ۳ می‌باشد. هر چند که بعضی بخش‌های NHibernate از نسخه 2.1 به 3.0 تغییر چندانی نداشته‌اند اما حواستان به نسخه ذکر شده در هر کدام از کتاب‌ها باشد.

‫معرفی کتاب Pro C# 2008 and the .NET 3.5 Platform

خواندن این کتاب را مدت‌ها پیش شروع کرده بودم اما تا حالا فرصتی نشده بود که نظرم را راجع به آن بگویم. این کتاب حجیم ۱۴۰۰ صفحه‌ای همه چیز را راجع به 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 پیدا کرده‌ام.

خواندن کتاب‌های کامپیوتری

من به عنوان یک برنامه‌نویس بیشتر وقت‌ها حس می‌کنم اطلاعاتم راجع به یک موضوع خاص کافی نیست. به همین دلیل سعی می‌کنم این فقدان دانش را با خواندن یکی دو تا کتاب در آن زمینه جبران کنم. با فرض این که چند کتاب مناسب برای آن موضوع پیدا کرده‌ام، باز هم دو مشکل وجود دارد اول آن که تقریباً هیچ وقت زمان کافی برای خواندن یک کتاب وجود ندارد و دوم آن که مسلماً خواندن همه‌ی بخش‌های یک کتاب ضروری نیست. بنابراین همیشه باید به دنبال راهی باشم که یک کتاب را به صورت موثرتر و در زمان کمتری مطالعه کرده و به چیزی که لازم دارم برسم. پیدا کردن یک فرمول کلی برای درک این نکته که آیا خواندن فلان کتاب مفید است یا نه، یا این که چطور یک کتاب را بخوانم یا کدام بخش‌ها را نخوانم که استفاده مفیدتری از وقتم کرده باشم کار خیلی سختی است. ولی با این وجود تا اینجای کار به این نتیجه رسیده‌ام که می‌توان کتاب‌های کامپیوتری/برنامه‌نویسی را به چند دسته کلی تقسیم کرده و برای هر دسته روش خاصی را به کار برد. دسته‌بندی من شامل ۴ دسته است.

دسته اول: ابزارها
شامل کتاب‌هایی که برای آشنایی و یادگیری ابزار خاصی نوشته شده‌اند. مثل:

دسته دوم: فناوری‌ها
شامل کتاب‌هایی که استفاده از فناوری خاصی را آموزش می‌دهند. مثل:

دسته سوم: زبان/مفهوم
کتاب‌هایی که زبان‌های برنامه‌نویسی را آموزش می‌دهند، راجع به یک استاندارد صحبت می‌کنند یا مباحث آکادمیک مثل طراحی الگوریتم، لایه‌های شبکه، سیستم عامل و… را مورد بحث قرار می‌دهند. مثل:

دسته چهارم: برنامه‌نویسی
کتاب‌هایی که راجع به خود برنامه‌نویسی هستند. این طور کتاب‌ها فرض می‌کنند شما آشنایی لازم با ابزارها، فناوری‌ها و زبان‌های مربوطه را دارید. آنها بدون توجه به Platform خاصی راجع به خود برنامه‌نویسی و تکنیک‌های مورد نیاز در برنامه‌نویسی و توسعه‌ی نرم‌افزار حرف می‌زنند. مثل:

کتاب‌های دسته اول (ابزارها) معمولاً جز کتاب‌هایی هستند که می‌شود بخش زیادی از آنها را بی‌خیال شد. آدم معمولاً بخش زیادی از مطالب این کتاب‌ها را از قبل بلد است و بخش دیگری را نیز صرفاً با کار کردن با آنها یا جستجو در اینترنت یاد می‌گیرد. البته مطالعه‌ی فهرست مطالب آن و به خاطر سپردن آنها کار خیلی بدی نیست. چون ممکن است در آینده به آنها نیاز شود.

کتاب‌های دسته دوم (فناوری‌ها) نسبت به کتاب‌های دسته‌ی قبل نیاز به مطالعه و دقت بیشتری دارند. اگر چه همیشه لازم نیست آدم همه‌ی سوراخ سنبه‌های یک فناوری را بلد باشد اما اقلاً باید بداند آن فناوری چه طور امکاناتی دارد و اقلاً به طور سر سری هم که شده یک بار مطالبی راجع را به آن خوانده باشد. کتاب‌های این دسته و دسته قبل همیشه نیاز به کمی تمرین دارند.

کتاب‌های دسته سوم (زبان‌ها/مفاهیم) کتاب‌هایی هستند که به نظر من بیشتر وقت‌ها لازم است یک دور کامل آنها را خواند. چون همیشه به یک دید کلی راجع به آن زبان/مفهوم نیاز هست. متاسفانه بیشتر کتاب‌های این دسته خیلی هم حجیم هستند و باید تک تک پاراگراف‌های آن را با تمرکز مطالعه کرد. شاید به همین خاطر است که آدم تا در دانشگاه است و وقت دارد باید مفاهیم و کتاب‌های اصلی را مطالعه کرده و کاملاً فهمیده باشد.

کتاب‌های دسته چهارم (برنامه‌نویسی) از جمله آن چیزهایی هستند که در ایران چه در محیط‌های دانشگاهی و چه در بازار کار و شرکت‌ها خیلی کم به آنها توجه می‌شود. این کتاب‌ها معمولاً حاصل تجربه چندین ساله نویسندگان آنها هستند. نویسندگانی که خود این تجربه را از کار عملی و برنامه‌نویسی در پروژه‌ها و شرکت‌های نرم‌افزاری مختلف به دست آورده‌اند. هر چند که خود من هم تا حالا خیلی از کتاب‌های این دسته استفاده نکرده‌ام اما به نظر می‌رسد ارزش چند بار خواندن و نگهداری در قفسه کتاب‌ها را داشته باشند.