در تحقیقاتی که ما انجام دادهایم، این وجه مشترک فققط بلد بودن یک زبان واقعا خوب یا یک زمینه تخصصی خاص نیست. برنامهنویسان واقعا حرفهای در مباحث پایه و اصولی استاد هستند. اصول چیزی است که آنها را قادر میسازد تا چیزهای بزرگ بسازند و ایدههای خلاقانه داشته باشند.
به یک هرم فکر کنید. این هرم یک پایه بزرگ دارد، اما به تدریج که بالا میرود کوچکتر و کوچکتر میشود. یادگیری اصول برنامهنویسی همانند این پایه است.
این اصول چیست؟ ما اصول برنامهنویسی را رویکری دو طرفه میبینیم.
حلال مسائل
اول از همه، شما باید یک حلال موثر مسائل باشید. این یک نقطه مهم برای شروع است. زیرا برنامهنویسی حل مسأله است.
اگرچه راههای زیادی برای حل مسائل وجود دارد، اما چند مورد وجود دارد که به نظر ما بسیار مهم هستند. برنامهنویسانی که مسائل را به خوبی حل میکنند، این مسائل را با ماهیت خود حل میکنند، هدف را به خوبی شناسایی کرده و با هدف شروع به حل مسأله میکنند. سپس مسائل را به بخشهای کوچک و قابل کنترل تقسیم میکنند. گاهی اوقات مسائل را به صورت بصری، با کشیدن تصویر، در دنیای واقعی قرار داده و حل و فصل میکنند.
این روند سختتر از آن است که به نظر میرسد. حل مسأله مهارتی است که تدریس نمیشود و باید خودتان آن را با چالش در مشکلات و طرحریزی برای حل آن به دست آورید. شما باید ابتدا مسأله را درک کنید. این یعنی مشخص کردن بخش اصلی مسأله، مجهولات، دادهها و وضعیت. برای هر مسأله یک قلم و کاغذ بردارید و به این سوالات پاسخ دهید: چگونه میتوانم مسأله را حل کنم یا راهحل را پیدا کنم؟ (مجهولات)، چه چیزی برای من مشخص است؟ (دادهها)، چه محدودیتها یا جزئیاتی وجود دارند که باید از آنها آگاه باشم؟ (وضعیت).
درک مسأله ممکن است بدیهی به نظر برسد، اما واضح است که به راحتی نادیده گرفته میشود. بارها پیش آمده است که ساعتها را صرف حل مسألهای کردهایم و بعدا متوجه شدهایم که جزئیات کوچک اما مهم را نادیده گرفتهایم. نوشتن جزئیات به شما کمک میکند تا کارها را دقیقا همانطور که باید انجام دهید دنبال کنید. این نیمی از نبرد است.
بنابراین بهتر است یک طرح کلی را ترسیم کنید. یک نقاش طرح اصلی را قبل از شروع میکشد. یک معمار با استفاده از طرحها و نقشهها خانه را میسازد. هیچ برنامهای با برنامههای دیگر متفاوت نیست. به جای عجله برای انجام این کار، با فکر کردن درباره آنچه که میخواهید انجام دهید طرح اصلی را ترسیم کنید. به شیوههای مختلف میتوانید این کار را انجام دهید؛ تصویرسازی، نمودار، نوشتن مراحل، کشیدن الگوریتم و غیره. باید راهی را پیدا کنید که مسأله را سادهتر کند و بتوانید آن را مدیریت کنید.
با وجود بهترین برنامههای ساختهشده، مسائل و مشکلات هنوز هم سخت هستند و ممکن است در آنها گیر کنید. تبدیل شدن به یک حلال مسائل بزرگ طول میکشد. این مهارتی است که ما هنوز هم بر روی آن کار میکنیم و قطعا ارزش تلاش دارد.
وقتی کدی که توسط یک فردی که به خوبی مسائل را مدیریت و حل میکند را میخوانید، میبینید که تمیز و آسان است. متغیرها به خوبی نامگذاری شدهاند. توابع کوتاه و واضح هستند. هر خط کد هدف خاصی دارد. وضوح کد نشاندهنده روند تفکر برنامهنویس است. این برنامه را میتوان از بالا به پایین خواند و متوجه شد. این روند حل کردن عالی مسائل است و باید برای آن تلاش کرد.
درباره کامپیوتر خود چه میدانید؟
یادگیری علوم رایانه دومین اصل برنامهنویسی است. شما باید بدانید وقتی که مثلا از یک عملکرد داخلی استفاده میکنید، پشت صحنه چه اتفاقی میافتد. همچنین باید در مورد حافظه و زمان اجرا مطالبی را بیاموزید. به طور خلاصه باید بدانید چرا کامپیوتر کارهایی را انجام میدهد.
دانستن "چرا" دانش شما را افزایش میدهد و باعث میشود برنامهنویس آگاهتری شوید. در نتیجه، در رابطه با کدی که مینویسید، باملاحظهتر عمل خواهید کرد. مثلا وقتی کمی در مورد زمان اجرا دانش داشته باشیم، از جستجوی باینری به جای تکرار هر عنصر در یک لیست استفاده میکنیم. همچنین دانش شما در مورد اینکه مفاهیم هستهای برنامهنویسی چگونه کار میکنند افزایش مییابد.
اغلب اوقات اصول پایه کنار گذاشته میشوند و این واقعا خجالتآور است. برنامهنویسانی که در اصول برنامهنویسی مهارت دارند، به نظر میرسد با اعتمادبهنفس کد میزنند. آنها "چگونه" و "چرا" انتخابهای خود را میدانند، که باعث میشود کارشان بهبود یابد و اعتبار خود را بالا برند.
به علاوه، درک کامل اصول، یادگیری زبانها و تکنولوژیهای جدید را آسان میکند. مثلا صرف زمان برای یادگیری مفاهیم اصلی مثل تکرار، بازگشت و انتزاع برای یک زبان، وقتی میخواهید زبان دیگری را یاد بگیرید نیز به شما کمک خواهد کرد. به سادگی میتوان گفت با تسلط بر اصول چیزهای زیادی را به دست خواهید آورد.
نظرات کاربران در رابطه با این دوره