2025-11-23T09:49:16.774551

Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study

Dantas, Maia
Developers often search for reusable code snippets on general-purpose web search engines like Google, Yahoo! or Microsoft Bing. But some of these code snippets may have poor quality in terms of readability or understandability. In this paper, we propose an empirical analysis to analyze the readability and understandability score from snippets extracted from the web using three independent variables: ranking, general-purpose web search engine, and recommended site. We collected the top-5 recommended sites and their respective code snippet recommendations using Google, Yahoo!, and Bing for 9,480 queries, and evaluate their readability and understandability scores. We found that some recommended sites have significantly better readability and understandability scores than others. The better-ranked code snippet is not necessarily more readable or understandable than a lower-ranked code snippet for all general-purpose web search engines. Moreover, considering the readability score, Google has better-ranked code snippets compared to Yahoo! or Microsoft Bing
academic

قابلية القراءة والفهم للمقتطفات البرمجية الموصى بها من محركات البحث العامة: دراسة مقارنة

المعلومات الأساسية

  • معرّف الورقة: 2110.07087
  • العنوان: Readability and Understandability of Snippets Recommended by General-purpose Web Search Engines: a Comparative Study
  • المؤلفون: Carlos Eduardo C. Dantas, Marcelo A. Maia
  • التصنيف: cs.SE (هندسة البرمجيات)
  • تاريخ النشر/المؤتمر: AeSIR '21، 15-11 نوفمبر 2021
  • رابط الورقة: https://arxiv.org/abs/2110.07087

الملخص

يبحث المطورون بشكل متكرر عن مقتطفات برمجية قابلة لإعادة الاستخدام على محركات البحث العامة مثل Google و Yahoo! و Microsoft Bing. ومع ذلك، قد تكون هذه المقتطفات ذات جودة منخفضة من حيث قابلية القراءة أو الفهم. تقدم هذه الورقة تحليلاً تجريبياً باستخدام ثلاثة متغيرات مستقلة (الترتيب، محرك البحث العام، وموقع التوصية) لتحليل درجات قابلية القراءة والفهم للمقتطفات البرمجية المستخرجة من الويب. جمعت الدراسة أفضل 5 مواقع موصى بها من Google و Yahoo! و Bing لـ 9,480 استعلام ومقتطفاتها البرمجية المقابلة، وقيّمت درجات قابلية القراءة والفهم الخاصة بها. وجدت الدراسة أن بعض مواقع التوصية تتفوق بشكل كبير على مواقع أخرى من حيث درجات قابلية القراءة والفهم. المقتطفات البرمجية ذات الترتيب الأعلى ليست بالضرورة أكثر قابلية للقراءة أو الفهم من تلك ذات الترتيب الأقل في جميع محركات البحث العامة. بالإضافة إلى ذلك، من حيث درجات قابلية القراءة، يتمتع Google بترتيب أفضل للمقتطفات البرمجية مقارنة بـ Yahoo! أو Microsoft Bing.

السياق البحثي والدافع

تعريف المشكلة

  1. المشكلة الأساسية: توجد فروقات في الجودة من حيث قابلية القراءة والفهم في المقتطفات البرمجية الموصى بها من محركات البحث العامة، والمقتطفات ذات الترتيب الأعلى ليست بالضرورة ذات جودة أفضل
  2. الاحتياجات العملية: يستخدم المطورون محركات البحث العامة على نطاق واسع للبحث عن أمثلة برمجية، لكن يفتقر إلى تقييم منهجي لجودة هذه المقتطفات
  3. قيود محركات البحث: بالرغم من أن Google تملك أكثر من 200 عامل ترتيب، إلا أن الصفحات ذات الترتيب الأعلى قد تحتوي على أمثلة برمجية ذات جودة منخفضة

أهمية البحث

  • إعادة استخدام المقتطفات البرمجية يمكن أن تقلل من وقت مهام البرمجة وتسرع عملية التطوير
  • تمتلك Google أكثر من 90% من حصة سوق محركات البحث، لكن جودة ترتيب الأكواد في محركات البحث الأخرى غير معروفة
  • يجب فهم العلاقة المتبادلة بين قابلية القراءة والفهم: قابلية القراءة مرتبطة بفهم بناء الجملة، والفهم مرتبط بالجوانب الدلالية

