التقييم الجزئي

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

برنامج حاسوبيبرنامج{\displaystyle {\texttt {prog}}}يُنظر إليه على أنه عملية تحويل بيانات الإدخال إلى بيانات الإخراج:

برنامج:أناثابت×أنامتحركيا،{\displaystyle {\texttt {prog}}:I_{\text{static}}\times I_{\text{dynamic}}\to O,}

أينأناثابت{\displaystyle I_{\text{static}}}البيانات الثابتة هي جزء من بيانات الإدخال المعروفة في وقت الترجمة.

تحويلات المُقيِّم الجزئيبرنامج،أناثابت{\displaystyle \langle {\texttt {prog}},I_{\text{static}}\rangle }داخلبرنامج*:أنامتحركيا{\displaystyle {\texttt {prog}}^{*}:I_{\text{dynamic}}\to O}عن طريق الحساب المسبق لجميع المدخلات الثابتة في وقت الترجمة.برنامج*{\displaystyle {\texttt {prog}}^{*}}يُطلق عليه اسم "البرنامج المتبقي"، ومن المفترض أن يعمل بكفاءة أعلى من البرنامج الأصلي. ويُقال إن عملية التقييم الجزئي تُؤدي إلى "تبقية" البرنامج.برنامج{\displaystyle {\texttt {prog}}}لبرنامج*{\displaystyle {\texttt {prog}}^{*}}.

إسقاطات فوتامورا

ومن الأمثلة المثيرة للاهتمام بشكل خاص على استخدام التقييم الجزئي، والذي وصفه يوشيهيكو فوتامورا لأول مرة في سبعينيات القرن العشرين، [ 1 ] هو عندمابرنامج{\displaystyle {\texttt {prog}}}هو مترجم للغة برمجة .

لوأناثابت{\displaystyle I_{\text{static}}}إذا كان الكود المصدري مصممًا للتشغيل داخل هذا المفسر، فإن التقييم الجزئي للمفسر فيما يتعلق بهذه البيانات/البرنامج ينتجبرنامج*{\displaystyle {\texttt {prog}}^{*}}، وهو إصدار من المفسر يقوم بتشغيل هذا الكود المصدري فقط، مكتوب بلغة تنفيذ المفسر، ولا يتطلب إعادة توفير الكود المصدري، ويعمل بشكل أسرع من التركيبة الأصلية للمفسر والمصدر. في هذه الحالةبرنامج*{\displaystyle {\texttt {prog}}^{*}}هي في الواقع نسخة مُجمّعة منأناثابت{\displaystyle I_{\text{static}}}.

تُعرف هذه التقنية باسم إسقاط فوتامورا الأول، والذي يوجد منه ثلاثة:

  1. تخصيص مترجم لرمز مصدر معين، مما ينتج عنه ملف تنفيذي.
  2. تخصيص المُخصِّص للمُفسِّر (كما هو مُطبَّق في #1)، مما ينتج عنه مُجمِّع.
  3. تخصيص المُخصِّص لنفسه (كما هو مطبق في #2)، مما ينتج عنه أداة يمكنها تحويل أي مترجم إلى مُجمِّع مكافئ.

وقد وصفها فوتامورا باللغة اليابانية في عام 1971 [ 2 ] وباللغة الإنجليزية في عام 1983. [ 3 ]

يُعد كل من RPython الخاص بـ PyPy وإطار عمل Truffle الخاص بـ GraalVM أمثلة على مترجمات JIT في العالم الحقيقي التي تنفذ إسقاط Futamura الأول.

انظر أيضاً

مراجع

  1. ^ "البروفيسور يوشيهيكو فوتامورا" . fi.ftmr.info . تم الاسترجاع بتاريخ 28-01-2026 .
  2. "التقييم الجزئي لعملية الحساب --- نهج لمترجم-مترجم"، معاملات معهد مهندسي الإلكترونيات والاتصالات في اليابان ، 54-ج : 721-728 ، 1971
  3. فوتامورا، ي. (1983). "الحساب الجزئي للبرامج". ندوات RIMS حول علوم وهندسة البرمجيات . سلسلة محاضرات في علوم الحاسوب. المجلد 147. سبرينغر. الصفحات 1-35 . doi : 10.1007/3-540-11980-9_13 . hdl : 2433/103401 . ISBN   3-540-11980-9.

مراجع عامة

  • فوتامورا، ي. (1999). "التقييم الجزئي لعملية الحساب - مدخل إلى مُترجم-مُترجم". الحوسبة الرمزية والحسابية من الرتبة العليا . 12 (4): 381-391 . CiteSeerX 10.1.1.10.2747 . doi : 10.1023/A:1010095604496 . S2CID 12673078 .  
  • كونسيل، تشارلز؛ دانفي، أوليفييه (1993). "ملاحظات تعليمية حول التقييم الجزئي". POPL '93: وقائع الندوة العشرين لجمعية ACM SIGPLAN-SIGACT حول مبادئ لغات البرمجة . جمعية آلات الحوسبة. الصفحات 493-501 . CiteSeerX 10.1.1.114.7330 . doi : 10.1145/158511.158707 . ISBN   0897915607. S2CID 698339 .