سؤال

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

لقد اعتقدت دائمًا أن كل هذه البرامج يتم تحليلها مرة واحدة في التمهيد، وتحويلها إلى شجرة بيانات "مكتوبة بقوة"، وما إلى ذلك.هل هذا غير صحيح؟

هل كانت مفيدة؟

المحلول

سأكون لئيمًا الآن وأقول أنه يتم تفسير كل لغة برمجة تقريبًا، سواء كان ذلك برنامجًا (Ruby أو Python أو Java) أو مترجمًا للأجهزة (C أو C++) :)

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

نصائح أخرى

التفسير هي كلمة ذات تعريف فضفاض للغاية. حتى تعليمات رمز الجهاز يتم تفسيرها من قبل المعالج.

بشكل عام ، يتم التمييز بين اللغات التي يتم تجميعها قبل تشغيلها واللغات التي لا تحتوي على عملية تجميع وتتم تشغيلها داخل برنامج آخر ، تسمى المترجم. غالبًا ما يشار إلى الأنواع الأخيرة من اللغات اللغات المفسرة.

الخط ليس واضحًا في بعض الحالات:

  • يمكن تجميع بعض اللغات أو تفسيرها ، على سبيل المثال PHP.
  • قد يتم تجميع بعض التعليمات البرمجية المفسرة في وقت التشغيل في تعليمات الجهاز الأصلي (مجموعة JIT).
  • قد تحتوي بعض اللغات المترجمة على exec الوظيفة التي تسمح بإنشاء التعليمات البرمجية وتنفيذها في وقت التشغيل ، متجاوزًا عملية التجميع العادية.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top