تخطَّ إلى المحتوى

⚙️ شرح المترجمات ونظرية اللغات

ما هو المُترجِم (Compiler) وكيف يعمل؟

الدرس 1 من 2· ⏱ 2 دقائق قراءة

كل برنامج تكتبه بلغة عالية المستوى يحتاج إلى وسيط يحوّله إلى شيء يفهمه الحاسوب. هذا الوسيط غالبًا هو المُترجِم (Compiler). هذه الصفحة هي المرجع التأسيسي لمسار المترجمات ونظرية اللغات.

ما هو المُترجِم؟

المُترجِم برنامج يأخذ الكود المصدري المكتوب بلغة يفهمها البشر (مثل C أو Rust)، ويحوّله إلى كود منخفض المستوى يستطيع الحاسوب تنفيذه (كود آلة أو bytecode).

الفكرة الجوهرية: البشر يكتبون بلغات معبّرة ومريحة، والمعالج ينفّذ تعليمات ثنائية بسيطة؛ المُترجِم هو الجسر بين العالمين، ويتحقّق في الطريق من صحّة الكود.

مراحل الترجمة

لا يحدث التحويل دفعةً واحدة، بل عبر مراحل متتابعة، تأخذ كلٌّ منها مخرجات سابقتها:

  1. التحليل المعجمي (Lexical Analysis): تقطيع النصّ إلى «رموز (Tokens)» — كلمات مفتاحية، أسماء، أرقام، رموز عمليات.
  2. التحليل النحوي (Parsing): ترتيب الرموز في بنية شجرية تعكس قواعد اللغة، تُسمّى شجرة الصياغة المجرّدة (AST).
  3. التحليل الدلالي (Semantic Analysis): التحقّق من المعنى — تطابق الأنواع، تعريف المتغيّرات قبل استخدامها، وغير ذلك.
  4. التوليد والتحسين (Code Generation & Optimization): إنتاج الكود الهدف، مع تحسينات تجعله أسرع أو أصغر دون تغيير سلوكه.

فهم هذه المراحل يفسّر أنواع الأخطاء التي تصادفها: خطأ معجمي (رمز غير صالح)، نحوي (بنية خاطئة)، أو دلالي (نوع غير متطابق).

المُترجِم مقابل المُفسِّر

بديل المُترجِم هو المُفسِّر (Interpreter)، وهو ينفّذ الكود المصدري مباشرةً سطرًا بسطر دون إنتاج ملفّ قابل للتنفيذ مسبقًا:

  • المُترجِم: يحوّل البرنامج كاملًا مرّةً واحدة إلى ملفّ تنفيذي يُشغَّل لاحقًا (غالبًا أسرع تنفيذًا).
  • المُفسِّر: ينفّذ الكود فورًا خطوةً بخطوة (غالبًا أسرع في التطوير والتجربة).

الحدود ليست صارمة: لغات كثيرة تمزج الأسلوبين (ترجمة إلى bytecode ثم تفسيره أو ترجمته لحظيًا). سنفرد مقارنةً مستقلّة للمترجم مقابل المفسّر لاحقًا.

لماذا تتعلّم كيف تعمل المترجمات؟

  • تفهم ما يحدث فعلًا حين تضغط «تشغيل»، فتزول عنك «سحرية» الأدوات.
  • تكتب كودًا أوضح، وتقرأ رسائل الأخطاء بفهم لأصلها ومرحلتها.
  • تبني أساسًا لموضوعات عملية: المحلّلات (Parsers)، اللغات المخصّصة (DSLs)، وأدوات تحليل الكود.

الخطوات التالية

سنتعمّق في أوّل مرحلة — التحليل المعجمي (Tokenization) — ثم شجرة الصياغة المجرّدة (AST) وأنواع التحليل النحوي، وصولًا إلى بناء مُفسِّر بسيط بنفسك. ولرؤية الفرق بين اللغات المترجَمة والمفسَّرة عمليًا، قارن بين لغة مترجَمة مثل C وأخرى ديناميكية.

شرح ما هو المُترجِم (Compiler) وكيف يعمل؟ — المترجمات ونظرية اللغات بالعربي
ما هو المُترجِم (Compiler) وكيف يعمل؟المترجمات ونظرية اللغات بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