همه نمیتونن دیباگ کنن
خلاصهٔ کاملتر
تو این پست اومده که دیباگ کردن در اصل یه تمرین «تفکر خلافواقع»ـه، یعنی استدلال کردن از فرضی که میدونی غلطه. نویسنده میگه برای پیدا کردن باگ باید حرفهای توهینآمیز به خودت رو جدی بگیری: فرض کن همون invariantی که سه روز روش وقت گذاشتی شکسته باشه، یا این پوینتر null باشه با اینکه دو خط بالاتر چکش کردی. اون دنیا چه شکلیه؟
بعد سراغ سه سطح استدلال علّی جودیا پرل میره: سطح اول همبستگی (چی با چی رابطه داره)، سطح دوم مداخله (اگه X رو عوض کنیم سر Y چی میاد) و سطح سوم خلافواقع (چرا Y اتفاق افتاد). به گفتهٔ نویسنده دیباگ دقیقاً سطح سومه: تو دنیای واقعی پوینتر null شده و تو باید دنیای فرضیای بسازی که توش یا تخصیص حافظه شکست خورده یا حلقه اصلاً اجرا نشده.
بخش جالب ماجرا آماره. مقاله به مطالعات روانشناسی (Dulit 1972، Keating 1979، Neimark 1975) ارجاع میده که میگن حدود ۲۰ درصد بزرگسالها تو تفکر خلافواقع مشکل شدید دارن و ۲۰ درصد دیگه مشکل متوسط. یعنی ۴۰ درصد آدمها به دنیای عینی و قابل مشاهده چسبیدن. نویسنده تأکید میکنه اینا کمهوش نیستن، فقط ذهنشون فرض خیالی رو پس میزنه، و چون حالت نرمافزار کاملاً انتزاعیه، تشخیص باگ براشون عذابآور میشه.
نویسنده میگه کسی که خلافواقع فکر نمیکنه بازم میتونه شبیه برنامهنویس به نظر برسه: به جای شبیهسازی سیستم تو ذهنش الگو تطبیق میده و از بویلرپلیت و StackOverflow و LLM کد برمیداره. کد چندنخی هم همینه، منتها با دنده سنگینتر، چون باید همهٔ درهمآمیزیهای ممکن نخها رو همزمان تو ذهن نگه داری. برای ذهن عینی، ریسکاندیشنی (باگی که فقط با یه ترتیب خاص از اجرای نخها خودش رو نشون میده) که تو هزار بار تست بالا نیومده اصلاً وجود نداره؛ برای مهندس همزمانی، همون حالت تستنشده یه شبح در کمینهست.
نکات کلیدی:
- تفکر خلافواقع یعنی استدلال از فرضی که میدونی غلطه، مثل «فرض کن این پوینتر null باشه»
- تو سه سطح جودیا پرل، دیباگ سطح سومه و همبستگی و مداخله برای پیدا کردن باگ کافی نیست
- طبق مطالعاتی که مقاله بهشون ارجاع میده، ۲۰ درصد بزرگسالها مشکل شدید و ۲۰ درصد مشکل متوسط تو این نوع تفکر دارن
- برنامهنویسِ بدون این مهارت معمولاً با الگو تطبیق و چسبوندن کتابخونهها کار رو جلو میبره
- کد چندنخی سختترین حالته، چون باید انفجار نمایی حالتهای ممکن نخها رو همزمان تصور کنی




