محمدرضا سخایی
محمدرضا سخایی
خواندن ۵ دقیقه·۲ سال پیش

کتابهایی که برای یادگیری برنامه نویسی به کار میاد (2)

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

ببین به بچه تو این سن چی دادن
ببین به بچه تو این سن چی دادن


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


کتابهای امروز به این ترتیب هستن :

Design Patterns : Elements of Reusable Object Oriented Software

از قدیم گفتن، کتاب هر چه بهتر، طرح جلدش زشت تر
از قدیم گفتن، کتاب هر چه بهتر، طرح جلدش زشت تر


یکی از مباحثی که اکثرمون توش ضعف داریم و همیشه برای خوندنشون دنبال یه فرصت میگردیم، همین بحث design pattern هاست. خیلیا میگن که به خاطر زیاد بودن منابع مرتبط با این موضوع و نقصهاشون، هیچ جای درست و حسابی برای مرور و یادگیری این بحث وجود نداره. (که منم با این موضوع موافقم، چون اصلا دیزاین پترن چیزیه که متأسفانه هیچ وقت جدی گرفته نمیشه و نهایتش برای مصاحبه و چارتا جای اینطوری مجبوریم بریم سروقتش)

خلاصه، یه سری نویسنده مهربون (Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides که به گنگ چارنفره معروفن!) تصمیم گرفتن این کتابو بنویسن و توش به معرفی و توضیح کامل 23تا دیزاین پترن مهم بپردازن (که چیزی هم دیگه از قلم نیفته).

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

کتاب اومده توی 5 تا بخش، پترنهارو دسته بندی کرده و هر بخش به معرفی کامل پترن، نحوه پیاده سازیش با مثال، تأثیرش روی برنامه و کاربردش حرف زده. این بخشها شامل این موارد میشن:

  • یک - معرفی (که کلا درمورد خود دیزاین پترن، کاربرد، هدف و نقشش توی توسعه نرم افزار صحبت کرده)
  • دو - Creational Patterns
  • سه - Structural Patterns
  • چار - Behavioral Patterns (که بیشتر پترنها توی این دسته قرار گرفتن)
  • و پنج - ضمیمه و لغت نامه (برای اینکه راحتتر بتونید به هر پترن دسترسی پیدا کنید میشه ازینجا سرچ کرد)

اما کتاب بعدی :

این یکی دیگه از همین جلد شروع کرده به درس دادن و نزاشته اصن لباسمونو عوض کنیم
این یکی دیگه از همین جلد شروع کرده به درس دادن و نزاشته اصن لباسمونو عوض کنیم


Introduction to Algorithms (Third Edition)

چه بسیارند انسانهایی که سالها به کدنویسی مشغول گشته و هنوز سرگشته راه حق مانده اند. راهی که از دل الگوریتمها میگذرد
- انجیر به روایت هلو

یه چیزی که مدتها بهش فکر میکردم و برام سوال بود اینه که اساساً تفاوت یه مهندس نرم افزار یا به برنامه نویس چیه؟ و چیزی که بهش رسیدم این بود : مهارت حل مسئله. که از دل چی میاد؟ الگوریتمها.

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

این کتابِ خوب و بسیار توصیه شده (که توسط Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein نوشته شده و درمیان خیل کتابهای مشابه برای همین موضوع طلاس) همون طور که اسمش داره داد میزنه، میخاد مارو با انواع الگوریتمها آشنا کنه.

کتاب اومده مباحثش رو توی هفت فصل دسته بندی کرده و این هفت تا فصل میشن :

  • یک - مبانی (که یه جورایی مقدمه س و درمورد نقش الگوریتمها و تأثیرشون توی سرعت محاسبات برنامه میگه)
  • دو - Sorting and Order Statistics
  • سه - Data Structures (صرفاً درمورد انواع ساختار داده ای میگه که توی الگوریتمها قراره نامبرده بشن)
  • چار - Advanced Design and Analysis Techniques
  • پنج - Advanced Data Structures (همون بحث ساختار داده ها که حالا کاملتر میشه مثل معرفی Van Emde Boas Trees)
  • شیش - Graph Algorithms
  • هفت - Selected Topics که به الگوریتمهای مرتبط با multi thread و تحلیلشون میپردازه

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

تا یادم نرفته، اینم بگم که سایت coursera هم یه دوره بسیار خوب و رایگان برای آشنایی با الگوریتمها داره که میتونید به عنوان مکمل این کتاب داشته باشید

Learn Enough Git to Be Dangerous

خلاقانه و مختصر و مفید (قابل توجه دو جلد قبلی)
خلاقانه و مختصر و مفید (قابل توجه دو جلد قبلی)


کتاب سوم که عاشق عنوانش هستم، (انقد گیت یاد بگیر تا توش خفن شی) درمورد gitه. این روزا کمتر پروژه ای رو میبینیم که git توش نباشه و یه جورایی برامون مثل نون شبه. هرجا میریم هست و همیشه موقعی که میخایم کارمونو تحویل بدیم باید از git کسب اجازه کنیم. (گیت هم که معرف حضور هست : یه ورژن کنترل که به برنامه نویسا اجازه میده به صورت دسته جمعی روی یه پروژه کار کنن و تغییرات همدیگرو متوجه بشن و توی کار هم گند نزنن و اگر هم گند بزنن بدونن به کی باید فحش بدن)

برای خودم، سالها طول کشید تا بالاخره راضی شم از git استفاده کنم و الان که بهش فکر میکنم، نبودنش یه جورایی برام غیرممکنه.

توی این کتاب از آقای Michael Hartl (که اخیراً فهمیدم به صورت کاملاً آنلاین هم میشه خوندش و براش سایت زدن) ، قراره با انواع دستورها و کدهایی که توی git نیاز داریم آشنا شیم و باز از لحاظ دسته بندی و نحوه توضیح بسیار معرکه س.


نرم افزارکدنویسیبرنامه نویسیکتابتجربه
اگه بار اولیه که تو زندگیت تِر زدی ناراحت نشو، اسمشو بزار ورژن 1.0
شاید از این پست‌ها خوشتان بیاید