نكتب مفسرًا بلغة Go
212 صفحات
Arabic
PDF
4.5

نكتب مفسرًا بلغة Go

نكتب مفسرًا بلغة Go

المؤلف:

السنة:

ملخص:

مقدمة

كتاب «Writing an Interpreter in Go» (في الترجمة الروسية — «نكتب مفسرًا بلغة Go») من تأليف Thorsten Ball هو دليل عملي فريد يعلم خطوة بخطوة كيفية إنشاء مفسر كامل للغة البرمجة الخيالية Monkey. على عكس الكتب الأكاديمية عن المترجمات، يركز هذا الكتاب على الكود الفعلي والحد الأدنى من النظرية، مما يسمح للقارئ بالبدء فورًا في كتابة مفسر يعمل بلغة Go.

صدر الكتاب في عام 2018، ويحتوي على 212 صفحة، وهو موجه للمبرمجين الذين يرغبون في فهم أعمق لكيفية عمل لغات البرمجة «تحت الغطاء». لا يتطلب معرفة مسبقة في مجال المترجمات، لكنه يفترض إتقانًا جيدًا للغة Go.

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

يأخذ الكتاب القارئ بشكل متسلسل عبر جميع مراحل إنشاء المفسر: من التحليل المعجمي إلى تنفيذ الكود. المواضيع الرئيسية:

  • المحلل المعجمي (lexer) — تقسيم الكود المصدري إلى رموز (tokens).
  • المحلل النحوي (parser) — بناء شجرة النحو المجردة (AST) باستخدام النزول المتكرر وطريقة Pratt parser.
  • نظام الكائنات — تمثيل القيم (الأرقام، السلاسل النصية، القيم المنطقية، الدوال، المصفوفات، الجداول التجزئة).
  • المُقيم (eval) — اجتياز AST وتنفيذ التعبيرات والتعليمات.
  • الإغلاقات والدوال من الدرجة الأولى — تنفيذ نطاقات الرؤية والإغلاقات.
  • الدوال المضمنة — إضافة العمليات القياسية (len, puts, first, rest، إلخ).
  • نظام الأنواع — الكتابة الديناميكية مع التحقق أثناء وقت التشغيل.

ينتهي كل فصل بكود عملي يمكن اختباره فورًا. في النهاية، يحصل القارئ على مفسر قادر على تنفيذ برامج بلغة Monkey — وهي لغة ذات بنية نحوية تذكرنا بمزيج من C و JavaScript و Python.

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

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

  • مطوري Go الراغبين في تعميق فهمهم للغة وإمكانياتها.
  • المبرمجين المهتمين بالمترجمات — أولئك الذين يريدون معرفة كيفية عمل المحللات النحوية والمفسرات.
  • الطلاب والأساتذة — كإضافة عملية لدورات لغات البرمجة.
  • أي مطور يرغب في إنشاء لغته الخاصة أو DSL (لغة خاصة بالمجال).

هام: الكتاب لا يعلم Go من الصفر — يجب أن يكون القارئ قادرًا على الكتابة بلغة Go بمستوى متوسط (معرفة الهياكل، الواجهات، المؤشرات، لا حاجة للـ goroutines).

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

بعد القراءة، ستتمكن من:

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

نقاط القوة في الكتاب

التوجه العملي. كل مفهوم يُدعم فورًا بكود. أنت لا تقرأ النظرية فقط — بل تكتب المفسر سطرًا بسطر.

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

كود Go نظيف. يستخدم المؤلف Go اصطلاحيًا، والواجهات والتركيب، مما يجعل الكود تعليميًا وصناعيًا في نفس الوقت.

غياب النظرية الزائدة. على عكس «التنين» (Aho, Lam, Sethi, Ullman)، لا توجد هنا قواعد نحوية رسمية أو براهين — فقط ما هو ضروري لمفسر يعمل.

توصيات