اللغات والتحقق · مقالة منظور 07

التحسين بوصفه تنقيحًا: إثبات ما يجوز للمُصرِّف تغييره

يُبرَّر التحسين بالحفاظ على السلوك القابل للملاحظة، لا بالتشابه الجبري.

الاستشهاد بالمقال

قد تتضمن ترجمة الذكاء الاصطناعي أخطاء. يُرجى التحقق بالرجوع إلى النص الأصلي.

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

رسم تحريري مفاهيمي لمقالة «التحسين بوصفه تنقيحًا: إثبات ما يجوز للمُصرِّف تغييره»
رسم مفاهيمي · ImageGen المدمج · ليس دليلًا تجريبيًا

الملخص

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

مسألة التحسين مقيَّدة

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

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

ثلاثة نهوج للتحويل الجدير بالثقة

يعرض عمل Leroy على CompCert مُصرِّفًا متحققًا منه صوريًا، ويشرح كيف يدعم الحفاظ على الدلالات الثقة في البرمجيات الحرجة المُصرَّفة. وتصف ورقة LLVM الأصلية تمثيلًا مشتركًا منخفض المستوى وإطارًا للتحليل والتحويل. ويوفر Alive2 تحققًا محدودًا من صحة الترجمة للتمثيل الوسيط في LLVM، فيفحص تحويلات بعينها مع ضبط استهلاك الموارد.

تعمل هذه النهوج على نطاقات مختلفة. فبرهان المُصرِّف يستدل بشأن التحويلات التي يغطيها مسار التصريف المتحقق منه. أما التحقق من صحة الترجمة فيفحص زوجًا محددًا قبل التحويل وبعده، في ظل الدلالات والحدود التي ينمذجها المدقِّق. ويتيح التمثيل الوسيط التعبير عن التحليلات والتحويلات، لكنه لا يجعلها صحيحة تلقائيًا. وتهم هذه الفروق حين يدعي مشروع أن استخدام تمثيل وسيط مألوف أو تشغيل مدقِّق قد حقق صحة سلسلة أدواته بأكملها. [1], [2], [3]

المساواة ليست دائمًا العلاقة المناسبة

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

تختلف التفاصيل باختلاف اللغة. فإذا كان للمصدر سلوك غير معرَّف، فقد لا تفرض اللغة أي متطلب على ذلك التنفيذ، لكن هذا لا يجيز تغيير التنفيذات ذات السلوك المعرَّف في مواضع أخرى. ويجب على المدقِّق نمذجة هذا التمييز بدل التعامل مع السلوك غير المعرَّف بوصفه قيمة عادية اعتباطية. وبالمثل، لا يمكن مبادلة قيمة poison داخلية في تمثيل وسيط بعدد صحيح ثابت. وينبغي للمراجعة بيان العلاقة الدلالية الفعلية وتجنب افتراض أن كل القيم في بُنى بيانات المُحسِّن تدل على قيم آلة عادية. [1], [2]

مثال مضاد بثمانية بتات لإعادة كتابة مغرية

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

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

ضابط إيجابي في الحساب بترديد

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

قد تفرض لغة المصدر شروطًا إضافية على الإزاحة، منها مقدار الإزاحة المسموح به ونوع المعامل بعد ترقيته. يثبت النموذج المحلي مقدار الإزاحة عند واحد، ويعرِّف العملية مباشرة على متجهات بعرض b بتات. ويتطلب تعميم نتيجته على شيفرة مصدر بلغة C أو C++ فحص تلك التفاصيل اللغوية. وهذا التقييد الصريح أفضل من تقديم متطابقة لمتجهات البتات بوصفها إعادة كتابة عامة على مستوى المصدر.

يحافظ حساب الفاصلة العائمة على معلومات مختلفة

لتكن a قيمة موجبة كبيرة ذات فاصلة عائمة. في الحساب الدقيق، يتساوى التعبيران: a زائد سالب a ثم زائد واحد، وa زائد الكمية المكوَّنة من سالب a زائد واحد. وفي حساب binary64 مع التقريب إلى الأقرب، يُقيَّم التعبير الأول إلى واحد، بينما قد يُقيَّم الثاني إلى صفر عندما يُفقد الواحد بسبب تقريب الناتج الوسيط سالب a زائد واحد.

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

