الدرس 9: من الكود المصدري إلى الملف التنفيذي
في الدرس السابق رأينا أن الكود عالي المستوى يجب أن يتحول في نهاية المطاف إلى كود آلة. لكن من الذي يقوم بالترجمة، وكيف تتحول عدة ملفات كتبناها إلى برنامج واحد قابل للتشغيل؟ الجواب هو سلسلة أدوات (toolchain): مُصرِّف (compiler) يترجم الكود المصدري إلى لغة تجميع (assembly)، ومُجمِّع (assembler) يحوّل ل
لكي يعمل الكود الذي كتبته، فإنه يمرّ بعدة محطات: أولاً يترجمه برنامج إلى كود آلة، ثم تُدمج عدة أجزاء في ملف واحد، وأخيراً يُحمَّل الملف إلى الذاكرة ويعمل. كل محطة هي أداة منفصلة لها مهمة واحدة.
- المُصرِّف
- برنامج يترجم الكود المصدري المكتوب بلغة عالية المستوى إلى كود بمستوى أدنى، عادةً لغة تجميع أو كود آلة.
- المُجمِّع
- برنامج يترجم كود لغة التجميع إلى كود آلة ويُنتج ملفاً كائنياً.
- الملف الكائني
- ناتج المُجمِّع لملف مصدري واحد: كود آلة مع جدول رموز، قبل الربط.
- الرابط
- برنامج يدمج عدة ملفات كائنية ومكتبات في ملف تنفيذي واحد ويحلّ المراجع العابرة للملفات.
- المُحمِّل
- جزء من نظام التشغيل يَنسخ الملف التنفيذي من القرص إلى الذاكرة ويُشغّله كعملية.
- الملف التنفيذي
- ملف جاهز للتشغيل يحتوي على كود آلة مربوط، وهو المنتج النهائي لسلسلة البناء.
- المُفسِّر
- برنامج يُنفّذ الكود سطراً سطراً في زمن التشغيل، بدلاً من ترجمته مسبقاً إلى ملف تنفيذي.
- شيفرة وسيطة (bytecode)
- صيغة وسيطة، ليست كوداً مصدرياً ولا كود آلة المعالج، يُشغّلها مُفسِّر أو آلة افتراضية.
- الربط الساكن والديناميكي
- الربط الساكن يُدمج المكتبة داخل الملف التنفيذي؛ أما الربط الديناميكي فيحمّلها بشكل منفصل في زمن التشغيل ويشاركها بين البرامج.
- رمز
- اسم دالة أو متغير في جدول الرموز، يستخدمه الرابط لوصل الاستدعاء بتعريفه.