در این مطلب میخواهیم چند تا از بهترین کتاب ها در زمینه الگوریتم را به شما معرفی کنیم، اما قبل از آن بیایید کمی دربارهی اهمیت تفکر الگوریتمی صحبت کنیم.
قدیمترها در حالی که اینترنت و امکاناتی که الان برای یادگیری داریم کمتر بود، با کتابها رابطهی بهتری داشتیم و لذت غرقشدن در بین صفحات کتاب را بیشتر تجربه میکردیم. ممکن است جزء کسانی باشید که عاشق کتابخوانی و یادگیری موضوعات مختلف از روی کتاب هستید؛ همین که کتاب را در دست بگیرید و یک لیوان قهوه در کنارتان روی میز بگذارید و با ورق زدن صفحات کتاب بوی خوشی به مشامتان برسد. حتی یادداشت کردن نکات ریز و یا چسباندن برچسبهای رنگی لای صفحات کتاب کلی کیف دارد…
همه میپرسند از بین منابع آموزشی مختلف، مثل کتاب، ویدئو، پادکستهای آموزشی کدام یک میتواند بهترین گزینه باشد؟
واقعیت این است که این موضوع کاملاً به خود شخص بستگی دارد، باید بتوان با امتحان کردن روشهای مختلف این را تا حدودی فهمید که آیا با خواندن کتاب بیشتر یاد میگیرید و لذت میبرید و یا با دیدن ویدئو؟
در طول یادگیری برنامهنویسی علاوه بر انتخاب منابع مناسب باید با تمرین، حل مسئله و یا انجام پروژههای کوچک همراه باشید. برنامهنویسی، مهارتی است که باید در ابتدا با تفکر و سپس با پیادهسازی انجام شود و طبیعتاً بدون تفکر مناسب نمیتوانیم مسئله را حل کنیم و بدون مهارت پیادهسازی، عملاً هیچ خروجی خاصی نخواهیم داشت. به همین دلیل رویکرد مسئلهمحور اهمیت بسیاری دارد.
برای یادگیری برنامهنویسی میتوان مستقیم به سراغ یادگیری دست کم یک زبان برنامهنویسی رفت و با حل چند تمرین روتین و ساده مثل چاپ سری فیبوناچی یا ضرب و تقسیم اعداد و دیدن خروجی دلچسب از خود بیخود شد و احساس خوبی پیدا کرد. برای مثال فرض کنید از طریق ویدئوی آموزشی میخواهیم اصول و ساختار برنامهنویسی را یاد بگیریم، اگر مدرس صرفاً چند مثال را روی ویراشگر کد خودش بنویسد و ما هم از روی همان کپی کنیم، باعث میشود امکان تفکر از ما گرفته شود و فقط بتوانیم کدهایی که مدرس مینویسد را بفهمیم، اما اگر چند تمرین و حل مسئله جلوی ما قرار گیرد، امکان محک زدن میزان دانشمان را خواهیم داشت و در نتیجه در آینده میتوانیم با دانش کامل از یک زبان برنامهنویسی، هر چیزی که دلمان میخواهد را به برنامه بفهمانیم و موفقتر باشیم.
همه اینها را گفتیم تا برسیم به اینکه، بهتر است برای شروع یادگیری برنامهنویسی ابتدا، الگوریتمنویسی را یاد بگیریم و تفکر الگوریتمی، حل مسئله و تمرین زیاد را از ملزومات ورود به دنیای برنامهنویسی بدانیم.
کتاب آشنایی با الگوریتم با رویکرد خلاقانه (Introduction to Algorithms: A Creative Approach)
این کتاب با بررسی و آموزش فرایند توسعه الگوریتمها، بر جنبههای خلاقانه طراحی الگوریتم تأکید دارد. قلب این فرایند خلاق در قیاس بین اثبات قضایای ریاضی با القای و طراحی الگوریتمهای ترکیبی نهفته است. این کتاب شامل صدها حل مسئله و مثال است و برای ارتقاء تواناییهای حل مسئله و درک اصول طراحی الگوریتم طراحی شده است. در این کتاب علاوه بر معرفی تکنیکهای مختلف طراحی الگوریتمها و روشهای حل برخی مسائل الگوریتمی، روشهای تحلیل و حل آنها با جزئیات بیشتر و بهصورت گامبهگام بررسی شده است. این کتاب همچنین از جمله منابع اصلی پیشنهادی به متقاضیان شرکت در المپیادهای کامپیوتر و مسابقات برنامهنویسی برای یادگیری طراحی و تحلیل الگوریتمها است.
کتاب آشنایی با الگوریتم (Introduction to Algorithms)
این کتاب از انتشارات دانشگاه MIT میباشد و برای آشنایی با ساختمان دادهها نیز میتواند استفاده شود. کتابی است که توسط Ron Rivest ،Charles E. Leiserson ،Thomas H. Cormen و Clifford Stein تألیف شدهاست. این کتاب به عنوان کتاب درسی برای دروس الگوریتم در بسیاری از دانشگاههای جهان استفاده میشود. این کتاب همچنین یکی از رایجترین منابع برای الگوریتم در مقالات منتشرشده میباشد. کتاب مذکور نیم میلیون نسخه در طول ۲۰ سال اول خود فروش داشتهاست. در اولین ویرایش این کتاب درسی Stein به عنوان یک نویسنده حضور نداشته و به این ترتیب این کتاب با نام مخفف CLR (متشکل از حروف ابتدایی نام خانوادگی نویسندگان) شناخته میشد. پس از اضافه شدن نویسنده چهارم به جمع نویسندگان در ویراست دوم، این کتاب با نام مخفف CLRS شناخته شد. این نسخه اولین نسخهای از کتاب بود که با عنوان «کتاب بزرگ سفید (الگوریتم)» شناخته میشد.
کتاب برنامهنویسی به زبان ++C
نویسنده این کتاب معروف، عینالله جعفرنژاد قومی میباشد. معمولاً از این کتاب در درس مبانی برنامهنویسی استفاده میشود. ممکن است شما هم در هنگام جستجو در لابهلای کتابهای آموزشی زبانهای برنامهنویسی به این نام برخورده باشید. یکی از بهترین و بینظیرترین تألیفات ایشان کتاب آموزش برنامهنویسی C و ++C است که تقریباً تمامی دانشجویان رشتههای مهندسی نرمافزار و IT ایران از آن بهعنوان یکی از بهترین مراجع یادگیری این زبان یاد میکنند.
کتاب Code Complete
این کتاب نوشته Steve McConnell، کتابی است که اولین بار در سال 1993 توسط Microsoft Press چاپ و منتشر شد. نکته قابلتوجه این کتاب این است که اصلاً اهمیتی ندارد که شما چقدر تجربه کدنویسی دارید یا به چه زبانی کد میزنید و یا ابعاد پروژه شما چقدر است، بدون در نظر گرفتن هرگونه پیشفرضی، این کتاب به خواننده آگاهی داده و او را به فکر کردن و ایدهپردازی ترغیب میکند. در حقیقت با مقایسه منابع موجود در زمینه برنامهنویسی کاربردی، آقای استیو در کتاب Code Complete دست به ترکیب مؤثرترین تکنیکها و اصول ضروری برنامهنویسی زده و آنها را به شکلی روشن و شفاف در قالب یک راهنمای عملی ارائه کرده است.
کتاب Clean Code
Clean Code کتابی است که در آن Robert Cecil Martin مبحثی کاملاً نو و انقلابی در رابطه با کدنویسی را ارائه کرده است. این کتاب نکات موردنیاز برای تبدیل شدن به یک استاد مسلط بر برنامهنویسی را در اختیار مخاطب قرار میدهد و از سه بخش تشکیل شده است: بخش اول به اصول، نمونهها و روشهای مختلف توسعهٔ نرمافزار اشاره دارد. بخش دوم به مطالعات موردی مختلف در رابطه با پیچیدگی فزاینده در دنیای کدنویسی اختصاص داده شده است. سومین بخش کتاب هم شامل لیستی از نکات و مواردی که در فرایند انجام مطالعات، استخراج و جمعآوری شدهاند میباشد. لازم به ذکر است که مهمترین دستاورد شما پس از خواندن این کتاب، کسب دانش موردنیاز برای فکر کردن، نوشتن، خواندن و انتخاب کدهای مناسب از کدهای نامناسب است. فایل این کتاب را میتوانید از اینجا دانلود کنید. http://zerobook.ir/
همچنین اگر به یادگیری برنامهنویسی علاقهمند هستید، دوره تفکر الگوریتمی پیشرفته و ساختماندادهها کوئراکالج گزینه خوبی برای شما خواهد بود تا الگوریتمنویسی و تفکر الگوریتمی را به شکل کاربردی یاد بگیرید.
و در پایان هم لازم است یادی کنیم از شعار معروف لینوس تروالدز که میگفت:
Talk is cheap, show me the code
ممکن است علاقهمند باشید: معرفی بهترین منابع آموزش الگوریتم و ساختمان داده