كتابة مترجم بلغة Go
246 صفحات
Arabic
PDF
4.5

كتابة مترجم بلغة Go

كتابة مترجم بلغة Go

المؤلف:

السنة:

ملخص:

مقدمة

كتاب «Writing a Compiler in Go» (بالعربية: «كتابة مترجم بلغة Go») هو الجزء الثاني من الثنائي الشهير لتورستن بول، المخصص لإنشاء مفسر ومترجم للغة Monkey. إذا كان الكتاب الأول («Writing an Interpreter in Go») يعلم بناء مفسر، فإن هذا المجلد يقود القارئ إلى أبعد من ذلك - نحو إنشاء مترجم كامل يولد البايت كود، وآلة افتراضية خاصة به (VM).

صدر الكتاب في عام 2019، ويحتوي على 246 صفحة، وهو موجه للمبرمجين الذين يتقنون لغة Go (Golang). إنه مثالي لأولئك الذين يريدون فهم كيفية عمل المترجمات والبايت كود والآلات الافتراضية بعمق، عمليًا.

عن ماذا يتحدث الكتاب

يشرح تورستن بول بشكل متسلسل، خطوة بخطوة، كيفية تحويل المفسر من الكتاب الأول إلى مترجم. الفكرة الأساسية: بدلاً من تنفيذ AST (شجرة التركيب المجردة) مباشرة، نقوم بتجميعها إلى تعليمات بايت كود، ثم تنفيذها على آلة افتراضية.

يغطي الكتاب المواضيع التالية:

  • تصميم نظام التعليمات (opcodes) للبايت كود.
  • تنفيذ مترجم يحول AST إلى سلسلة من البايت كود.
  • إنشاء آلة افتراضية قائمة على المكدس (VM).
  • معالجة المتغيرات، الدوال، الإغلاقات (closures)، المصفوفات، الجداول التجزئة (hashes)، والدوال المضمنة.
  • تحسين وتصحيح أخطاء المترجم.
  • اختبار كل مرحلة باستخدام اختبارات الوحدة.

لمن هذا الكتاب

الكتاب موجه لـ مطوري Go من المستوى المتوسط والمتقدم، الذين هم بالفعل على دراية بأساسيات اللغة ويريدون التعمق في البرمجة النظامية. سيكون مفيدًا أيضًا لكل من يهتم بالمترجمات والآلات الافتراضية والبنية الداخلية للغات البرمجة. إذا كنت قد قرأت الكتاب الأول - فهذا تكملة إلزامية. إذا لم تكن قد قرأته - يوصي المؤلف بالبدء به، ولكن يمكنك البدء مباشرة، على الرغم من أنه سيكون أكثر صعوبة.

ماذا سيتعلم القارئ

  • كيف يعمل تجميع AST إلى بايت كود. ستتعلم تصميم نظام التعليمات وكتابة كود يولد البايت كود من شجرة التحليل.
  • كيف تعمل الآلة الافتراضية القائمة على المكدس. ستقوم بتنفيذ VM تنفذ البايت كود، وتدير المكدس، واستدعاءات الدوال، والذاكرة.
  • كيفية معالجة الإغلاقات (closures). أحد أصعب المواضيع - التقاط المتغيرات من السياق الخارجي - تم شرحه بتفصيل كبير.
  • كيفية اختبار المترجم و VM. يولي المؤلف اهتمامًا كبيرًا للاختبار، مما يجعل الكتاب عمليًا.
  • كيفية تصحيح أخطاء البايت كود. ستتعلم كيفية إخراج التتبع (trace) والعثور على الأخطاء في المترجم.

نقاط القوة

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

لمن يُوصى به

سيكون الكتاب مفيدًا:

  • لمطوري Go الراغبين في توسيع آفاقهم وفهم كيفية عمل لغات البرمجة من الداخل.
  • للطلاب والمدرسين في دورات المترجمات - كمادة عملية ممتازة.
  • لمطوري اللغات الأخرى (Python, Java, C++) الملمين بلغة Go - المفاهيم عالمية.

توصيات