مثال الدافع

تستشهد الورقة بحالة بحثية من Hora: عند البحث في Google عن "File.mkdirs examples"، يحتل مقتطف Tutorialspoint ترتيباً أعلى بسبب احتوائه على شرح باللغة الطبيعية مشابه للاستعلام، رغم أن مؤشرات قابلية القراءة وإعادة الاستخدام أقل.

المساهمات الأساسية

  1. أول دراسة مقارنة منهجية: تحليل مقارن واسع النطاق لقابلية القراءة والفهم للمقتطفات البرمجية الموصى بها من ثلاثة محركات بحث رئيسية (Google و Yahoo! و Microsoft Bing)
  2. بناء مجموعة بيانات واسعة النطاق: جمع 47,400 رابط ويب لـ 9,480 استعلام، يغطي 5,355 موقع مختلف
  3. إطار تحليل متعدد الأبعاد: اقتراح طريقة تحليل قائمة على ثلاثة متغيرات مستقلة (الترتيب، محرك البحث، وموقع التوصية)
  4. النتائج التجريبية: إثبات فرضيتين مهمتين: المقتطفات ذات الترتيب الأعلى ليست بالضرورة ذات قابلية قراءة/فهم أعلى؛ توجد فروقات كبيرة في جودة الأكواد بين مواقع التوصية المختلفة
  5. توحيد معايير قياس الفهم: اقتراح طريقة معيارية لتحويل التعقيد المعرفي إلى الفترة 0,1

شرح المنهجية

تعريف المهمة

المدخلات: عبارات استعلام متعلقة بالبرمجة المخرجات: درجات قابلية القراءة والفهم للمقتطفات البرمجية القيود: تحليل مقتطفات Java فقط، مع الأخذ في الاعتبار أفضل 5 نتائج بحث

معمارية تصميم البحث

يستخدم البحث طريقة من خمس خطوات:

  1. اختيار الاستعلامات المدخلة: جمع 10,000 استعلام من المستخدمين من أداة CROKAGE
  2. جمع أفضل n صفحة ويب: الحصول على أفضل 5 صفحات ويب موصى بها من Google و Yahoo! و Bing
  3. استخراج المقتطفات البرمجية: استخراج مقتطفات Java من المواقع المختارة
  4. حساب المؤشرات: حساب درجات قابلية القراءة والفهم
  5. طريقة التحليل: استخدام اختبار ANOVA واختبار Tukey للتحليل الإحصائي

التنفيذ التقني الرئيسي

استراتيجية جمع البيانات

طريقة استخراج الأكواد

  • StackOverflow: استخراج مقتطفات Java من الإجابات المقبولة
  • المواقع الأخرى: استخدام التعبيرات النمطية للبحث عن الأكواد المصدرية في علامات HTML التي تحتوي على "example" و "Java"

مؤشرات التقييم

مقياس قابلية القراءة:

  • استخدام نموذج التنبؤ المقترح من قبل Scalabrino وآخرين
  • يتضمن مؤشرات التعليقات والاتساق في المعرّفات والتماسك النصي وعدد المعاني والمفاهيم
  • نطاق الإخراج: 0,1، حيث 0 يعني قابلية قراءة منخفضة و 1 يعني قابلية قراءة عالية

مقياس الفهم:

  • بناءً على التعقيد المعرفي المقترح من قبل Campbell
  • صيغة التوحيد:
understandability(cs_i) = {
    1 - #cc/#mcc  if #cc < 15
    0.0           otherwise
}

حيث #cc هي قيمة التعقيد المعرفي، و #mcc=15 هي القيمة الموصى بها كحد أقصى

إعداد التجربة

تفاصيل مجموعة البيانات

  • مصدر الاستعلامات: استعلامات المستخدمين من أداة CROKAGE، من أكثر من 80 دولة
  • حجم البيانات: 9,480 استعلام صحيح، 47,400 رابط ويب
  • تغطية الموقع: 5,355 موقع مختلف
  • قيود اللغة: لغة البرمجة Java فقط

