← أحدث الأبحاث
🤖 AI

Diffs vs. Whole Files: An Empirical Comparison of Iterative Edit-Based and Direct Generation for Flutter/Dart Code Models

تثبت هذه الورقة تجريبياً أنه بالنسبة لتحرير أكواد Flutter/Dart، فإن التوليد المباشر للملف الكامل بواسطة النماذج اللغوية الكبيرة يتفوق بشكل جوهري على التوليد القائم على الفروقات (diff) المتكرر عبر جميع المقاييس، حيث لا يثبت الأخير تنافسيته إلا في عمليات التحرير القصيرة والموضعية مكانياً مثل مهام إعادة الهيكلة ومعالجة الأخطاء.

المؤلفون الأصليون: Andrej Andrejev

نُشر 2026-09-09✓ Author reviewed
📖 4 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Andrej Andrejev

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

عندما يحتاج برنامج حاسوبي إلى إصلاح خطأ في قطعة من الكود، هناك طريقتان رئيسيتان يمكن لآلة ذكية القيام بهما بهذه المهمة. الطريقة الأولى هي إعادة كتابة الملف بأكمله من البداية، وإنتاج نسخة جديدة وكاملة من المستند. أما الطريقة الثانية فهي أن تعمل مثل محرر بشري، عبر إجراء سلسلة من التغييرات الصغيرة والمحددة — كإيجاد جملة واستبدالها بأخرى جديدة، أو حذف سطر وإدراج آخر — حتى تكتمل المهمة. هذه الطريقة الثانية، التي تُسمى غالباً "الفرق" (diff) أو "الرقعة" (patch)، تحظى بشعبية في عالم البرمجيات لأنها تبدو أكثر كفاءة؛ فهي تولد نصاً أقل وتحاكي طريقة عمل البشر بالفعل. ومن البديهي الاعتقاد بأن إجراء تعديلات صغيرة ومستهدفة هو أمر أفضل من إعادة كتابة كل شيء. ومع ذلك، ظل التساؤل حول ما إذا كان هذا الحدس صحيحاً عند تعليم الذكاء الاصطناعي كتابة الكود مسألة مفتوحة.

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

اكتشف الباحثون أن فشل نهج الخطوات المتتالية لم يكن ناتجاً عادةً عن نفاد وقت النماذج أو وقوعها في حلقة مفرغة. في الواقع، نجحت النماذج التي استخدمت طريقة الخطوات المتتالية في إكمال قائمة تعليماتها في معظم الأوقات. لكن المشكلة كانت في أن النتيجة النهائية كانت غالباً معيبة بشكل طفيف. وقد تبين أن جزءاً كبيراً من هذه الإخفاقات يعود إلى مشكلة تقنية محددة: فعندما يحتوي الكود الأصلي على مقطعين متطابقين أو متشابهين جداً، يعجز النموذج عن التمييز بينهما وتحديد أي مقطع منهما هو المقصود بالتعديل. هذا الارتباك في تحديد الموضع الصحيح يمثل وحده ما بين نصف إلى ثلثي أسباب فشل طريقة الخطوات المتتالية في كلا النموذجين اللذين تم اختبارهما. وبسبب هذا العجز عن فك الالتباس، قد يقوم النموذج بتعديل القسم الخطأ، مما يؤدي إلى نتائج غير دقيقة رغم أن الكود قد يظل قابلاً للتشغيل.

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

ومع ذلك، فإن القصة ليست ذات جانب واحد تماماً. فقد وجد الباحثون أن نهج الخطوات المتتالية كان له مجال محدد يمكنه فيه المنافسة؛ حيث كان يعمل جيداً فقط عندما يكون التغيير المطلوب صغيراً وموضعياً جداً في جزء ضئيل من الملف. على سبيل المثال، عندما تتضمن المهمة إصلاح خطأ واحد أو إعادة هيكلة كتلة قصيرة ومعزولة من الكود، كانت نماذج الخطوات المتتالية جيدة تقريباً مثل تلك التي تعيد كتابة الملف بالكامل. ولكن بمجرد أن تتطلب المهمة سلسلة أطول من التغييرات أو تعديلات موزعة عبر أجزاء مختلفة من الملف، سرعان ما تراجعت طريقة الخطوات المتتالية. وخلص الباحثون إلى أن نجاح استراتيجية التحرير يعتمد على "محلية" (locality) المهمة: فإذا كان التغيير صغيراً ومكتفياً بذاته، فقد تنجح "الرقعة"، ولكن لأي شيء أكثر تعقيداً، فإن إعادة كتابة الملف بالكامل هي الخيار الأكثر أماناً وموثوقية.

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

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →