اشکالزدایی با اردک لاستیکی: کد خود را با توضیح بلند درست کنید

Why this prompt matters
Most AI debuggers solve the symptom and skip the lesson. This prompt builds your debugging intuition by making you trace the execution yourself — so you stop making the same mistakes twice.
What we use it for
Interactive Socratic debugging — find bugs through guided self-discovery instead of waiting for a fix
Prompt
You are a rubber duck debugging coach. I'm going to show you code that isn't working. Do NOT fix the bug for me. Guide me to find it myself using questions. Follow this coaching sequence: 1. Ask me to explain what the code is SUPPOSED to do, in plain English — line by line if needed. 2. Ask me to trace through what it ACTUALLY does, step by step. 3. Identify the first point where my description and the actual behavior diverge. 4. At that point, ask: "What did you EXPECT here?" and "What ACTUALLY happened?" 5. If I'm stuck after two attempts, give me ONE focused hint — not the answer. 6. Only reveal the fix after I've identified the bug myself, or after I explicitly give up and ask for it. My broken code: [PASTE YOUR CODE HERE] Language/framework: [e.g. Python 3.11, React 18, Go 1.21] Error message or unexpected behavior: [DESCRIBE WHAT'S WRONG — include the exact error if there is one]
اشکالزدایی با اردک لاستیکی یکی از قدیمیترین ترفندهای توسعه نرمافزار است: کد خود را خط به خط برای یک شی بیجان — یک اردک لاستیکی — توضیح دهید و عمل روایت کردن شما را مجبور میکند که خودتان باگ را ببینید. این تکنیک کار میکند زیرا بیشتر باگها در شکاف بین آنچه فکر میکنید کد انجام میدهد و آنچه واقعاً انجام میدهد زندگی میکنند. روایت کردن آن شکاف را به دید میآورد.
این پرامپت Claude یا GPT-4o را به یک اردک لاستیکی صبور و سقراطی تبدیل میکند. کد معیوب خود و توضیح مشکل را به آن بدهید. به جای تحویل یک تعمیر، شما را به طور سیستماتیک از روش اشکالزدایی عبور میدهد — شما را وادار میکند هر مرحله را تا زمانی که خودتان خطا را پیدا کنید، فکر کنید.
چرا این بهتر از فقط درخواست تعمیر کار میکند
وقتی یک هوش مصنوعی نسخه تصحیحشده کد شما را تحویل میدهد، دو اتفاق میافتد: مشکل فوری حل میشود و شما چیزی یاد نمیگیرید. دفعه بعد که یک باگ مشابه مینویسید — و خواهید نوشت — به همان اندازه احتمال دارد که دوباره آن را از دست بدهید.
رویکرد سقراطی شما را مجبور میکند یک مدل ذهنی از اجرا بسازید. باید آنچه را در هر مرحله انتظار داشتید بیان کنید، سپس آن را با آنچه واقعاً اتفاق افتاد مقایسه کنید. آن بیان جایی است که یادگیری رخ میدهد. در بیشتر موارد، توسعهدهندگان باگ خود را قبل از اینکه هوش مصنوعی نیاز به مداخله داشته باشد پیدا میکنند — صرف عمل توضیح کد با صدای بلند کافی است.
همچنین سریعتر از آن چیزی است که انتظار دارید. برای خطاهای منطقی و باگهای off-by-one، پرسش ساختاریافته معمولاً در ۳-۵ مبادله به علت ریشهای میرسد تا ۱۰-۲۰ دور «آن را امتحان کردم و هنوز کار نمیکند» که اشکالزدایی با کمک هوش مصنوعی اغلب به آن تبدیل میشود.
پرامپت
این پرامپت را کپی کنید، جاینشانها را جایگزین کنید و در Claude یا GPT-4o بچسبانید:
You are a rubber duck debugging coach. I'm going to show you code that isn't working. Do NOT fix the bug for me. Guide me to find it myself using questions.
Follow this coaching sequence:
1. Ask me to explain what the code is SUPPOSED to do, in plain English — line by line if needed.
2. Ask me to trace through what it ACTUALLY does, step by step.
3. Identify the first point where my description and the actual behavior diverge.
4. At that point, ask: "What did you EXPECT here?" and "What ACTUALLY happened?"
5. If I'm stuck after two attempts, give me ONE focused hint — not the answer.
6. Only reveal the fix after I've identified the bug myself, or after I explicitly give up and ask for it.
My broken code:
[PASTE YOUR CODE HERE]
Language/framework: [e.g. Python 3.11, React 18, Go 1.21]
Error message or unexpected behavior:
[DESCRIBE WHAT'S WRONG — include the exact error if there is one]
نکاتی برای استفاده حداکثری از آن
درباره خطا دقیق باشید. «کار نمیکند» چیزی برای تکیه دادن به هوش مصنوعی نمیدهد. پیام خطای دقیق، stack trace را بچسبانید یا خروجی دقیق اشتباه را توضیح دهید (مثلاً «۵ برمیگرداند، انتظار ۷»).
ردیف زبان/فریمورک را رد نکنید. رفتار pointer null در Go با باگ None comparison در Python متفاوت است. زمینه فریمورک تغییر میدهد که هوش مصنوعی چه سوالاتی بپرسد.
در برابر میل به درخواست تعمیر مقاومت کنید. پرامپت به هوش مصنوعی دستور میدهد آن را به شما ندهد و هوش مصنوعی اطاعت میکند. اگر احساس بیصبری میکنید، آن بیصبری نکته است — ناراحتی اشکالزدایی تشخیص الگویی را میسازد که از باگهای آینده جلوگیری میکند.
بهترین کار را دارد برای: خطاهای منطقی، باگهای off-by-one، مسائل زمانبندی async/await، باگهای تغییر وضعیت، مقادیر بازگشتی اشتباه. برای مسائل سطح محیطی (تعارضات وابستگی، پیکربندی احراز هویت) کمتر مفید است جایی که مشکل اصلاً در منطق کد شما نیست.