الخطأ العددي كمية على مستوى التطبيق

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

يقارن التقييم الصحيح البرنامج المحوَّل بمرجع معلن ومعيار خطأ مناسب للمهمة. ويجيب الخطآن المطلق والنسبي عن سؤالين مختلفين قرب الصفر. وقد تتطلب قابلية إعادة الإنتاج ترتيبًا حتميًا حتى حين يكون ترتيب آخر أدق. لذلك ينبغي لدراسة المُصرِّف التمييز بين السماح الدلالي والجودة العددية وقابلية التكرار. فالخيار اللغوي المخفف يسمح بتغييرات معينة؛ لكنه لا يثبت قبول تلك التغييرات لادعاء علمي بعينه.

التحقق من صحة الترجمة يحتاج إلى بيان صادق للحالة

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

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

تبدأ مقارنة الأداء بعد إثبات الصحة

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

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

مُخرَج قابل للمراجعة لكل تحويل

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

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

الخلاصة: الدلالات جزء من التحسين

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

توضح الشواهد غير الموقَّعة وشواهد الفاصلة العائمة لماذا لا يكفي الجبر المألوف عبر تمثيلات الآلة. ويبين الضابط الإيجابي أن الاستدلال الدقيق على مستوى التمثيل لا يزال قادرًا على تبرير تحويلات مفيدة. وتسهم البراهين الشاملة للمُصرِّف والتحقق من صحة الترجمة بأشكال مختلفة من الضمان؛ ويعرض التناول الصارم نطاقها وحالاتها غير المدعومة وصلتها بالمُخرَجات إلى جانب الشيفرة الناتجة.

نُفِّذ محليًا · نطاق محدود

فحص شامل لإعادة كتابة بعرض 8 بتات ومثال مضاد في binary64

تعبيرات حسابية معلنة؛ دون ملف تنفيذي لمُصرِّف أو نموذج للسلوك غير المعرَّف في لغة المصدر.

نجح 258 من التوكيدات. تتحقق هذه الفحوص من المثال المقدم، لا من الأنظمة المستشهد بها.

افحص الشاهد المسجَّل
{
  "bad_inputs": [
    255
  ],
  "float_results": [
    1.0,
    0.0
  ]
}

نموذج تحليلي معلن

أربع معادلات وافتراضات صريحة

(x+1) mod 2b>x⟺x<2b−1(x+1)\bmod 2^b>x\quad\Longleftrightarrow\quad x<2^b-1

(1) مقارنة متجهات بتات غير موقَّعة حيث 0 <= x < 2^b؛ يفشل استبدالها بالقيمة الصادقة عند القيمة القصوى.

(2x) mod 2b=(x≪1) mod 2b(2x)\bmod 2^b=(x\ll1)\bmod 2^b

(2) متطابقة لمتجهات البتات بمقدار إزاحة ثابت. تتطلب ترقيات الأنواع وقواعد الإزاحة في لغة المصدر فحصًا منفصلًا.

fl⁡(fl⁡(a−a)+1)≠fl⁡(a+fl⁡(−a+1))\operatorname{fl}(\operatorname{fl}(a-a)+1)\ne\operatorname{fl}(a+\operatorname{fl}(-a+1))

(3) يظهر شاهد في binary64 مع التقريب إلى الأقرب عند a = 10^16؛ القيمة اليسرى هي 1 واليمنى هي 0.

Beh⁡(T)⊆Beh⁡(S)\operatorname{Beh}(T)\subseteq\operatorname{Beh}(S)

(4) مخطط لتنقيح الهدف بالنسبة إلى المصدر، مع معالجة للسلوك غير المعرَّف والظواهر القابلة للملاحظة والانتهاء بحسب اللغة.

أمثلة مُنشأة · بيانات قابلة لإعادة الإنتاج

افحص الحجة الكمية

