قبل جافا وظهرت لغات البرمجة C # ، وكانت برامج الكمبيوتر فقط تجميع وانتاج أو تفسيرها. تم تجميع لغات مثل لغة التجميع ، C ، C ++ ، Fortran ، Pascal دائمًا في كود الآلة. عادة ما يتم تفسير لغات مثل Basic و VbScript و JavaScript.
إذن ما هو الفرق بين برنامج مترجم وبرنامج مترجم؟
تجميع
لكتابة برنامج يأخذ الخطوات التالية:
- تحرير البرنامج
- ترجمة البرنامج إلى ملفات رمز الجهاز.
- ربط ملفات التعليمات البرمجية الجهاز في برنامج runnable (المعروف أيضًا باسم exe).
- تصحيح أو تشغيل البرنامج
مع بعض اللغات مثل Turbo Pascal و Delphi يتم دمج الخطوتين 2 و 3.
ملفات كود الآلة عبارة عن وحدات قائمة بذاتها من كود الآلة والتي تتطلب الربط معًا لإنشاء البرنامج النهائي. السبب في وجود ملفات رمز الجهاز منفصلة هو الكفاءة ؛ المترجمين لديك فقط لإعادة ترجمة مصدر الرمز التي تغيرت. يتم إعادة استخدام ملفات رمز الجهاز من الوحدات النمطية غير المتغيرة. هذا هو المعروف باسم جعل التطبيق. إذا كنت ترغب في إعادة ترجمة كل شفرة المصدر وإعادة بنائها ، فإن ذلك يُعرف باسم Build.
الربط هو عملية معقدة تقنيًا حيث يتم ربط كل استدعاءات الوظائف بين الوحدات المختلفة معًا ، ويتم تخصيص مواقع الذاكرة
المتغيرات ويتم وضع جميع التعليمات البرمجية في الذاكرة ، ثم كتابتها إلى القرص كبرنامج كامل. غالبًا ما تكون هذه خطوة أبطأ من التجميع حيث يجب قراءة جميع ملفات كود الجهاز في الذاكرة وربطها معًا.الترجمة الفورية
الخطوات لتشغيل البرنامج عبر مترجم هي
- تحرير البرنامج
- تصحيح أو تشغيل البرنامج
هذه عملية أسرع بكثير وتساعد المبرمجين المبتدئين على تحرير واختبار الكود الخاص بهم بشكل أسرع من استخدام برنامج التحويل البرمجي. العيب هو أن البرامج التي يتم تفسيرها تعمل بشكل أبطأ من البرامج المترجمة. بقدر أبطأ من 5 إلى 10 مرات ، يجب إعادة قراءة كل سطر من التعليمات البرمجية ، ثم إعادة معالجتها.
أدخل Java و C #
كل من هذه اللغات شبه مترجمة. أنها تولد رمز وسيطة التي هي الأمثل للتفسير. هذه اللغة الوسيطة مستقلة عن الأجهزة الأساسية مما يسهل عملية النقل البرامج المكتوبة في أي من المعالجات الأخرى ، طالما تمت ترجمة مترجم فوري لذلك المعدات.
Java ، عند التحويل البرمجي ، تنتج شفرة ثنائية يتم تفسيرها في وقت التشغيل بواسطة Java Virtual Machine (JVM). تستخدم العديد من JVMs مترجم Just-In-Time الذي يحول bytecode إلى رمز الجهاز الأصلي ثم يقوم بتشغيل هذا الرمز لزيادة سرعة الترجمة. في الواقع ، يتم تجميع شفرة مصدر Java في عملية من مرحلتين.
يتم تصنيف C # إلى اللغة المشتركة المتوسطة (CIL) ، والتي كانت تعرف سابقًا باسم Microsoft Intermediate Language MSIL. يتم تشغيل هذا بواسطة وقت تشغيل اللغة العامة (CLR) ، وهو جزء من إطار عمل .NET. بيئة توفر خدمات الدعم مثل تجميع البيانات المهملة وتجميع Just-In-Time.
تستخدم كل من Java و C # تقنيات تسريع بحيث تكون السرعة الفعالة تقريبًا بنفس سرعة اللغة المترجمة الخالصة. إذا كان التطبيق يقضي الكثير من الوقت في القيام بالإدخال والإخراج مثل قراءة ملفات القرص أو التشغيل قاعدة البيانات استعلامات ثم الفرق السرعة بالكاد ملحوظ.
ماذا يعني هذا بالنسبة لي؟
ما لم تكن لديك حاجة محددة للسرعة ويجب زيادة معدل الإطارات بضع إطارات في الثانية ، يمكنك نسيان السرعة. أي من C أو C ++ أو C # سيوفر سرعة كافية للألعاب ، ومترجمين ، وأنظمة التشغيل.