دباگ کردن برنامه یا همون پیداکردن محل خطا در برنامه، و سپس رفع کردن آن، یکی از کارهای اصلی یک برنامه نویس کامپیوتر است. فارغ از اینکه خطای برنامه مربوط به فرم نوشتن باشد (SyntaxError)، یا خطای هنگام اجرا باشد (RuntimeError)، یا خطای مفهومی باشد (Semantic Errors)؛ اگر برنامهنویس نتواند پس از تلاش زیاد برای پیدا کردن محل خطا، آن را بیابد، دچار یک سری علائم میشود.
این مشکل احتمالا برای همهی برنامه نویسها پیش اومده، شاید یادآوری این لحظات براشون کمی هم خندهدار باشه، ولی اینها اتفاقاتی واقعی هستند.
- احساس اعصاب خوردی و/یا خشم شدید
- به دنبال علتهای غیر معقول گشتن (مثلا «کامپیوتر از من متنفره!») و یا اعتقاد پیدا کردن به چیزهای جادویی (مثلا «این برنامه فقط وقتی من کلاهمو چپه میپوشم کار میکنه!»)
- روی آوردن به برنامه نویسی اتفاقی (random walk programming): در این حالت برنامه نویس سعی میکند تمام راههای ممکن رو برای رسیدن به جواب را امتحان کند، بدون اینکه به دنبال خطای خود باشد. معمولا پس از نوشتن کدهای مختلف نهایتا کدی که او را به جواب میرساند مییابد، اما غافل از اینکه مسئله او راه حلهای بسیار سادهتر (مثلا در حد یک خط) دارد.
اگر شما هم چنین علایمی رو هنگام debug کردن برنامه در خود مشاهده کردید، اولین کاری که باید انجام داد این است که سعی کنید از کامپیوتر فاصله بگیرید. هر وقت هر کدام از این علایم در شما دیده شد از پشت کامپیوتر بلند شده و بروید قدم بزنید. و وقتی دوباره احساس آرامش کردید به پای کامپیوتر برگردید. پس از اینکه دوباره پشت کامپیوتر نشستید به این مسائل فکر کنید: کد شما قرار است چه کاری انجام دهد؟ چه عللی ممکن است باعث به وجود آمده خطا شده باشند؟ آخرین قطعهای از برنامه که درست کار میکرد کجا بود و بعد از اون چه تغییراتی داده شد؟
بعضی وقتها تنها گذشت زمان میتونه به پیدا کردن باگ کمک کنه. ما معمولا اینجور باگها را زمانی که از کامپیوتر دور هستیم و به ذهنمون اجازهی آزادانه فکر کردن میدهیم، پیدا میکنیم.
برخی از بهترین مکانها برای پیدا کردن این دست از باگها عبارتند از:
- داخل قطار یا اتوبوس
- زیر دوش در حمام
- در تخت خواب و دقیقا قبل از اینکه خوابتون ببره
نکتهای که باید اضافه کنم اینه که در پیدا کردن یک باگ، که مدتها ذهنتون رو مشغول کرده بوده، لذتی هست، که در هیچ سکسی نیست :mrgreen: و این لذت رو تنها یک برنامه نویس میتونه درک کنه.
برگرفته از کتاب چگونه مانند یک دانشمند کامپیوتر فکر کنیم (اواخر ضمیمهی الف)

