اینجا یادداشتهایی آمیخته به شوخی نوشته میشه که بیشترش تکیه بر آثار آقامون، سرورمون سلطان "جردن پترسون" داره!
ایرادیابی به کمک جوجه اردک پلاستیکی
سلام؛ نتیجه اخلاقی این پست این خواهد بود که توضیح دادن برای یه زبوننفهم، به فهمیدن و انسجام فکری بیشتر خودمون کمک میکنه. اگه حوصله خوندن ادامهاش رو نداری، از آشنایی باهات خوشحال شدم، مراقب خوشگلیات باش، بای!
و اما شمایی که موندید:
من برنامهنویس نیستم، اما همونطور که امام ورزش نمیکرد ولی ورزشکاران رو دوست داشت، من هم برنامهنویسها رو دوست دارم. اگه تا حالا برنامهای نوشته باشید، به کرات به این قضیه برخورد کردید که فقط به خاطر نگذاشتن یه «؛» آخر دستور یا یه بیدقتی خیلی کوچیک، پانصد خط کدی که نوشتید اجرا نمیشه. حتی برای من بارها شده چندین بار توی ذهنم کدها رو از اول مرور کردم و متوجه خطایی که داشتم نشدم. (بله گفتم برنامهنویس نیستم، ولی امام هم که میگفت من ورزش نمیکنم منظورش این نبود تا حالا توپ به پام نخورده، این چه منطقیه شما دارید؟!) در دنیای زیبای برنامهنویسی، یک روش عیبیابی معروف هست به نام روش اردک پلاستیکی (Rubber Duck Debugging). در این روش نه تنها کدها رو خط به خط برای اردک بیچاره توضیح میدیم، بلکه بهش میگیم هدفمون از نوشتن این بخش از کد چیه (اسکل هم خودتی). در واقع سعی میکنیم برای یه زبون نفهم کدهای برنامهنویسی پیچیده رو توضیح بدیم، و یه جایی هست که احساس میکنیم داریم زر میزنیم، همون جا ایست میکنیم، و بله، این شما و این هم باگ عزیز، با تشکر از جوجه اردک پلاستیکی.
به عبارت دیگه برنامهنویسها به این نتیجه رسیدهاند اگه واقعاً بریم توی فاز اینکه انگار داریم برای یه گیج زبون نفهم توضیح میدیم، خیلی بیشتر جوابه تا اینکه توی ذهن هوشیار و تیز خودمون دنبال گندی که زدیم بگردیم. اینکه دلیلش چیه به کتف راستمه، ولی فکر میکنم دلیلش این باشه که ما وقتی برای یه سوم شخص شخمی توضیح میدیم مجبوریم حتی چیزهای ساده و بدیهی رو هم بگیم و اون جاست که میفهمیم همیشه آدم از چیزهایی که فکر میکنه خیلی راحت و بدیهی است ضربه میخوره. به عبارت دیگه اگه اونقدر به ذهنمون نظم بدیم تا یه چیز پیچیده رو برای یه جوجه اردک پلاستیکی بتونیم تعریف کنیم، احتمال داره از خطا بیشتر دور باشیم.
و اما چرا من این مطلب رو به عنوان اولین نوشتهام انتخاب کردم؟
جواب کوتاه: چون این قضیه هدف من از نوشتن توی ویرگول رو بیان میکنه.
جواب بلند: من برنامهنویس نیستم (نه ادامهاش اون نیست) اما توی تفکرات و منطق زندگیم گاهی به یه سری باگها میخورم. یه سری جاها برنامههایی که برای آیندهام نوشتم درست ران نمیشه و هر چی میگردم که خدایا کجا رو اشتباه رفتهام پیدا نمیکنم. من این صفحه رو با صفر دنبال کننده آغاز کردهام و معلوم نیست وقتی اولین نفر این نوشته رو میخونه، چندین روز/ماه/ یا حتی سال از امشبی که دارم تایپ میکنم میگذره. (هر کی اولین بار خوند لطفاً کامنت بذاره جدی جدی ببینیم چقدر طول کشیده) در واقع من اینا رو نمینویسم که کسی بخونه، مینویسم تا به ذهن خودم نظم بدم، مینویسم تا مجبور بشم برای مخاطبی که نمیشناسم بنویسم. یعنی باید جوری بنویسم که اگه یه روزی بعد از هزار تا آدم متشخص و فهمیده که این متن رو خوندن و حال کردن یه گیج اسکل هم اومد و خوند، بفهمه. اون گیجه هم مخاطب منه، دوستش دارم، و اتفاقاً اونه که برام مثل یه جوجه اردک پلاستیکی توی زندگی میمونه (تو رو هم دوستت دارم، الهی الهی). کسی قرار نیست منو بشناسه، مگه این که کسی بتونه از روی شوخیهام و تکیهکلامم بفهمه من کی هستم. دلیلش اینه که وقتی ناشناس باشم احتمال اینکه بتونم صادقانهتر بنویسم و دچار سوگیریهای ذهنی که شخصیتم بهم میده نشم بیشتره.
برای مطالعه بیشتر در این زمینه کتاب «ذهن فریبکار شما» رو پیشنهاد میکنم. اثر پروفسور "استیون نوولا"، ترجمه سلطان قلبها، استاد الاساتید، عشق، "دکتر اکبر سلطانی" به همراه خانم "مریم آقازاده"، از انتشارات خوب اختران.
در نوشتن این مطلب هم از نوشتهای در سایت «متلب سایت» که لینکش رو میذارم استفاده کردم:
https://matlabsite.com/11356/rubber-duck-debugging.html
ماچ به کلهتون که تا اینجا اومدید. شما هم مراقب خوشگلیاتون باشید، بای!
مطلبی دیگر از این انتشارات
۵ اشتباه رایج برنامهنویسان تازهکار (و چگونه از آنها اجتناب کنیم)
مطلبی دیگر از این انتشارات
۱۲ قانون برای یادگیری برنامهنویسی
مطلبی دیگر از این انتشارات
کاربرد های decoration در پایتون