چه کتابهایی را مطالعه کنیم تا از یک کد زن به یک برنامه نویس حرفهای تبدیل شویم؟ در این مقاله به این موضوع خواهیم پرداخت و هفت کتاب معرفی خواهیم کرد. تفاوت کد زدن با برنامه نویسیبرنامه نویسی کامپیوتر چیست و چطور می توانید یک برنامه نویس موفق شوید؟در عصر فعلی برنامهنویسی یکی از پرطرفدارترین شغلهای دنیاست، دغدغهای افرادی که میخواهند در مسیر برنامهنویس شدن قدم بردارند این است که نمیدانند از کجا باید شروع کنند، در این صفحه هر آن چه برای تبدیل شدن به یک برنامه نویس حرفه ای نیاز دارید در اختیارتان قرار گرفته است در این است که کدنویسیکدنویسی چیست؟ – کد نویسی یعنی چهاین مقاله عالی به بررسی این پرداخته که کد نویسی چیست و مفهوم کد نویسی را بررسی کرده، همچنین تفاوت کدنویسی و برنامه نویسی و کاربرد های کدنویسی را بررسی کرده بخشی از برنامه نویسی است که شامل تبدیل الگوریتمالگوریتم چیست به زبان ساده و با مثال های فراواندر این مقاله به زبان بسیار ساده و با مثال های متعدد توضیح داده شده که الگوریتم چیست و چه کاربردهایی دارد یا منطق برنامه به کد کامپیوتری است و برنامه نویسی حوزه وسیعتری را شامل میشود؛ بنابراین برای اینکه برنامه نویسی حرفهای و متفاوت شوید نیاز است که مهارتهایی مضاف بر کد زدن یا بلد بودن یک زبان برنامه نویسیزبان های برنامه نویسی چیست؟این مقاله عالی توضیح داده که زبان های برنامه نویسی چیست؟ و انواع زبان های برنامه نویسی و بهترین زبان برنامه نویسی برای شروع و پردرآمدترین آنها را معرفی کرده داشته باشید.
Introduction To Algorithms
مؤلفان: Thomas H. Cormen ،Charles E. Leiserson ،Ronald L. Rivest ،Clifford Stein
کتاب مقدمهای بر الگوریتمها یکی از مهمترین کتابهایی است که در زمینه علوم کامپیوترعلوم کامپیوتر یا کامپیوتر ساینس چیستدر این صفحه به بررسی و موشکافی رشته علوم کامپیوتر اعم از بررسی بازار کار، گرایشها، دروس و چارت درسی این رشته، میزان درآمد و حقوق فارغ التحصیلان این رشته و ادامه تحصیل در این رشته پرداخته شده است. (Computer Science) وجود دارد و در دانشگاههای ایران و جهان، بهخصوص در درسهای ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است و طراحی الگوریتمآموزش طراحی الگوریتم به زبان سادهدرس طراحی الگوریتم یکی از مهمترین و بنیادیترین دروس رشته کامپیوتر است. هدف از این درس، معرفی روشهای مختلف طراحی الگوریتمها برای حل مسائل گوناگون است، در این صفحه به معرفی و آموزش طراحی الگوریتم پرداخته شده است.، تدریس میشود. الگوریتمهای این کتاب به زبان انگلیسی است و کاملا توضیح داده شدهاند و به شکل شبه کد (Pseudocode) آورده شده است که برای هر کسی که حتی برنامه نویسی کمی انجام داده قابل خواندن باشد. این کتاب همچنین بهعنوان CLRS شناخته میشود، که متشکل از حرف اول نامخانوادگی نویسندگان کتاب است.
Clean Code: A Handbook Of Agile Software Craftsmanship
مؤلف: Robert C. Martin (Uncle Bob)
یکی از مواردی که باعث میشود یک برنامه نویس، حرفهایتر محسوب شود این است که کد تمیزی بنویسد. معنی کد تمیز را با یک مثال توضیح میدهیم، فرض کنید شما یک کاردستی مثل یک ماشین که میتواند حرکت کند درست کرده باشید و اگر این ماشین صرفا راه برود ولی راه رفتنش روان نباشد و سخت حرکت کند یا حتی خوب حرکت کند ولی قیافهاش شبیه ماشین نباشد یا زشت باشد یا مثلا نتوان بهراحتی قابلیتهایی مثل چرخیدن چرخ را به آن اضافه کرد و حتما نیاز باشد که تغییرات اساسی برای اضافه کردن این قابلیت انجام شود، پس کاردستی را به روش خوبی درست نکردیم، این شبیه یک کد غیرتمیزاست که مشکلاتی دارد.
حال اگر کتابی وجود داشته باشد که به ما بگوید افرادی که قبلا کاردستی ماشین شبیه آنچه ما میخواهیم درست کنیم درست کردهاند با چه مشکلاتی برخوردند و راهحل این مشکلات چه بوده است، پس خواندن این کتاب میتواند باعث شود که کاردستیمان را بسیار حرفهای بسازیم. این کتاب همان کتاب است. شما بعد ازخواندن این کتاب میتوانید از قبل با اشتباهات رایجی که ممکن است در حین نوشتن کد برایتان پیش بیاید آشنا باشید و با دیدن مثالهای متنوع بعد از خواندن این کتاب کدهای تمیزی بنویسید و کدهای بد را به کدهای خوب، تمیز و خوانا تبدیل کنید. در سایت یوتیوب میتوانید یک پلی لیست شامل ۶ ویدئو را مشاهده کنید که خود عمو باب Clean Code را آموزش میدهد.
The Clean Coder: A Code Of Conduct For Professional Programmars
مؤلف: Robert C. Martin (Uncle Bob)
کتاب The Clean Coder که توسط مهندس و نویسنده باتجربه نرمافزار، رابرت سسیل مارتین با نام مستعار عمو باب، گردآوری شده است (که کتاب Clean Code که بالاتر اشاره شد را نیز نوشته)، شیوهها، تکنیکها و ابزارهای واقعی ساخت نرمافزار را آموزش میدهد. این کتاب نهتنها به شما میگوید که چگونه کد تمیزی بنویسید، بلکه نحوه ایجاد نگرش یک برنامه نویس حرفهای ماهر را نیز به شما میآموزد. کتاب کد نویس تمیز برای کسانی که به دنبال یادگیری جنبههای برنامه نویس حرفهای بودن هستند، کتابی ایدهآل است. این کتاب مملو از توصیههای عملی است، برای هر چیزی که به برنامه نویسی مربوط میشود، از کدنویسی و Refactoring گرفته تا آزمون. Clean Coder به صدها هزار توسعهدهنده کمک کرده است که در کار خود بسیار پرشورتر و ماهرتر شوند. تفاوت این کتاب با Clean Code همانطور که از اسمشان پیداست در این است که یکی (Clean Code) به مهارتهای کدنویسی مثل کامنتنویسی صحیح، مدیریت خطا، نحوه صحیح نوشتن کلاسها و توابع، به کار بردن صحیح تستهای واحد و ... میپردازد و دیگری (The Clean Coder) به مهارتهای فردی در انجام پروژه مثل کار در تیم یا زمانبندی پروژه یا استراتژیهای تست کردن میپردازد.
Code Complete: A Practical Handbook Of Software Construction
مؤلف: Steve McConnell
کتاب Code Compelete تمام جنبههای ساختار یک کد خوب را بهطور جامع پوشش میدهد و میتواند به شما بیاموزد که چطور کدی قوی بدون توجه به معماری یک زبان برنامه نویسی بنویسید. این کتاب یکی از بهترین راهنماهای کاربردی برنامه نویسی است و هیچ کمبودی در نمونه کد ندارد بلکه بهطور کامل هنر و علم پشت توسعه نرمافزار را نشان میدهد. تکنیکها و استراتژیهای آزمون و خطا شدهی توضیح داده شده در کتاب، به برنامه نویسان و توسعهدهندگان نرمافزار کمک میکند از توسعه (Development) مشارکتی یا تیمی بهرهمند شوند، نرمافزار با حداقل پیچیدگی توسعه دهند، فرآیند اشکال زدایی (Debugging)دیباگ چیست؟ معرفی روشها و ابزارهای دیباگینگ(اشکال زدایی)این مقاله عالی مفاهیم دیباگ (debug)، دیباگینگ (Debugging) یا همان اشکال زدایی، دیباگر (Debugger) را معرفی و همچنین روشها و ابزارهای دیباگینگ را بررسی کرده را تثبیت کنند، خلاقیت را به حداکثر برسانند، خطاها و مشکلات را کاهش دهند، Refactor و تکامل کد دهند. صرف نظر از سطح تخصص خوانندگان، محیط توسعه انتخاب شده یا اندازه پروژه، کتاب Code Complete به تحریک و تقویت ذهن برنامه نویس کمک میکند.
Design Patterns: Elements of Reusable Object-Oriented Software
مؤلفان: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch (Foreword)
آیا میدانید الگوهای طراحی نرم افزار چیست؟ الگوی طراحی یا دیزاین پترن بهزبان ساده روش حلی برای مشکلی پرتکرار در برنامه نویسی شی گرابرنامه نویسی شی گرا چیست؟ شی گرایی چیست؟این صفحه عالی به معرفی برنامه نویسی شی گرا پرداخته و توضیح داده شی گرایی یا همان object oriented یا OPP چیست؟ همچنین مزایای برنامه نویسی شی گرا را بیان کرده است. از یک برنامه نویس با تجربه و حرفهای انتظار میرود که الگوهای طراحی را بداند و با آنها آشنا باشد. کتاب Design Patterns بهطور کامل 23 الگوی طراحی نرم افزار را توضیح میدهد که به توسعه دهندگان و طراحان نرم افزار در ایجاد نرمافزاری بهتر، زیبا و منعطف کمک میکند. این کتاب انبوهی از راه حلهای مختصر و ساده را برای مشکلات معمول طراحی نرمافزار مورد بحث قرار میدهد. اگر درک خوبی از UML ندارید، ممکن است دریافت برخی از اطلاعات و مثالهای زده شده در این کتاب برای شما دشوار باشد، با این حال، شما از زیبایی روایت در این کتاب روان و آموزنده لذت خواهید برد.
Refactoring: Improving The Design Of Existing Code
مؤلف: Martin Fowler
ریفکتورینگ یا بازسازی یا بازآرایی یک مفهوم برنامه نویسی بسیار مهم برای درک جنبههای اساسی نوشتن کد تمیز و قوی است. کتاب Refactoring: Improving The Design Of Existing Code، تمام ریفکتورینگهای اصلی را که هر برنامه نویس ماهری باید درباره آنها بداند، پوشش میدهد. یادگیری بهترین رویکردها برای ریفکتور پایه کد، به برنامه نویس این امکان را میدهد که نگهداری کد را در طول زمان بهبود بخشد یا حداقل آن را از پوسیدگی نجات دهد. سوالهایی که این کتاب به طور کامل به آنها پاسخ داده میشود:
- Refactoring چیست؟
- چرا کد را ریفکتور کنیم؟
- چگونه کدهایی را که نیاز به Refactoring دارند تشخیص دهیم؟
بعد از خواندن این کتاب شما قادر خواهید بود تا:
- آزمونهایی جامع برای ریفکتورینگ بسازید.
- برای اصلاح و آسانتر کردن درک برنامه به سرعت از ریفکتورینگ استفاده کنید.
- تریدآفها و مشکلات در حین بازسازی (ریفکتورینگ) را شناسایی کنید.
The Art Of Computer Programming, Volumes 1-4
مؤلف: Donald E. Knuth
اگر میخواهید یک برنامه نویس استثنایی باشید این را بخوانید! بر خلاف سایر موارد این فهرست، کتاب هنر برنامه نویسی کامپیوتری فقط یک کتاب نیست، در واقع مجموعهای از 4 کتاب است:
- جلد 1: الگوریتمهای بنیادی (Fundamental Algorithms)
- جلد 2: الگوریتمهای نیمه عددی (Seminumerical Algorithms)
- جلد 3: مرتب سازی و جستجو (Sorting And Searching)
- جلد 4: الگوریتمهای ترکیبی (Combinatorial Algorithms)
اگرچه The Art Of Computer Programming در درجه اول بهعنوان یک مرجع نوشته شده است، اما طرفدارانی از برنامه نویسان مصمم را بهدست آورده است که همیشه آمادهاند تا محدودیتها را پشت سر بگذارند. این مجموعه کتاب عمیقتر به قلمرو الگوریتمهای علوم کامپیوتر میپردازد و خواندن آن آسان نیست. بیل گیتس این در مورد این مجموعه کتاب گفت:
"اگر فکر میکنید یک برنامه نویس عالی هستید The Art Of Computer Programming از Knuth را بخوانید، اگر توانستید کل آن را بخوانید، باید یک رزومه برای من ارسال کنید.”
اما یک توجه قبل از شروع این سری کتابها: ریاضیات سنگین در انتظارتان است!
جمعبندی
در این مقاله سعی شد تا ۷ کتاب تاثیر گذار برای برنامه نویسان پیشنهاد شود تا با مطالعه آنها کارشان را به سطوحی بالاتر ارتقا دهند. همانطور که میدانید درست است که کتاب یکی از بهترین راهها برای یادگیری برنامه نویسی است، اما ابزارهای دیگری نیز برای یادگیری وجود دارد، مانند آموزشهای آنلاین، دورههای ویدیویی، سمینارها، وبسایتهای آموزشی و ... بنابراین با توجه به اینکه با کدامیک راحتتر هستید میتوانید منبع مناسب را برای یادگیری انتخاب کنید. مهم خود یادگیری است که البته باید با انتخاب درست منبع آن را شروع کنید.
عمو باب (Uncle Bob) کیست؟
رابرت سسیل مارتین (Robert Cecil Martin) یا باب مارتین، معروف به عمو باب، متولد ۱۹۵۲، مهندس نرمافزار و مؤلف و استاد و مشاور آمریکایی است که کتابهای مهمی در زمینهی مهندسی نرمافزار نوشته است و از سازندگان متدلوژی چابک (Agile) است. وی از سال ۱۹۷۰ فعالیت حرفهای خود را آغاز کرد (زبان C که به عنوان مادر زبانها شناخته میشود در سال ۱۹۷۲ ساخته شد).
ریفکتورینگ (Refactoring) یا بازسازی یا بازآرایی چیست؟
به فرآیند بازسازی کد که در عین حال در عملکرد اصلی کد تغییری ایجاد نکند Refactoring میگویند. هدف از ریفکتورینگ افزایش کارایی، خوانایی ، سادهسازی، تمرکز روی عملکرد و ... است.
دیزاین پترن (Design Pattern) یا الگوی طراحی چیست؟
الگوی طراحی در مهندسی نرمافزار یک راه حل پرتکرار برای یک مشکل پرتکرار است. در واقع برای حل این مشکلات که برای برنامه نویسان در حین برنامه نویسی زیاد پیش آمده بود، روشهای متفاوتی وجود دارد اما برای آنها الگوها و قالبهای بسیار خوبی طراحی شده است تا مهندسان نرمافزار از آنها برای حل این مسائل در کد خود استفاده کنند.