اذهب إلى المحتوى
  • 0

لمذا هناك لغات تستخدم interpreter على الرغم من ان compiler اسرع بكثير ؟

Kareem Abdelhamed3

السؤال

Recommended Posts

  • 0

استخدام (interpreter) أو (compiler) يعتمد على مجموعة من الاعتبارات والاحتياجات في تصميم اللغة البرمجية والتطبيق الذي يتم تطويره

1.سهولة التطوير والاختبار:
   يمكن أن يكون استخدام المترجمات (interpreter)أكثر سهولة خلال مرحلة التطوير حيث يمكنك تشغيل الكود بشكل فوري دون الحاجة إلى خطوة تجميع (compile) مسبقة

2. التنقل والتشغيل الديناميكي:
  في بعض الحالات يحتاج التطبيق إلى التفاعل مع المستخدم أو بيئة متغيرة بشكل ديناميكي المترجم يمكنه تنفيذ الكود البرمجي مباشرةوبشكل ديناميكي بدون حاجة لخطوة تجميع(compile)

3. تحسين الإنتاجية:
   في بعض السيناريوهات يمكن أن يكون التطوير أسرع باستخدام لغةبرمجة تستخدم (interpreter) حيث يتيح ذلك للمطورين اختبار التغييرات بشكل فوري

4. التعامل مع متغيرات البيئة:
    بعض اللغات تحتاج إلى التفاعل مع متغيرات البيئة بشكل مباشر وهو أمر يمكن أن يكون أكثر تحقيقًا من خلال استخدام (interpreter)

تم التعديل في بواسطة Mahmoud Hassan19
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الفرق بينهما متباين للغاية، فالمترجم مثلا (Compiler) هو برنامج يقوم بتحويل الشفرة المصدرية للبرنامج (مثل الشفرة المكتوبة بلغة C++ أو Java) إلى رمز ثنائي (ملف تنفيذي) يمكن تشغيله مباشرة من قبل الحاسوب. 

ويتم استخدامه لكونه يحمل:

  • أداءً عاليا: حيث يتم تحويل الشفرة المصدرية إلى رمز ثنائي مباشرة، وبالتالي تكون البرامج التي تم إنشاؤها باستخدام المترجم عادةً أكثر كفاءة من حيث الأداء.
  • تحسينات في الأمان: فبمجرد تحويل الشفرة المصدرية إلى رمز ثنائي، يصعب بشكل عام على المستخدمين الآخرين رؤية أو تعديل الشفرة المصدرية. هذا يجعل من الصعب استغلال الثغرات الأمنية في البرامج.
  • الانتشار الواسع: بحيث يمكن تشغيل البرامج التي تم تحويلها باستخدام المترجم على أنظمة متعددة دون الحاجة إلى ترجمتها مرة أخرى، مما يجعلها ملائمة للتوزيع.

أما ال (Interpreter) فهو برنامج يقوم بتنفيذ الشفرة المصدرية للبرنامج مباشرة دون الحاجة إلى تحويلها إلى رمز ثنائي.

ويتم استخدامه عادة لوجود هذه الميزات:

  • التطوير والاختبار السريع: بحيث يمكن تطوير واختبار البرامج باستخدام المترجم بشكل أسرع من المترجم، حيث يمكن للمطورين رؤية نتائج تنفيذ الشفرة المصدرية على الفور دون الحاجة إلى تحويلها أولاً.
  • التفاعلية: هو مفيد في بناء الأنظمة التفاعلية مثل الواجهات الرسومية، حيث يمكن للمستخدمين التفاعل مباشرة مع البرنامج ورؤية النتائج على الفور.
  • التوزيع السهل: بحيث يمكن توزيع البرامج التي تستخدم المترجم بسهولة أكبر، حيث لا يلزم إعادة تحويل الشفرة المصدرية إلى رمز ثنائي قبل تشغيلها على الأنظمة الأخرى.

ومن هنا يمكنك أن تستفيد أكثر لفهمهما بشكل جيد:

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هناك عدة أسباب رئيسية لوجود لغات البرمجة المفسرة على الرغم من كون اللغات المترجمة أسرع:

  •  تتيح اللغات المفسرة تطوير أسرع لأن الكود لا يحتاج إلى الترجمة في كل مرة يتم فيها إجراء تغيير. وهذا يجعل عملية تصحيح الأخطاء والتكرار في الكود أسرع بكثير.
  • لا تتطلب اللغات المفسرة الترجمة إلى نظام أساسي أو هندسة معينة. يجعلها نموذج التفسير أكثر قابلية للنقل عبر أنظمة التشغيل.
  • تطبيقات الويب: اللغات المفسرة مثل جافاسكربت و PHP وبايثون مناسبة جدًا لبناء تطبيقات الويب الديناميكية لأن طبيعتها المفسرة تحاكي كيفية تنفيذ الكود في المتصفح.

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

ساعطيك اياها باختصار شديد

على الرغم من أن compiler اسرع الا ان لل interpreter  ميزات كثييرة 

والان سأوضح لك الفرق والمميزات بين الاثنين 

نبدأ أولا مع الـ Interpreter:

  • يقوم بترجمة سطر سطر أو فقرة فقرة من الكود سورس
  • يستمر في ترجمة وتنفيذ البرنامج وإذا كان هناك خطأ فهو يتوقف في السطر الذي يحتوي على الخطأ أثناء عملية التنفيذ
  • يقوم بترجمة الكود سورس بسرعة لكن ينفذه ببطئ
  • سهولة تتبع الأخطاء لأن البرنامج يتوقف في مكان الخطأ مباشرة

اللغات التي تعتمد مبدأ الـ Interpreter :

  • لغة  php
  • لغة Python
  • لغة Ruby
  • لغة JavaScript
  • لغة Perl

ثانيا الـ Compiler:

  • يقوم بتحليل البرنامج بالكامل ثم يترجمه كاملا إلى لغة الآلة
  • يأخذ وقت طويل في ترجمة الكود سورس لكن ينفذه بسرعة كبيرة جدا
  • يقوم باكتشاف الأخطاء بعد عمل تحليل للبرنامج بالكامل لهذا تحديد مكان الخطأ صعب بالمقارنة مع الـ interpreter

اللغات التي تعتمد مبدأ الـ Compiler:

  • لغة c و c++
  • لغة c#
  • لغة java تجمع بين المبدأين معا وهذا هو ما يجعل البرامج التي كتبت بالجافا تشتغل في جميع أنظمة التشغيل

لذلك تستطيع استخدام الذي تريده حسب اللغة التي تستخدمها ومتطلبات مشروعك 

وبالتوفيق لك 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...