حُسبت هذه المنحنيات من النماذج المعلنة. وهي ليست ملاحظات مأخوذة من الدراسات المستشهد بها. يتضمن كل شكل بياناته العددية ونسخته المتجهية.

قيمة حدودية واحدة تُبطل تحسينًا. حساب غير موقَّع بترديد بعرض 8 بتات. عند x = 255 تلتف الزيادة إلى الصفر، لذا فإن استبدال (x + 1 > x) بالقيمة الصادقة غير صحيح وفق هذه الدلالات.
الشكل 1. قيمة حدودية واحدة تُبطل تحسينًا. حساب غير موقَّع بترديد بعرض 8 بتات. عند x = 255 تلتف الزيادة إلى الصفر، لذا فإن استبدال (x + 1 > x) بالقيمة الصادقة غير صحيح وفق هذه الدلالات.
يغيّر ترتيب التقييم نتائج الفاصلة العائمة. حسابات binary64 وفق نمط IEEE في بيئة NumPy المقدمة. هذه التعبيرات المُنشأة ليست اختبار أداء معياريًا لـ LLVM أو CompCert.
الشكل 2. يغيّر ترتيب التقييم نتائج الفاصلة العائمة. حسابات binary64 وفق نمط IEEE في بيئة NumPy المقدمة. هذه التعبيرات المُنشأة ليست اختبار أداء معياريًا لـ LLVM أو CompCert.

أي دليل يجيب عن أي سؤال؟

الطريقةوحدة الضمانالقيد
التصريف المتحقق منهمسار المُصرِّف والدلالات المشمولةمكونات غير متحقق منها خارج نطاق المبرهنة
التحقق من صحة الترجمةزوج محدد من المصدر والهدفالحدود والتراكيب غير المدعومة ونتائج محلل القيود
اختبار شامل لمتجهات البتاتكل مدخل لنموذج منتهٍ ثابتعروض بتات أو دلالات مصدر مختلفة
اختبار معياري عدديالخطأ والكلفة على المدخلات المعلنةتوزيعات غير مشاهدة وعقود متغيرة

بروتوكول مقترح للتحقق من الصحة

هذا تصميم تقييم مقترح. لم يُجرَ أي اختبار أداء معياري لنظام إنتاجي أو عتاد. والنماذج المنتهية المنفذة بصورة منفصلة موثقة في الفحوص القابلة للتنفيذ.

  1. سجّل النوع الحسابي وسلوك الفيض والآثار القابلة للملاحظة.
  2. افحص إعادات الكتابة الصحيحة وغير الصحيحة عمدًا على المجال المنتهي نفسه.
  3. احتفظ بالأمثلة المضادة بوصفها حالات ثابتة لاختبارات الانحدار.
  4. تعامل مع انتهاء مهلة المدقِّق والحالات غير المدعومة بوصفها نتائج غير محسومة.
  5. قِس الخطأ العددي بالنسبة إلى مرجع مصرح به قبل قبول إعادة التجميع.
  6. اختبر أداء العقود المتكافئة مع تسجيل إصدارات المُصرِّف وأعلامه والشيفرة المولَّدة وعبء العمل.

ما تثبته المصادر الأولية

Xavier Leroy · 2009 [1]

الإسهام. يوضح CompCert الاستدلال القائم على الحفاظ على الدلالات لمُصرِّف واقعي متحقق منه.

حدود النطاق. يتحدد الضمان بمسار التصريف المتحقق منه ودلالات المصدر والهدف المصرح بها.

موضع الدليل في المصدر. الملخص ومناقشة الحفاظ على الدلالات.

Nuno P. Lopes, Juneyoung Lee, Chung-Kil Hur et al. · 2021 [2]

الإسهام. يفحص Alive2 تحويلات LLVM عبر التحقق المحدود من صحة الترجمة.

حدود النطاق. تظل الحدود والحالات غير المدعومة ونتائج محلل القيود غير الحاسمة ذات صلة.

موضع الدليل في المصدر. الملخص ونطاق التحقق من الصحة.

C. Lattner, V. Adve · 2004 [3]

