هذه المقالة يتيمة. ساعد بإضافة وصلة إليها في مقالة متعلقة بها

لغة وسيطة (حوسبة)

من ويكيبيديا، الموسوعة الحرة
(بالتحويل من اللغة الوسيطة)
اذهب إلى التنقل اذهب إلى البحث

في علم الحاسوب، تعتبر اللغة الوسيطة (بالإنكليزية: Intermediate language) لغة الآلة المجردة و هدف تصميمها هو المساعدة في تحليل البرامج الحاسوبية.[1][2][3] يأتي المصطلح أصلا من استخدامه في المصرّفات، حيث تصرّف شيفرة المصدر الخاصة ببرنامج ما إلى شكل مناسب أكثر لتحويلات تحسين الشيفرة قبل أن يتم استخدامها لتوليد كائنات أو شيفرة مخصصة لآلة معينة. التمثيل الوسيط هي بنية بيانات او شيفرة يستخدم داخلياً بواسطة محول برمجي او آلة افتراضية لتمثيل الشيفرة المصدرية كود مصدري. تم تصميم التمثيل الوسيط لتكون مواتياً لمزيد من المعالجه مثل التحسين و الترجمة.[4] التمثيل الوسيط الجيد يجب ان يكون دقيق و قادر على تمثيل الشيفرة المصدرية دون فقدان المعلومات - ومستقلة عن اي مصدر او اللغة المستهدفة.[5] التمثيل الوسيط قد ياخذ واحداَ من عدة اشكال: في ذاكرة بنية بيانات ,او صف خاص (بالإنجليزية: Tuple) او مكدس (بنية بيانات) (بالإنجليزية:Stack) يعتمد على الشيفرة ويمكن قراءته بواسطة البرنامج.[6] وفي الحالة الاخيرة يطلق عليه ايضاً اللغة الوسيطة. يوجد مثال متعارف عليه في معظم المحولات البرمجية الحديثة حيث ان النص الخطي البشري القابل للقراءة يمثل برنامج يتحول إلى بنية رسومات (بالإنجليزية: Graph) وسيطة تسمح بتحليل التدفق (بالإنجليزية:Data-flow analysis) و إعادة ترتيب قبل إنشاء سلسلة فعلية من تعليمات وحدة المعالجة المركزية. يستخدم التمثيل الوسيط مثل هذا و يسمح لانظمة المحول البرمجي مثل :GNU Compiler Collection and LLVM ليتم اسخدامها من العديد من اللغات المصدرية المختلفة لتوليد الشيفرة للعديد من مجموعة التعليمات المتسهدفة المختلفة.

اللغة الوسيطة[عدل]

اللغة الوسيطة هي لغة آلة مجردة (بالإنجليزية:Abstract machine) مصممه للمساعدة في تحليل برامج الحاسب الالي . المصطلح ياتي من الاستخدام في محول برمجي حيث ان مصدر الشيفرة للبرنامج يتحول إلى نموذج أكثر تناسب لتحولات تحسين الشيفرة قبل ان تستخدم لتوليد ملف (بالإنجليزية:Object file) او شيفرة الآلة لإجل الآلة المستهدفة. تصميم اللغة الوسيطة يختلف تماماً عن لغة الآلة بثلاث طرق جوهرية: كل تعليمة تمثل عملية جوهرية واحده مثل : (بالإنجليزية:shift-add) لا توجد اساليب معالجة في المعالج دقيق. معلومات تدفق السيطرة (بالإنجليزية:Control flow ) قد لا تشمل في مجموعة التعليمات . عدد سجلات المعالجات (بالإنجليزية:Processor register) المتاحه قد تكون كبيره وحتى لا محدوده. التنسيق الشائع للغة الوسيطة شيفرة الثلاث العناوين (بالإنجليزية:Three-address code). المصطلح ايضاً يستخدم للاشارة إلى اللغات المستخدمة كـ وسيطة في بعض لغات البرمجه عالية المستوى التي لا تخرج ملف (بالإنجليزية:Object file) او شيفرة الآلة بنفسها (بالإنجليزية:machine code) ولكن تخرج لغات وسيطة فقط. هذه اللغة الوسيطة تقدم إلى المحول البرمجي هذه اللغة التي تخرج ملف (بالإنجليزية:Object file) او شيفرة الآلة (بالإنجليزية:machine code) جاهزة. عادةً ينفذ لتسهيل عملية التحسن او لزيادة قابلية النقل باستخدام لغة وسيطة تحتوي على محول برمجي للعديد من المعالجات و انظمة التشغيل مثل سي (لغة برمجة) (بالإنجليزية:C (programming language)) المستخدمة في التعقيد بين لغة البرمجة عالية المستوى و لغة البرمجة منخفضة المستوى مثل لغة تجميع (بالإنجليزية:Assembly language) .

