لغة مفسرة
في البرمجة، [1] لغة البرمجة المُفسرة (بالإنجليزية: Interpreted Language) هي لغة البرمجة التي لا تترجم البرامج المكتوبة بها إلى لغة الآلة الخاصة بالمعالج، [2] ولكنها تحتاج أن تُفسر باستخدام برنامج يدعى المفسر لتنفيذ البرامج المكتوبة بها. نظرياً، يمكن لأي لغة برمجة أن تكون مترجمة أو مفسرة، ولذا فالتفرقة بين اللغات المُجمّعة والمفسرة هي فقط حسب الطريقة الشائعة مع تلك اللغات، وليس ذلك بسبب خاصية داخلية في اللغة نفسها.[3] [4][5]
العديد من لغات البرمجة يمكنها العمل بالمفسرات وبالمترجمات، مثل ليسب، باسكال، سي، بيسيك وبايثون. بينما جافا مثلاً تُحول إلى صيغة يُفترض أن تٌفسر، لكن تستخدم الترجمة في الوقت المناسب لتحويل تلك الصيغة إلى لغة آلة. أما لغات الدوت نت فهي عادةً تترجم إلى اللغة الوسيطة المشتركة (بالإنجليزية: CIL) والتي تترجم عادة إلى لغة الآلة، ولكن مع ذلك توجد آلات افتراضية قادرة على تفسير اللغة الوسيطة المشتركة. العديد من تنفيذات ليسب تجمع ما بين الكود المترجم والمفسر.
اللغات المفسرة واللغات المجمّعة
عدليمككنا التفريق بين اللغات المفسرة واللغات المجمّعة عن طريق المثال البسيط التالي: لنفرض أن لدينا شخص يلقي خطاب باللغة الإنجليزية، هناك طريقتان لترجمة ما يقوله:
- إما أن يقوم المترجم بترجمة ما يقوله المتحدث أولاً بأول: أي قراءة مقطع بلغته ثم ترجمته: وهذا يمثل حالة اللغة المفسرة
- أو أن يقوم المتحدث بإلقاء خطابه كاملاً، ثم يلقي المترجم ترجمة كاملة لهذا الخطاب بعد أن ينهي المتحدث كلامه: وهذا يمثل حالة اللغات المجمّعة
مميزات لغات البرمجة المفسرة
عدلاللغات المفسرة تعطي مرونة إضافية عن اللغات المترجمة. ومن الميزات التي يكون تنفيذها أسهل في حالة التفسير عنه في حالة الترجمة:
- عدم الاعتماد على المنصة التي يتم التشغيل عليها
- القدرة على تغيير التعامل مع أنواع البيانات أثناء التنفيذ (بالإنجليزية: Reflection)
- تحديد نوع البيانات المستخدم في وقت التشغيل فقط (بالإنجليزية: Dynamic Typing)
- صغر حجم البرامج، وذلك لأن المفسر تكون له حرية اختيار التعليمات (بالإنجليزية: Instructions) التي يتحول إليها البرنامج
- القدرة على تحديد وتغيير مجال المتغير (بالإنجليزية: Variable Scope) في وقت التنفيذ
عيوب لغات البرمجة المفسرة
عدلالعيب الرئيسي في تفسير لغات البرمجة هو أنه أبطأ بكثير عند التنفيذ من تنفيذ لغة الآلة مباشرةً في المعالج عند اللغات المترجمة. وقد تستخدم الترجمة في الوقت المناسب لتحسين الأداء عن طريق ترجمة الأجزاء المكررة من الكود المفسر إلى لغة الآلة.
أمثلة للغات عادةً ما تكون مفسرة
عدل- إيه بي إل
- صفحات الخادم النشطة
- بيسيك
- كوبول
- نظم حل المعادلات:
- يوفوريا
- فورث
- Game Maker Language
- Inform
- جيه
- Lava
- بيرل
- بي إتش بي
- ليسب
- Scheme
- لغة اللوجو
- ممبس
- لغة البرمجة آر
- روبي
- JRuby
- سمول توك
- Bistro
- Dolphin Smalltalk
- F-Script
- Little Smalltalk
- Squeak
- IBM VisualAge
- VisualWorks
- لغات البرمجة النصية
- ECMAScript
- WebDNA
- الجداول الممتدة
- لغة البرمجة أس
- تي سي إل
- XOTcl
- XMLmosaic
لغات تترجم عادةً إلى لغة آلة افتراضية
عدلالعديد من اللغات تترجم أولاً إلى لغة آلة افتراضية والتي تفسر أو تترجم بدورها إلى لغة الآلة
انظر أيضاً
عدلمراجع
عدل- ^ معجم المصطلحات المعلوماتية (بالعربية والإنجليزية)، دمشق: الجمعية العلمية السورية للمعلوماتية، 2000، ص. 378، OCLC:47938198، QID:Q108408025
- ^ المعجم الموحد لمصطلحات تقانة (تكنولوجيا) المعلومات: (إنجليزي-فرنسي-عربي). سلسلة المعاجم الموحدة (36) (بالعربية والإنجليزية والفرنسية). الرباط: مكتب تنسيق التعريب. 2011. ص. 23. ISBN:978-9954-0-0742-6. OCLC:1413893208. QID:Q111267300.
- ^ Although this scheme (combining strategy 2 and 3) was used to implement certain BASIC interpreters already in the 1970s, such as the efficient BASIC interpreter of the ABC 80, for instance.
- ^ Heyne, R. (1984). "Basic-Compreter für U880" [BASIC compreter for U880 (Z80)]. radio-fernsehn-elektronik (بالألمانية). 1984 (3): 150–152.
- ^ Kühnel, Claus (1987) [1986]. "4. Kleincomputer - Eigenschaften und Möglichkeiten" [4. Microcomputer - Properties and possibilities]. In Erlekampf, Rainer; Mönk, Hans-Joachim (eds.). Mikroelektronik in der Amateurpraxis [Micro-electronics for the practical amateur] (بالألمانية) (3 ed.). Berlin: Militärverlag der Deutschen Demokratischen Republik , Leipzig. p. 222. ISBN:3-327-00357-2. 7469332.