الإسهام. يوفر LLVM تمثيلًا مشتركًا منخفض المستوى وإطارًا للتحليل والتحويل.

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

موضع الدليل في المصدر. الملخص وتصميم التمثيل.

حدود هذا التحليل

  • تغطي فحوص متجهات البتات تعبيرات مبسَّطة ذات ثمانية بتات، لا مُصرِّفًا مثبتًا.
  • يفترض شكل الفاصلة العائمة سلوك binary64، وليس مقارنة تجريبية بين مُصرِّفات.
  • لا تستقصي المراجعة جميع دلالات LLVM الحالية ولا كل ميزات CompCert وAlive2.
  • لا يُدَّعى أن اختبارًا منتهيًا يثبت تحويلًا لجميع الأنواع أو اللغات أو عروض البتات.

مراجعة تحليلية مركزة لثلاثة مصادر أولية تأسيسية مختارة، مع أمثلة محلولة أصلية. وليست مسحًا شاملًا أو منهجيًا للأدبيات حتى 2026. سُجلت ملاحظات الوصول إلى المصادر وإصداراتها مع قائمة المراجع.

أسئلة من شأنها تغيير الخلاصة

  1. أي شرط مسبق يجعل التحسين صحيحًا، وأين يُفرض ذلك الشرط؟
  2. هل يحافظ العقد العددي المخفف على الاستنتاج العلمي على مستوى التطبيق؟
  3. أي أجزاء من مسار التصريف والربط تظل خارج نطاق نتيجة التحقق من الصحة؟

المراجع

  1. Xavier Leroy. Formal verification of a realistic compiler. Communications of the ACM (2009). 10.1145/1538788.1538814.
  2. Nuno P. Lopes, Juneyoung Lee, Chung-Kil Hur et al.. Alive2: bounded translation validation for LLVM. Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (2021). 10.1145/3453483.3454030.
  3. C. Lattner, V. Adve. LLVM: a compilation framework for lifelong program analysis & transformation. International Symposium on Code Generation and Optimization, 2004. CGO 2004. (2004). 10.1109/cgo.2004.1281665.

الوصول إلى المصدر [1]. السجل الأولي والملخص ونصوص مختارة متاحة؛ وليس تدقيقًا شاملًا للنص الكامل أو المواد التكميلية.

الوصول إلى المصدر [2]. السجل الأولي والملخص ونصوص مختارة متاحة؛ وليس تدقيقًا شاملًا للنص الكامل أو المواد التكميلية.

الوصول إلى المصدر [3]. السجل الأولي والملخص ونصوص مختارة متاحة؛ وليس تدقيقًا شاملًا للنص الكامل أو المواد التكميلية.

رُوجعت هويات المراجع الببليوغرافية بمقارنتها مع Crossref والسجلات الأولية للناشر أو المؤلف أو المؤسسة. وتصف ملاحظات الوصول إلى المصادر والإصدارات أدناه نطاق المراجعة؛ وهي ليست تدقيقًا شاملًا للنصوص الكاملة.

التأليف والمنشأ

كتبها Codex (ذكاء اصطناعي) وأجرى لها مراجعة تقنية ذاتية. تحدد المراجع الباحثين الأصليين؛ وتُنسب الإنشاءات التحليلية وتصاميم التقييم المقترحة إلى هذه المقالة.

الأغلفة رسوم مفاهيمية مولَّدة باستخدام ImageGen. حُسبت الأشكال التقنية من نماذج معلنة أو أمثلة منتهية، مع توفير Python وCSV. وهي ليست قياسات لمنتجات منشورة أو اختبارات أداء معيارية أُعيد إنتاجها.

لا يوجد لهذه المسودة المحلية سجل لتحكيم مستقل أو قبول في مجلة. تفحص الأمثلة القابلة للتنفيذ ذات النطاق المحدود النماذج الصغيرة المصرح بها؛ وهي ليست تحققًا صوريًا من الأنظمة المستشهد بها.

مراجعة بحثية بتكليف · v5. الاستشهاد بالمقال · سجل المصدر الأصلي · سجل النشر