شرح استخدام البرامج والمفسرات والمحولات في بناء المترجمات؟
نقدم لكم في هذا المقال شرح مفصل ومختصر لمادة بناء المترجمات فيما يتعلق بــ، البرامج، المفسرات والمحولات Programs, Interpreters and Translators:-↓
- لغات البرمجة Programming Languages:
تتكون لغة البرمجة من مجموعة من الرموز التي تستخدم في وصف العمليات التي يطلب المستخدم من الحاسوب إنجازها، وهي الطريقة الوحيدة التي تتم بواسطتها إعطاء الأوامر للحاسوب ليقوم بإنجاز المهمات والوظائف المحددة، هذا هو ما جعل الاهتمام بلغات البرمجة وتطويرها وإنشاء الجديد منها يأخذ حيزا كبيرا من وقت المبرمجين ومن اهتمامهم.
إن البرامج المكتوبة بلغة التجميع Assembly أو بلغة عالية المستوى High Level Language لا يمكن تنفيذها من قبل الحاسوب إلا بعد تحويلها إلى اللغة الوحيدة التي "يفهمها" الحاسوب وهي لغة الآلة Machine Language.
عملية التحويل هذه تسمى ترجمة Compiling والبرنامج الذي يقوم بالترجمة يسمى مترجم Target Program.
- معالجات اللغة Language Processors:
بناء على ما سبق يمكن القول أن المترجم هو عبارة عن برنامج يمكنه قراءة البرنامج المكتوب بإحدى اللغات عالية المستوى التي تسمى لغة المصدر Source Language والذي يسمى البرنامج المصدري Source Program وترجمته إلى برنامج مكافئ بلغة الآلة يسمى برنامج الهدف Target Program.
Source Program→[Compiler]→ Target Program.
ومن الجدير بالذكر أن مهمة المترجم لا تقتصر فقط على تحويل اللغة وإنما يقوم أيضا خلال عملية الترجمة باكتشاف الأخطاء التي قد يحتوي عليها البرنامج المصدري، عندما يصبح برنامج الهدف على الشكل الذي يكون فيه قابلا للتنفيذ دها فقط يتم تحويل المدخلات إلى مخرجات ونتائج أي تتم عملية التنفيذ.
هناك نوع شائع آخر من معالجات اللغة يسمى المفسر Interpreter الذي يتلخص عمله في أنه بدلا من إنتاج برنامج الهدف أولا ثم إدخال البيانات اللازمة للتنفيذ بعد ذلك، يقوم المفسر بإدخال البيانات في نفس الوقت الذي تجري فيه ترجمة البرنامج أي بشكل متزامن.
↓ → Source p
.Interpreter] →output] →
↑→ Input
هو الذي يتم إنتاجه بواسطة المترجم يكون عادة أسرع في تحويل المدخلات إلى مخرجات من البرنامج الذي ينتجه المفسر في حين المفسر أفضل في تشخيص الأخطاء لأنه يقوم بتنفيذ البرنامج جملة تلو الأخرى.
في بعض الأحيان تتم عملية الترجمة على شكل خليط من عمل المترجم والمفسر معا كما هو الحال في معالج لغة JAVA الذي يجمع بين الترجمة والتفسير حيث تتم أولا ترجمة البرنامج المكتوب بلغة JAVA إلى برنامج وسيط يسمى bytecodes والذي يتم لاحقا تفسيره بواسطة الآلة الافتراضية Virtual Machine.
الفائدة من هذا الترتيب هو أن bytecodes التي تمت ترجمتها على آلة معينة يمكن تفسيرها على آلة أخرى كما يمكن ذلك من خلال شبكة.
بالإضافة إلى المترجم فإن هناك مجموعة من البرامج لا بد من توفرها حتى تتم عملية إنتاج برنامج الهدف القابل للتنفيذ.
يمكن تقسيمه إلى وحدات برمجية تسمى Modules يتم تخزينها في ملفات منفصلة وعملية تجميع أجزاء البرنامج المصدري توكل في بعض الأحيان إلى برنامج منفصل يسمى Preprocessor أو المعالج الأولي.
مخطط نظام معالجة اللغة
البرامج الكبيرة عادة تتم ترجمتها في أجزاء وفي مرحلة لاحقة يجب وصل هذه الأجزاء وربطها مع بعضها ومع ملفات المكتبات وملفات هدف أخرى مكونة شفرة برنامج واحد قابل للتنفيذ.
البرنامج الذي يقوم الربط يسمى الرابط Linker وهو المسؤول عن أيجاد العناوين في الذاكرة لتخزين هذا البرنامج في حين يقوم برنامج آخر هو Loader أو المحمل بوضع هذا البرنامج التنفيذي بجميع أجزائه في الذاكرة لتنفيذه.