مترجم من مصدر إلى مصدر

مترجم من مصدر إلى مصدر، مترجم عام (بالإنجليزية: source-to-source translator, source-to-source compiler (S2S compiler), transcompiler, or transpiler)‏[1] [2] هو نوع من المترجمات يأخذ كود المصدر لبرنامج مكتوب بلغة برمجة كمدخله وينتج كود مصدر مكافئ بنفس لغة البرمجة أو بلغة مختلفة. يقوم مترجم من مصدر إلى مصدر بالتحويل بين لغات البرمجة التي تعمل عند نفس مستوى تقريبًا، بينما يترجم المترجم التقليدي من لغة برمجة ذات مستوى أعلى إلى لغة برمجة ذات مستوى أقل، على سبيل المثال قد يقوم مترجم من مصدر إلى مصدر بترجمة برنامج من بيثون Python إلى جافاسكريبت JavaScript ، بينما يترجم مترجم تقليدي من لغة مثل سي C إلى المجمع أو جافا Java إلى البايت كود، [3] سيأخذ المترجم الموازي التلقائي بشكل متكرر في برنامج لغة عالية المستوى كمدخل ثم يقوم بتحويل الكود وإضافة تعليق توضيحي له مع التعليقات التوضيحية للكود المتوازي (مثل OpenMP) أو تركيبات اللغة (مثل عبارات فورتران فور كال) .[4]

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

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

هناك امثلة على مترجمات من مصدر إلى مصدر مثل

مراجع

عدل
  1. ^ ARC-Softwaresystems (Jun 1988). "Aus BASIC mach C: B→C Transpiler" [Turn BASIC into C: B→C Transpiler]. Amiga-Magazin [الإنجليزية] - Das Computermagazin für Amiga-Fans (Advertisement) (بالألمانية). Esslingen, Germany: Markt & Technik Verlag Aktiengesellschaft. Vol. 1988, no. 6. p. 101. ISSN:0933-8713. Archived from the original on 2020-02-01. Retrieved 2020-01-18. […] Achtung C- und بيسيك-Programmierer! […] Jetzt gibt es den B→C TRANSPILER das einzigartige Umwandlungs-Software-System von ARC […] Der B→C TRANSPILER übersetzt lauffähige AMIGA-Basicprogramme in compilierbaren C-Code. […] Durch Spezialbefehle kann C-Code in Basicproqramme direkt integriert werden. […] Basic-Befehle werden erweitert transpiliert. (HAM-Modus، IFF, usw. werden unterstützt). […] Mit diesem Konzept neuester Generation verbindet der B→C TRANSPILER auf einzigartige Weise die Vorteile eines Interpreters mit denen eines Compilers […] [1]
  2. ^ Sector 7 Software Limited (7 ديسمبر 1993) [1992-09-22]. "Transpiler". مكتب الولايات المتحدة لبراءات الاختراع والعلامات التجارية. Class 9 (ط. 1). Bedford, Bedfordshire, UK: مكتب الولايات المتحدة لبراءات الاختراع والعلامات التجارية. ج. 1157. ص. TM 81. SN 74-316.610. مؤرشف من الأصل في 2020-02-01. اطلع عليه بتاريخ 2020-01-18. […] Priority claimed under Sec. 44(D) on United Kingdom Application No. 1495953, filed 1992-03-31 Reg. No. A1495953, dated 1992-03-31, expires 1999-03-31. For computer software and programs (U.S. Cl. 38). First use 1991-08-01, in commerce 1991-08-01.{{استشهاد بخبر}}: صيانة الاستشهاد: أسماء عددية: قائمة المؤلفين (link) (NB. This company develops products such as VX/BASIC, a BASIC-to-C transpiler for نظام ذاكرة افتراضية مفتوح. Despite their claim, their's is not the first public use of the term transpiler, see f.e. ARC's BASIC-to-C transpiler for the أميغا in 1988.)
  3. ^ "Transpiler". devopedia.org. مؤرشف من الأصل في 2019-11-05. اطلع عليه بتاريخ 2019-06-22.
  4. ^ "Types of compilers". compilers.net. 1997–2005. مؤرشف من الأصل في 2019-07-19. اطلع عليه بتاريخ 2010-10-28.
  5. ^ Fowler، Martin (12 فبراير 2013). "Transparent Compilation". مؤرشف من الأصل في 2020-01-01. اطلع عليه بتاريخ 2013-02-13.
  6. ^ Lenz، John؛ Fitzgerald، Nick (11 فبراير 2011). "Source Map Revision 3 Proposal - Better bidirectional mapping". مؤرشف من الأصل في 2019-10-30. اطلع عليه بتاريخ 2020-01-19.
  7. ^ Seddon، Ryan (21 مارس 2012). "Introduction to JavaScript Source Maps". html5rocks.com. مؤرشف من الأصل في 2019-12-09. اطلع عليه بتاريخ 2015-01-21.