ما هو الكومبيلر Compiler ؟

مفهوم – السؤال: ما هو الكومبيلر Compiler ؟

الجواب: مصطلح Compiler أو المترجم هو برنامج حاسوبي يقوم على تحويل الملفات المصدرية إلى أوامر مباشرة يفهمها الحاسوب وينفذها مباشرة بما يناسب بنية الحاسوب الذي يستهدفه البرنامج.

بمعنى أن المترجم Compiler عبارة عن برنامج يقوم بتحويل الشيفرة المصدرية المكتوبة بإحدى لغات البرمجة عالية المستوى إلى تمثيلٍ منخفض المستوى مع المحافظة على معنى وهدف الشيفرة المصدرية.

يتم استخدام مصطلح “الشيفرة المصدرية Source Code” للإشارة إلى النص البرمجيّ المكتوب بإحدى اللغات عالية المستوى، بينما يتم استخدام مصطلح “الشيفرة الهدف Target Code” للإشارة للشيفرة الناتجة عن عمل المترجم، والتي تكون عادةً بإحدى اللغات منخفضة المُستوى.

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

أنواع المترجمات

يمكن تقسيم المترجمات لثلاث أنواع من ناحية كيفية أدائها لمهمتها وتوليدها للشيفرة الهدف:

المترجمات أحادية المسار Single-Pass Compiler: بهذا النمط من المترجمات يتم ترجمة الشيفرة المصدرية عالية المستوى بشكلٍ مباشر للشيفرة منخفضة المستوى بدون أي مراحل وسيطة.

المترجمات ثنائية المسار Two-Pass Compiler: بهذا النمط من المترجمات يتم توليد شيفرة مصدرية وسيطة Intermediate Code وبحيث يُفهم عمل المترجم ككل على أنه قسمين: القسم القريب Front-End والقسم البعيد Back-End.

وظيفة القسم القريب هي تحويل الشيفرة المصدرية للتمثيل الوسيط وإجراء عمليات تحليل النص والمفردات بالإضافة لعمليات التحسين، ومن ثم يقوم القسم البعيد Back-End بتحويل الشيفرة المصدرية الوسيطة إلى الشيفرة الهدف مُنخفضة المستوى.

اقرأ ايضًا:

المُترجمات متعددة المسار Mutlipass Compiler: بدلًا من تجزئة عملية الترجمة لقسمين فقط، يوجد مترجمات تقوم بتقسيم عملية الترجمة لعدة أجزاء وينتج عن كلٍ منها شيفرة مصدرية وسيطة، وخرج كل مرحلة يمثل دخل المرحلة التالية. النتيجة النهائية هي الشيفرة المصدرية منخفضة المستوى.

المختصر المفيد

تمثل عملية الترجمة إحدى الركائز الأساسية في عالم البرمجة، والمترجم هو البرنامج الذي يتولى هذه المسؤولية، إذ أنه يقوم بوظيفة تحويل النص البرمجيّ من شكله عالي المستوى إلى شيفرةٍ مصدرية بلغة الآلة مفهومة من قبل الحاسوب.

ويمتلك المترجم وظائف أخرى هامة وهي تحليل النص البرمجيّ والتأكد من صحته بالإضافة لتحسينه بهدف جعله أكثر كفاءة من ناحية سرعة التنفيذ واستهلاكه لمساحة أقل على الذاكرة.

نظام معالجة لغات البرمجة Language Processing System

قبل الدخول بتفاصيل عمل المترجم نفسه والعمليات التي يجريها على الشيفرة المصدرية، يجب توضيح أمر هام: المترجم نفسه هو جزء أكبر من نظام متكامل يتم عبره توليد التعليمات المكتوبة بلغة الآلة والتي يستطيع المعالج فهمها.

خرج المترجم غير قابل للتنفيذ مباشرةً من قبل المعالج، كما أن المترجم يعتمد على مراحل أخرى قبله كي يكون قادرًا على أداء مهمته بأفضل شكلٍ ممكن.

يتم استخدام مصطلح “نظام معالجة لغات البرمجة Language Processing System” للإشارة إلى المراحل المختلفة التي يتم عبرها تحويل النص البرمجيّ عالي المستوى إلى لغة الآلة، ويتكون هذا النظام من المكونات والمراحل التالية:

الشيفرة المصدرية Source Code: وهي تمثل البرنامج المكتوب بإحدى لغات البرمجة عالية المستوى والمطلوب تنفيذها من قبل المعالج.

مرحلة ما قبل المعالجة Pre-Processing: تعتبر هذه المرحلة جزءًا من عملية الترجمة نفسها، حيث يتم توليد تمثيل جديد للشيفرة المصدرية عالية المستوى يتم استخدامه من قبل المترجم، والهدف الأساسيّ من هذه المرحلة هي تحديد موّجهات ما قبل البرمجة، التعاريف، المكاتب المضمنة.

المُفسر Interpreter: المفسر عبارة عن برنامج مشابه للمترجم من ناحية قيامه بتحويل الشيفرة المصدرية لتمثيلٍ منخفض المستوى، إلا أن الفرق الأساسيّ يكمن بأن المفسر يقوم بقراءة الشيفرة المصدرية وتنفيذها تعليمةً تلو الأخرى، بينما يقوم المترجم بتحليل كامل النص البرمجيّ ومن ثم توليد الشيفرة منخفضة المستوى. تعتمد بعض اللغات على المفسر كوسيلةٍ لتنفيذ البرامج بدلًا من المترجم.

المُجمّع Assembler: يقوم المجمع بأخذ ناتج عمل المترجم وتحويله لتعليماتٍ مكتوبة بلغة الآلة. ناتج عمل المفسر هو ما يطلق عليه اسم “الملف الكائني Object-File” الذي يتضمن التعليمات التنفيذية بالإضافة للمعطيات اللازمة لتخزين هذه التعليمات ضمن الذاكرة.

يتم أيضًا تعريف ناتج عمل المجمع على أنه “تعليمات الآلة القابلة للنقل Relocatable Machine Code“.

وهذا يعني أن تشغيل البرنامج نفسه (وهنا نعني التعليمات التنفيذية الخاصة به المكتوبة بلغة الآلة) لا يتطلب وضعه ضمن عناوين محددة في ذاكرة الوصول العشوائيّ RAM، والملفات التنفيذية بصيغة exe. من الأمثلة الشهيرة على تعليمات الآلة القابلة للنقل.

الرابط Linker: ضمن هذه المرحلة يتم ربط وجمع الملفات الكائنية المختلفة الناتجة عن عمل المجمع من أجل توليد الملف التنفيذيّ Executable File. يقوم الرابط بالبحث عن وحدات الاستدعاء التي يتضمنها البرنامج وتحديد مواقع الذاكرة التي تتضمن هذه الوحدات.

المُحمّل Loader: يعتبر المحمل أحد أجزاء نظام التشغيل ووظيفته هي تحميل الملف التنفيذيّ الناتج عن عمل الرابط ووضعه ضمن الذاكرة ومن ثم تشغيله.

شاركها

اترك تعليقاً