شيفرة البايت

«شيفرة البايت» أو كود البايت ، يُطلق عليه أيضًا «الكود-باء»، [بحاجة لمصدر] هو شكل من أشكال مجموعة التعليمات المصممة للتنفيذ الفعال بواسطة مترجم برمجي.[1] على عكس الشيفرة المصدرية التي يمكن قراءتها من قبل الإنسان، فإن «البايت كود» عبارة عن أكواد رقمية وثوابت ومراجع (عادة عناوين رقمية) تشَفِّر ما ينتج من تحليل المترجم وإجراء التحليل الدلاليّ لأشياء مثل النوع والنطاق وأعماق كائنات البرنامج المتداخلة.

ينبع اسم «البايت كود» من مجموعات التعليمات التي تحتوي على أكواد تشغيل أحادية البايت مَتبُوعَة بعوامل اختيارية (معطى أو وسيط). قد يتم إخراج التمثيلات المتوسطة مثل «البايت كود» عن طريق تطبيقات لغة البرمجة لتسهيل التفسير، أو يمكن استخدامها لتقليل الاعتماد على الأجهزة ونظام التشغيل من خلال السماح بتشغيل نفس الشيفرة عبر الأنظمة أو المنصات الأساسية، على أجهزة مختلفة. غالبًا ما يتم تنفيذ «البايت كود» بشكل مباشر على جهاز افتراضي أو يمكن ترجمته إلى لغة الآلة للحصول على أداء أفضل.

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

التَّنفيذ

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

نظرًا لميزة الأداء، تقوم العديد من تطبيقات اللغة اليوم بتنفيذ برنامج على مرحلتين، أولًا تقوم بتجميع شيفرة المصدر إلى شيفرة بايت ، ثم تمرير شيفرة بايت إلى لغة الآلة. هناك آلات افتراضية قائمة على شيفرة بايت من هذا النوع لـجافا وRaku وبايثون وبِ اتش بِ وTcl وmawk وForth (ومع ذلك، نادرًا ما يتم تجميع Forth عبر شيفرة بايت بهذه الطريقة، والجهاز الظاهري أكثر عمومية بدلاً من ذلك). يعمل تطبيق بيرل وروبى 1.8 بدلاً من ذلك عن طريق السير في تمثيل شجرة بنية مجردة مشتق من الكود المصدري.

في الآونة الأخيرة، طعن مؤلفو V8 وDart في فكرة أن الكود الثنائي الوسيط ضروري للتنفيذ السريع والفعال للأجهزة الافتراضية. تقوم كل من تطبيقات اللغة هذه حاليًا بتجميع JIT المباشر من كود المصدر إلى كود الجهاز بدون وسيط رمز بايت.

انظر أيضًا

مراجع