طريقة التقييم

  • التحليل الإحصائي: استخدام تحليل التباين (ANOVA)، مستوى الثقة 5% (p-value<0.05)
  • المقارنة المتعددة: استخدام اختبار Tukey لتحديد الفروقات المعنوية بين المجموعات
  • تصميم التجميع:
    • محرك البحث: 3 مجموعات (Google, Bing, Yahoo!)
    • الترتيب: 5 مجموعات (من top-1 إلى top-5)
    • الموقع: 5 مجموعات (المواقع الخمسة المختارة)

معالجة البيانات المسبقة

  • إزالة الاستعلامات المكررة والاستعلامات المعلمة يدويًا كغير قابلة للتطبيق
  • تصفية الاستعلامات التي تحتوي على أقل من 5 توصيات ويب
  • استخدام التعبيرات النمطية لاستخراج الروابط من علامات HTML

نتائج التجربة

النتائج الرئيسية

RQ1: العلاقة بين ترتيب محرك البحث وجودة الأكواد

  • نتائج ANOVA: قابلية القراءة p-value=0.0034، الفهم p-value=0.0003
  • النتيجة الرئيسية: مقتطفات Top-2 تتفوق بشكل عام على Top-1 و Top-4 و Top-5 من حيث قابلية القراءة والفهم
  • حجم التأثير: صغير (-0.02 إلى 0.01 قابلية القراءة، -0.01 إلى 0.02 الفهم)
  • الخلاصة: تؤكد الفرضية H1، المقتطفات ذات الترتيب الأعلى ليست بالضرورة أكثر قابلية للقراءة أو الفهم

RQ2: المقارنة بين محركات البحث

  • نتائج ANOVA: قابلية القراءة p-value=1.207e-12، الفهم p-value=0.0364
  • ترتيب قابلية القراءة: Google > Microsoft Bing > Yahoo!
  • الفهم: Google أفضل قليلاً من Microsoft Bing
  • حجم التأثير: تأثير صغير (-0.02 إلى 0.02 قابلية القراءة، -0.01 إلى 0.005 الفهم)

RQ3: المقارنة بين مواقع التوصية

  • نتائج ANOVA: قابلية القراءة والفهم p-value<2.2e-16
  • أفضل قابلية قراءة: geeksforgeeks
  • أفضل فهم: tutorialspoint
  • حجم التأثير: تأثير متوسط لقابلية القراءة (-0.15 إلى 0.10)، تأثير صغير للفهم (-0.04 إلى 0.08)

نتائج التحليل التفصيلية

تحليل قابلية القراءة

أسباب تفوق GeeksforGeeks:

  • كل سطر كود مصحوب بتعليق واحد
  • تماسك عالي، كل مفهوم مستقل
  • مثال: استعلام "How to append to a string?"
    • GeeksforGeeks: درجة قابلية القراءة 0.94
    • Tutorialspoint: درجة قابلية القراءة 0.44

قيود تحليل الفهم

  • 58.3% من المقتطفات البرمجية تحقق أقصى درجة فهم
  • معظم المقتطفات عبارة عن استدعاءات API بسيطة، تفتقر إلى هياكل تحكم معقدة
  • يُنصح باستخدام هذا المؤشر بشكل أفضل للملفات الشبيهة بمستودعات Git الكاملة

الأعمال ذات الصلة

أبحاث قابلية قراءة الأكواد

  • Hora (2021): دراسة كيفية ترتيب Google للمقتطفات البرمجية بناءً على خصائص قابلية القراءة وإعادة الاستخدام
  • Scalabrino وآخرون: اقتراح نموذج التنبؤ بقابلية قراءة الأكواد
  • Buse و Weimer: تعلم مقاييس قابلية قراءة الأكواد

البحث والتوصية بالأكواد

  • أداة API Sonar: استخدام خصائص قابلية القراءة لترتيب المقتطفات البرمجية
  • طريقة Muse: استخدام خصائص قابلية القراءة لترتيب أمثلة الأكواد
  • CROKAGE: محرك بحث أكواد يستخرج المقتطفات البرمجية والشروحات من StackOverflow

تقييم جودة الأكواد

  • Treude و Robillard: اكتشاف أن 49% فقط من مقتطفات StackOverflow البرمجية موضحة بالكامل بذاتها
  • التعقيد المعرفي: طريقة قياس الفهم المقترحة من قبل Campbell

