آلة افتراضية لشيفرة البايت
علّمنا مفسّرنا المكتوب بلغة Java، وهو jlox، كثيرًا من أساسيات لغات البرمجة، لكنّ ما زلنا لدينا الكثير مما نتعلّمه. أولًا، إن شغّلت أيّ برامج Lox مثيرة للاهتمام في jlox، فإنّك ستكتشف أنّها بطيئة لدرجة موجعة. أسلوب التفسير الذي يستخدمه -- التجوّل على شجرة التحليل المجرّد مباشرةً (tree-walk) -- جيّد بما يكفي لبعض الاستخدامات في العالم الحقيقي، لكنّه يترك الكثير مما يُرام على حاله للغة برمجة نصّية عامّة الغرض.
كما أنّنا نعتمد ضمنيًا على مزايا وقت التشغيل في JVM نفسها. فنحن نأخذ أمرًا مثل
instanceof في Java على أنّه يعمل بطريقة ما. ولا نقلق ولو للحظة واحدة بشأن إدارة
الذاكرة لأنّ جامع نفايات (garbage collector) في JVM يتولّى ذلك نيابةً عنا.
حين كان تركيزنا على المفاهيم عالية المستوى، كان من المقبول أن نمرّ على تلك الأمور دون تعمّق. لكن الآن بعد أن صرنا نعرف طريقنا حول المفسّر، حان وقت أن نهبط إلى تلك الطبقات الأدنى ونبني آلتنا الافتراضية (virtual machine) الخاصة من الصفر باستخدام مكتبة C القياسية فحسب...