اللغات[عدل]

هو ليس مصمم صريحاً كلغة وسيطة , طبيعة سي (لغة برمجة)(بالإنجليزية:C (programming language)) كتجريد التجميع و تواجدها في كل مكان كواقع بلغة النظام في شبيه يونكس (بالإنجليزية:Unix-like) و انظمة التشغيل الاخرى جعلتها شائعة في اللغة الوسيطة: إيفل (لغة برمجة) (بالإنجليزية:Eiffel (programming language)) , (بالإنجليزية:Sather) , (بالإنجليزية:Esterel) , بعض لغات ليسب (بالإنجليزية:Lisp (programming language)) ( (بالإنجليزية:Gambit (scheme implementation)) , (بالإنجليزية:(Lush (programming language)) , هاسكل (لغة برمجة) (بالإنجليزية:Haskell (programming language)) ( (بالإنجليزية:Glasgow Haskell Compiler) ) , (بالإنجليزية:Squeak) , (بالإنجليزية:Cython) , (بالإنجليزية:Seed7) , (بالإنجليزية:SystemTap) , (بالإنجليزية:Vala (programming language)) والاخرين جعلوا سي (لغة برمجة)(بالإنجليزية:C (programming language)) كلغة وسيطة. صممت المتغيرات في سي (لغة برمجة)(بالإنجليزية:C (programming language)) لتوفير مميزات كلغة تجميع محموله تتضمن (بالإنجليزية:C--) و سي (لغة برمجة)(بالإنجليزية:C (programming language)) اللغة الوسيطة. اي لغة تستهدف آلة افتراضية (بالإنجليزية:Virtual machine) او (بالإنجليزية:p-code machine) تستطيع ان تعتبر لغة وسيطة: (بالإنجليزية:Java bytecode) اللغة الوسيطة العامة لمايكروسوفت هي اللغة الوسيطة المصممه لنشر جميع المحولات البرمجية لـ (دوت نت فريموورك) قبل التجميع ثابت أو ديناميكي إلى لغة الآلة. في حين اغلب لغات الوسيطة مصممه لدعم اللغات التي كتبت بشكل ثابت , وهذا (بالإنجليزية:Parrot intermediate representation) مصمم لدعم اللغات التي كتبت متحركة - في البداية (بيرل , بايثون)(لغات برمجه). (بالإنجليزية:TIMI) هو عالي المستوى يستهدف النظام الاساسي لـ (بالإنجليزية:IBM System i). (بالإنجليزية:O-code) للغة البرمجة الأساسية المختلطة (بالإنجليزية:BCPL) ماتلاب (بالإنجليزية:MATLAB) شيفرة مقتبسة سابقاً. (بالإنجليزية:Microsoft P-Code). (بالإنجليزية:GNU Compiler Collection) يستخدم عدة لغات وسيطة داخلياً لتبسيط التنقل والتجميع.

مراجع[عدل]

  1. ^ "CISC 471 Compiler Design"by Uli Kremer نسخة محفوظة 20 يوليو 2011 على موقع واي باك مشين.
  2. ^ The radare2 contributors. "ESIL". radare2 project. اطلع عليه بتاريخ 17 يونيو 2015. 
  3. ^ "Bitcode (iOS, watchOS)". Hacker News. 10 June 2015. اطلع عليه بتاريخ 17 يونيو 2015. 
  4. ^ Walker، David. "CS320: Compilers: Intermediate Representation" (Lecture slides). اطلع عليه بتاريخ 12 فبراير 2016. 
  5. ^ Chow، Fred (2013-11-22). "The Challenge of Cross-language Interoperability". ACM Queue. 11 (10). اطلع عليه بتاريخ 12 فبراير 2016. 
  6. ^ Toal، Ray. "Intermediate Representations". اطلع عليه بتاريخ 12 فبراير 2016. 
Computer.svg
هذه بذرة مقالة عن الحاسوب أو العاملين في هذا المجال بحاجة للتوسيع. شارك في تحريرها.