تحويل البرنامج

تحويل البرنامج هو أي عملية تأخذ برنامج حاسوب وتولد برنامجًا آخر. في كثير من الحالات، يُشترط أن يكون البرنامج المُحوَّل مكافئًا دلاليًا للبرنامج الأصلي، وذلك بالنسبة لدلالات رسمية محددة ، وفي حالات أقل، ينتج عن التحويل برامج تختلف دلاليًا عن البرنامج الأصلي بطرق يمكن التنبؤ بها. [ 1 ]

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

من المتطلبات العملية لأنظمة تحويل الشيفرة المصدرية قدرتها على معالجة البرامج المكتوبة بلغة برمجة معينة بكفاءة . يتطلب هذا عادةً دمج واجهة أمامية كاملة للغة البرمجة المعنية، تشمل تحليل الشيفرة المصدرية ، وبناء تمثيلات داخلية لهياكل الشيفرة، وفهم معاني رموز البرنامج، وإجراء تحليلات ثابتة مفيدة ، وإعادة توليد شيفرة مصدرية صالحة من تمثيلات البرنامج المُحوّلة. قد تكون مشكلة بناء ودمج واجهات أمامية مناسبة للغات التقليدية (مثل Java و C++ و PHP وغيرها) بنفس صعوبة بناء نظام تحويل البرامج نفسه، نظرًا لتعقيد هذه اللغات. ولكي يكون نظام التحويل واسع الانتشار، يجب أن يكون قادرًا على التعامل مع العديد من لغات البرمجة المستهدفة، وأن يوفر وسيلة لتحديد واجهات أمامية خاصة بكل لغة. [ 3 ] يُعد Spoon [ 4 ] مثالًا على مكتبة تحويل برامج خاصة بلغة Java ، تعالج هذا التحدي من خلال توفير واجهة أمامية كاملة للغة Java، وعرض واجهة برمجة تطبيقات (API) قائمة على شجرة بناء الجملة المجردة (AST) لتنفيذ تحليلات وتحويلات شيفرة Java المصدرية.

يُعدّ مفهوم تحسين البرامج تعميمًا لمفهوم التكافؤ الدلالي : يُعتبر برنامج ما تحسينًا لبرنامج آخر إذا انتهى عند جميع الحالات الابتدائية التي ينتهي عندها البرنامج الأصلي، مع ضمان أن ينتهي عند كل حالة من هذه الحالات عند حالة نهائية محتملة للبرنامج الأصلي. بعبارة أخرى، يكون تحسين البرنامج أكثر تحديدًا وأكثر حتمية من البرنامج الأصلي. إذا كان برنامجان تحسينين لبعضهما البعض، فإنهما متكافئان.

انظر أيضاً

مراجع

  1. وارد، مارتن (1989). إثبات تحسينات وتحويلات البرامج (أطروحة دكتوراه). جامعة أكسفورد.{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط )
  2. كوردي، جيمس ر. (2006). "لغة تحويل المصدر TXL". علم برمجة الحاسوب . 61 (3): 190-210 . doi : 10.1016/j.scico.2006.04.002 .
  3. ^ برافنبور ، مارتن. كاليبيرج، كارل تريجفي؛ فيرماس، روب؛ فيسر، إيلكو (2008). “Stratego/XT 0.17. لغة ومجموعة أدوات لتحويل البرنامج”. علم برمجة الحاسوب . 72 ( 1 – 2): 52 – 70. دوى : 10.1016/j.scico.2007.11.003 .
  4. باولاك، رينو؛ مونبيروس، مارتن؛ بيتيبري، نيكولاس؛ نوغيرا، كارلوس؛ سينتورييه، ليونيل (2016). "SPOON: مكتبة لتنفيذ تحليلات وتحويلات شفرة مصدر جافا". البرمجيات: الممارسة والخبرة . 46 (9): 1155-1179 . doi : 10.1002/spe.2346 .