۶ درس زندگی که میتوان از برنامهنویسی آموخت


درسهای زیادی هستند که میتوان از نرمافزارها و برنامهنویسی یاد گرفت. تمامی دستورات شرطی، حلقهها، آرایهها، آبجکتها، متدها و هرچیز دیگری که در یک برنامه وجود دارند میتوانند درسی برای ما باشند که در این مقاله به 6 مورد از مهمترین آنها میپردازیم.
فلوچارتها همه چیز را ساده میکنند
بسیاری از برنامهنویسها، کار با فلوچارتها را خیلی قبلتر از شروع کدنویسی آغاز میکنند، به این دلیل که نوشتن یک برنامه به طور یکدفعه میتواند کار سخت و سنگینی باشد. اگر نرمافزار مدنظر وظایف پیچیدهای هم بر عهده داشته باشد که نوشتن آن سختتر و سنگینتر نیز میشود. برنامهنویسان قبل از شروع انجام یک پروژهی بزرگ، آن را به اجزای کوچکتر تبدیل میکنند تا مدیریت آنها آسانتر شود. مانند مراحل ساخت یک اتومبیل که ابتدا هر قسمت آن را به صورت مجزا میسازند و در نهایت همهی اجزا را به یکدیگر متصل میکنند. هر جز در برنامهنویسی، یک مجموعه (یا چند مجموعه) از کدها است که مقادیر و ورودیهای مشخصی دارند و بر اساس آنها یک خروجی تحویل میدهند. فرد برنامهنویس با استفاده از فلوچارتها، منطق بین این ورودیها و خروجیها را پیادهسازی میکند.
فلوچارتها کمک میکنند منطق کد را به صورت گرافیکی پیادهسازی کنیم. با این کار، درک منطق کد بسیار سادهتر خواهد بود تا اینکه آن را به صورت متن بنویسیم یا اینکه بخواهیم به صورت مستقیم وارد کدنویسی شویم و امیدوار باشیم در حین کار بتوانیم آن را درک کنیم. دلیل اینکه برنامهنویسان اقدام به درک منطق برنامه در حین کار نمیکنند این است که منطقی که در نهایت کار، به دست میآید، به تصمیماتی که برای مدیریت اولیه آن گرفتهاید بستگی دارد. اگر در اول کار تصمیم اشتباهی گرفته باشید، ممکن است در نرمافزار خودتان به بنبست بخورید.
همین مساله در زندگی نیز وجود دارد. اگر در زندگی نیز قبل از هر تصمیمی یک کاغذ و قلم به دست بگیریم و یک فلوچارت برای برنامههای خود طراحی کنیم، همه چیز بهتر خواهد بود. اگر برای تمام تصمیماتی که در زندگی میگیریم نظیر چگونگی پرداخت قبض یا خرید خانه یا حتی مدیریت یک پروژه در کار، از قبل برنامهریزی داشته باشیم، هیچوقت به بنبست نخواهیم خورد. با این کار، ما تمام انتخابها و اتفاقات را از قبل بررسی کردهایم و برای مدیریت تک تک آنها برنامه داریم. درست همانند برنامهنویسی، اگر متوجه شویم که تصمیمات اولیه چه تاثیری در نتیجهی نهایی خواهند داشت، میتوانیم از همان ابتدا تصمیمات حساب شدهای بگیریم.
هر چیزی جایی دارد
هر زمانی که میخواهیم یک نرمافزار یا اسکریپت بنویسیم، اولین قدم تعریف متغیرها خواهد بود. در برنامهنویسی، انواع مختلفی از این متغیرها وجود دارند: (String) برای نگهداری متن، (Integer) برای ذخیرهی اعداد صحیح، (double) و (variant) برای نگهداری اعداد بزرگتر، آرایهها و ساختارها و بسیاری موارد دیگر که هر کدام کاربرد خود را دارند. هدف از این انواع متغیر این است که برای هر کاری که میخواهیم انجام دهیم، متغیر مناسب داشته باشیم، مثلا اگر خروجی یک تابع، اسم یک شخص است، از یک (String) استفاده میکنیم.
همین قضیه در مدیریت زندگی نیز صدق میکند، حال چه منزلتان باشد و یا محل کارتان. همیشه جعبهها و ظرفها را به اندازهای انتخاب میکنید که نیاز دارید: یک جعبهی پلاستیکی کوچک برای مواد خشک و یک سری ظرف برچسب خورده برای ادویهجات. در اداره نیز مدارک روزانه را در کشوی میزتان نگه میدارید، ولی مدارک حساس و کاری را در یک کمد گذاشته و آن را قفل میکنید. شعار یک زندگی سازمانیافته، «هرچیزی ظرف مناسب و هر ظرفی جای مناسب میخواهد» است.
از ماژولهای از قبل نوشته شده استفاده کنید تا در زمان صرفه جویی شود
هر برنامهنویسی به مرور زمان یاد خواهد گرفت که برخی از توابع میتوانند در چندین برنامه کاربرد داشته باشند. مثلا یک تابعی که درجهی فارنهایت را به سلسیوس تبدیل میکند، میتواند در چندین برنامهای که کار مشابه انجام میدهند کاربرد داشته باشد. این تابع تنها یک ماژول است که مقدار فارنهایت را گرفته و سلسیوس را به شما بر میگرداند و از چندین خط کد تشکیل شده است، ولی وقتی میشود یکبار یک تابع را ذخیره کرد و در هر برنامهای از آن استفاده کرد، چرا هر بار مجددا آن را بازنویسی کنیم؟
هنری فورد (موسس کمپانی Ford Motors) در مورد فورد مدل تی گفته است:
«هر مشتری میتواند اتومبیلش را به هر رنگی که میخواهد تهیه کند، به شرطی که آن رنگ مشکی باشد.»
دلیل این حرف این است که فورد متوجه این مساله شده بود که اگر اتومبیلهایش را با محصولات یکسان تولید کند و نیازی به انجام یک پروسهی جدید در هنگام ساخت هر اتومبیل نداشته باشد، میتواند خیلی سریعتر محصولاتش را تولید کرده و به فروش برساند. این قضیه باعث تولد خطهای تولید و یک انقلاب در صنعت اتومبیل سازی شد. این قاعده در جاهایی از زندگی که همواره باید به انجام یک کار تکراری بپردازید نیز کاربرد دارد. اتوماسیون کلیدی برای موفقیت است، پس اگر راهی سراغ دارید که بتوانید کارهای تکراری را به طور اتوماتیک انجام دهید، میتوانید روز خیلی مفیدتری داشته و در زمان صرفه جویی کنید.
همه چیز را یادداشت کنید
گاهی اوقات، هر برنامهنویسی وسوسه میشود که بدون هیچگونه یادداشتبرداری، شروع به کد نویسی کند. برنامهنویسان در هر لحظه میدانند که از برنامه چه میخواهند و چگونه میخواهند آن را انجام دهند، به همین دلیل شاید مستندسازی را ضروری نبینند، چراکه اینکار بسیار زمانگیر است. در یک مستند باید خط به خط توضیح دهید که چرا و چگونه هر کاری را انجام میدهید. شاید این کار ابتدا بی دلیل به نظر برسد، ولی وقتی که ماهها بعد بخواهید از همان کد برای هدف دیگری استفاده کنید، متوجه ضرورتش خواهید شد. در حالت عادی باید کلی با خودتان کلنجار بروید تا یادتان بیاید که چرا از این کد استفاده کردهاید، در حالی که با ثبت مستند به راحتی به منطق پشت هر کد پی میبرید.
یادداشتبرداری دقیق میتواند در هر جایی از زندگی کاربرد داشته باشد، میتوان از آن برای ثبت تاریخهای تولد و سالگردها گرفته تا دلیل انجام هر معامله در کار، استفاده کرد. زندگی روزانه پر از تصمیماتی است که مانند برگهایی در باد میآیند و میروند. اینکه بخواهید به حافظهی خود برای ثبت تمام دلایلی که سر یک قرار رفتید یا یک خریدی را انجام دادید اعتماد کنید، کار هوشمندانه و موثری نیست. یک دفتر یادداشت روزانه میتواند ذهنتان را برای چیزهای خیلی مهمتری آزاد نگه دارد.
همیشه برای خودتان یک راه فرار داشته باشید
یکی از اشتباهات رایجی که بین برنامهنویسان مبتدی زیاد تکرار میشود، حلقههای بینهایت است. حلقهی بینهایت حالتی است که در آن شرط مورد نیاز برای خروج از حلقه هیچگاه به وجود نمیآید، در نتیجه نرمافزار برای همیشه در آن حلقه مانده و هیچوقت تمام نمیشود. این خطا 100% توان «CPU» را گرفته و تقریبا باعث قفل شدن رایانه میشود و تنها راه حل آن بستن نرمافزار است.
یکی از درسهایی که هر برنامهنویس مبتدی باید بداند این است که همیشه برای حلقههایی که عمل سنگینی انجام میدهند، باید یک راه خروج اضافی تهیه کرد. به عبارتی دیگر، به جای اینکه یک حلقه را بر این اساس بسازید که از مقدار خاصی عبور کند (که ممکن است در برخی شرایط هیچوقت این اتفاق نیفتد)، بهتر است یک شرط دوم نیز تعریف کنید که اگر حلقه از یک مقدار عجیبی عبور کرد که هیچوقت در حالت عادی نباید به آن میرسید، برنامه از حلقه خارج شود.
این مساله چگونه در زندگی واقعی اعمال میشود؟ باید بدانید که حتی زمانی که همه چیز را برنامهریزی کردهاید، باز هم ممکن است هیچ چیز طبق برنامه پیش نرود. مثلا ممکن است یک برنامهی سفر برای یک شهر خیلی زیبا چیده باشید، ولی در آن هفته تمام مدت هوا بارانی باشد. در واقع اصطلاح «راه فرار» در زندگی یعنی که بدترین شرایط ممکن را در نظر بگیرید و برای آن برنامهای داشته باشید تا اگر آن شرایط پیش آمد بتوانید بهترین استفاده را از آن ببرید.
زندگی همیشه قابل پیشبینی نیست، گاهی حتی زمانی که فکر میکنید هیچ مشکلی به وجود نخواهد آمد، بهترین نقشهها میتوانند به بنبست بخورند. اگر برای بدترین حالت برنامه داشته باشید، خیالتان راحت خواهد بود که هیچ اتفاق پیشبینی نشدهای باعث نمیشود سرتان زیر آب برود.
هربار کارتان با چیزی تمام شد، حافظه را آزاد کنید
آخرین درسی که میتوان از برنامهنویسی گرفت این است که بعد از اتمام هر کاری، رد به جا مانده از آن را پاک کنید. در یک برنامه ممکن است نیاز داشته باشید که جریانی از دادهها را در فایل خروجی باز کنید، یک آرایهی بزرگ را توسط دادههای متفاوت پر کنید و خیلی کارهای دیگری انجام دهید که حافظه و منابع سیستم را اشغال میکنند. یک برنامهی تمیز نرمافزاری است که وقتی کارش با این آرایهها و مقادیر تمام میشود، آن ها را کنار میگذارد و حافظهی آنها را آزاد میکند. اینکار باعث دوری از یکی از مشکلات رایج در نرمافزارها، یعنی استفادهی بیرویه از حافظه میشود.
این حرفها را در کودکی نیز از مادرانمان شنیدهایم: چیزهایی مثل «اتاقت را تمیز کن» یا «لباسهایت را سر جایشان بگذار». اگر بعد از هر کاری، وسایلی که استفاده کردهایم را سر جایشان بگذاریم، نه تنها خانه یا محل کارمان تمیز خواهد ماند، بلکه باعث میشود برای شروع کار بعدیتان فضای بیشتری داشته باشید. اگر وسایل را همینطور رها کنیم، فقط فضا را اشغال میکنند و باعث میشوند در آینده که به آنها نیاز داریم، زمان بیشتری برای پیدا کردن آنها صرف شود.
سخن آخر
حقیقت این است که درسهای بسیاری بیشتری میتوان از برنامهنویسی گرفت. زمانی که صحبت از برنامهریزی، سازماندهی و مدیریت منابع میشود، در برنامههای کامپیوتری تمام این موارد تعریف شدهاند. با یادگیری برنامهنویسی، میتوان چیزهای خیلی فراتری نیز آموخت. حتی اگر در مدارس به بچهها نیز یک زبان برنامهنویسی آموخته شود، در زندگی آنها بسیار موثر خواهد بود، چراکه هرگاه یک مفهوم را در برنامهنویسی یاد بگیریم، میتوانیم از آن در تمام جنبههای زندگی استفاده کنیم.
اگر تمایل به مطالعه بیشتر در مورد این موضوعات را داشته باشید؛ شاید آموزش های زیر نیز برای شما مفید باشند:
- آموزش اصول و مبانی برنامه نویسی
- آموزش مبانی برنامه نویسی (الگوریتم و فلوچارت) با رویکرد حل مسأله
- آموزش تبدیل فلوچارت به کد با Flowgorithm
#
[…] […]