AAI Guide
العودة إلى البرمجة
debugging

أفضل ذكاء اصطناعي لـ إصلاح خطأ برمجي في الكود

شخّص وأصلح الأخطاء في الكود — من أخطاء بناء الجملة البسيطة إلى مشاكل المنطق المعقّدة متعدّدة الملفات، وتعارضات التزامن (race conditions)، والحالات الحدّية.

آخر تحديث May 5, 2026تصحيح الأخطاءالبرمجةإصلاح خطأتطويركودمبرمج
أفضل ذكاء اصطناعي لهذه المهمة

Claude

يمنح التفكير المنظَّم في Claude ميزة فعلية في الأخطاء المعقّدة. يتتبّع سلاسل المنطق ليصل إلى السبب الجذري بدلاً من اقتراح حلول سطحية، وهو أكثر استعداداً للقول "لست متأكداً" بدلاً من تقديم إجابة خاطئة بثقة — مما يُجنّبك متاهات التصحيح غير المثمرة.

افتح Claude
هل كانت هذه التوصية مفيدة؟
هل تعرف أداة أفضل لهذه المهمة؟ أخبرنا.
هل تريد التعمق أكثر؟

Code Yourself! An Introduction to Programming

University of Edinburgh · Coursera · 16 hours · Beginner

أساسيات منطق البرمجة — المتغيّرات، والتحكم في التدفّق، وعقلية تصحيح الأخطاء. مفيد لمن يُلصقون الكود المعطوب في الذكاء الاصطناعي دون فهم كامل لما يحدث؛ يساعدك في قراءة حلول الذكاء الاصطناعي بعين ناقدة بدلاً من نسخها بشكل أعمى.

اعرض الدورةرابط شراكة
قالب التوجيه
إليك الكود الذي يحتوي على خطأ:
[الصق الكود هنا]

ما كنت أتوقّع حدوثه: [السلوك المتوقّع]
ما حدث فعلاً: [السلوك الفعلي / رسالة الخطأ]
تتبّع المكدس (stack trace) إن وُجد:
[الصق تتبّع المكدس]
ما جرّبته بالفعل: [ما استبعدته]

من فضلك:
1. حدّد السبب الجذري (لا العَرَض فقط)
2. أرني الحل
3. اشرح لماذا حدث الخطأ كيلا أُكرّره
4. أشِر إلى أي مشاكل ذات صلة تلاحظها في الملف نفسه
هل أنتج هذا التوجيه مخرجات جيدة؟

شاهد الفرق

قبل وبعد استخدام هذا التوجيه

قبل — بدون التوجيه

function getUserOrders(userId) { const user = users.find(u => u.id === userId); return user.orders; } أحياناً يُطلق هذا الخطأ "Cannot read property 'orders' of undefined". فأضفت تحقّقاً: function getUserOrders(userId) { const user = users.find(u => u.id === userId); if (user) { return user.orders; } return []; } أصلح ذلك الخطأ، لكن لوحة التحكّم لديّ أصبحت تُظهر أحياناً "0 orders" لمستخدمين أعلم أن لديهم طلبات. لماذا؟

بعد — مع التوجيه

السبب الجذري: الكود الأصلي لم يكن معطوباً — طبقة البيانات (data layer) لديك هي المعطوبة. اشرح ما يحدث: 1. `users.find(u => u.id === userId)` يبحث عن مستخدم في مصفوفة موجودة في الذاكرة. 2. عندما تكون تلك المصفوفة قديمة (مثلاً: مستخدم أُنشئ للتو لكن الذاكرة المؤقتة (cache) لم تتحدّث بعد)، فإن `find` يُعيد `undefined`. 3. "إصلاحك" يُعيد بصمت `[]` لتلك الحالات — مما يعني أن مستخدماً حقيقياً لديه طلبات حقيقية يظهر له "0 orders"، لا لأنه ليس لديه طلبات، بل لأنك لم تستطع إيجاد سجلّه. لقد حوّلت خطأً صاخباً (تعطُّل) إلى خطأ صامت (بيانات خاطئة). وهذا أسوأ. الحل الفعلي: function getUserOrders(userId) { const user = users.find(u => u.id === userId); if (!user) { throw new UserNotFoundError(userId); } return user.orders; } ثم اعترض `UserNotFoundError` في طبقة لوحة التحكّم وإمّا (أ) شغّل تحديثاً للذاكرة المؤقتة وأعد المحاولة، أو (ب) أظهر "user not found" في الواجهة — لا "0 orders". لماذا يوجد هذا الخطأ في قاعدة الكود لديك: أنت تعامل "كائن المستخدم" و "طلبات المستخدم" كقراءة واحدة، بينما هما في الحقيقة سؤالان: "هل هذا المستخدم موجود؟" و "ما طلباته؟". حين لا تستطيع الإجابة عن الأول، لا يمكنك بصدق الإجابة عن الثاني. أماكن أخرى ينتشر فيها هذا النمط على الأرجح: أي `find` يتبعه قراءة لخاصية. ابحث في قاعدة الكود عن `.find(` وافحص كل موضع. تلك التي تُعيد بصمت قيماً افتراضية عند الفشل كلها مرشّحة. الاختبار الذي كان سيلتقط هذا: اختبار يُنشئ مستخدماً، ثم يستدعي `getUserOrders` فوراً، ويتأكّد من أن عدد الطلبات يطابق ما تمّ إدراجه — شغّله مع ذاكرة مؤقتة حديثة ومع ذاكرة قديمة.

الخيار البديل

ChatGPT

أسرع في أخطاء بناء الجملة البسيطة والحلول السريعة. معرفة أوسع بالأُطر النادرة. أكثر ثقة قليلاً حتى عند الخطأ — مفيد حين تكون السرعة أهم من الدقة.

افتح ChatGPT

الأسئلة الشائعة

  • هل ينبغي استخدام Claude Code بدلاً من الدردشة العادية مع Claude؟

    للأخطاء التي تمتدّ عبر ملفات متعدّدة، نعم — يستطيع Claude Code قراءة مشروعك بالكامل، وتشغيل الاختبارات، واقتراح حلول لمراجعتك. أما الأخطاء الفردية، فالنسخة الحوارية أسرع.

  • ما حجم الكود الذي ينبغي إلصاقه في التوجيه؟

    ألصق الدالّة التي بها الخطأ مع مستدعِيها المباشرين، وأي أنواع تعتمد عليها. وإن كان الخطأ بيئياً (إعدادات البناء، إصدارات الحزم)، ضمّنها أيضاً. السياق الأكثر أفضل من الأقل.

  • لماذا "يُصلح" الذكاء الاصطناعي أحياناً كودي بتغيير جزء آخر؟

    غالباً ما يلتفّ حول العَرَض بدلاً من إصلاح السبب الجذري. اعترض: اسأل "لماذا فشل الكود الأصلي؟" قبل قبول حل يُعيد كتابة منطق غير ذي صلة.

مهام ذات صلة