الخلاصات والنقاش

الخلاصات الرئيسية

  1. مفارقة الترتيب: ترتيب محرك البحث غير مرتبط بالكامل بجودة الأكواد، قد تكون المقتطفات Top-2 و Top-3 ذات جودة أعلى
  2. الفروقات بين محركات البحث: يتمتع Google بأفضل أداء من حيث قابلية القراءة، لكن الميزة محدودة
  3. تمايز جودة الموقع: توجد فروقات جودة كبيرة بين مواقع التوصية، مواقع البرامج التعليمية (GeeksforGeeks) تتمتع بقابلية قراءة أفضل
  4. قيود الفهم: مؤشر الفهم الحالي له قدرة تمييز محدودة للمقتطفات البرمجية البسيطة

الأهمية العملية

  • إرشادات المطورين: يُنصح بإعطاء الأولوية للمقتطفات البرمجية من مواقع البرامج التعليمية مثل GeeksforGeeks
  • استراتيجية البحث: لا يجب الاعتماد فقط على الترتيب لاختيار المقتطفات البرمجية، بل يجب النظر في مؤشرات الجودة الشاملة
  • تحسين الأدوات: توفير معايير مرجعية لتقييم الجودة لمحركات البحث عن الأكواد

القيود

  1. تغطية الموقع محدودة: تحليل 5 مواقع فقط، تمثل 34%-38.1% من مواقع التوصية
  2. استراتيجية الاستخراج: استخراج مقتطف واحد فقط من كل صفحة ويب
  3. تأثير تعديل الاستعلام: قد يؤثر إضافة "example in java" على نتائج البحث
  4. دقة المؤشرات: قد تحتوي أدوات قابلية القراءة والفهم على أخطاء

الاتجاهات المستقبلية

  1. البحث النوعي: فهم أعمق لأسباب الفروقات في درجات قابلية القراءة والفهم
  2. توسيع البحث: تضمين المزيد من المواقع أو تطوير طريقة استخراج أكواد عامة
  3. دعم لغات متعددة: التوسع إلى لغات برمجة أخرى
  4. معالجة مقتطفات متعددة: تطوير طرق استكشافية للتعامل مع مقتطفات متعددة على صفحة واحدة

التقييم المتعمق

المميزات

  1. حداثة البحث: أول دراسة منهجية مقارنة لجودة المقتطفات البرمجية من محركات البحث الرئيسية
  2. حجم البيانات: دراسة تجريبية واسعة النطاق، بيانات كافية، نتائج موثوقة
  3. صرامة الطريقة: استخدام طرق تحليل إحصائي ناضجة، النتائج ذات دلالة إحصائية
  4. القيمة العملية: توفير إرشادات تجريبية لاختيار المطورين للمقتطفات البرمجية
  5. قابلية التكرار: توفير حزمة كاملة للتكرار ووصف تفصيلي للطريقة

أوجه القصور

  1. قيود المؤشرات: مؤشر الفهم له قدرة تمييز محدودة للمقتطفات البرمجية البسيطة
  2. انحياز اختيار الموقع: تحليل 5 مواقع رئيسية فقط، قد يكون هناك انحياز في الاختيار
  3. قيود اللغة: النظر في لغة Java فقط، قابلية التعميم محدودة
  4. الحداثة: نتائج البحث لها حداثة زمنية، قد تتغير الخلاصات بمرور الوقت

التأثير

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

السيناريوهات القابلة للتطبيق

  • تقييم الجودة عند قيام مطورو البرمجيات بالبحث عن الأكواد
  • تحسين خوارزميات ترتيب محركات البحث عن الأكواد
  • التحكم في جودة أمثلة الأكواد في التعليم البرمجي
  • تحليل جودة الأكواد في أبحاث هندسة البرمجيات

المراجع

تستشهد الورقة بـ 23 مرجع ذي صلة، تتضمن بشكل أساسي:

  • طرق قياس قابلية القراءة والفهم للأكواد
  • أبحاث البحث والتوصية بالأكواد
  • تحليل جودة أكواد StackOverflow
  • أبحاث آليات ترتيب محركات البحث

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