حرف C

المترجم

Compiler

آخر تحديث: 2026-10-10
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

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

الشرح التقني المتقدم

يعتبر المترجم (Compiler) الأداة الأساسية التي تحول الشيفرة المصدرية (Source Code) المكتوبة بلغات برمجة عالية المستوى إلى ملفات تنفيذية (Executable Files) قادرة على العمل مباشرة على نظام التشغيل. في بيئة لينكس، تعتبر تجميعة مترجمات جنو (GCC) هي المعيار القياسي والأكثر استخداما لبناء نواة النظام (Kernel) والبرامج المختلفة.

مراحل عملية الترجمة في لينكس

لا تحدث عملية الترجمة في خطوة واحدة، بل تمر الشيفرة المصدرية بأربع مراحل أساسية خلف الكواليس:

  • المعالجة المسبقة (Preprocessing): يتم فيها دمج الملفات الرأسية ومعالجة الماكرو (Macros) وإزالة التعليقات.
  • الترجمة (Compilation): تحويل الشيفرة المصدرية إلى لغة التجميع (Assembly Language).
  • التجميع (Assembly): تحويل كود التجميع إلى لغة الآلة (Machine Code) وإنشاء ملفات الكائنات (Object Files).
  • الربط (Linking): ربط ملفات الكائنات مع المكتبات البرمجية (Libraries) لإنتاج الملف التنفيذي النهائي.

الاستخدام العملي وأوامر الترجمة

الاستخدام الأكثر شيوعا للمترجم في لينكس هو ترجمة برامج مكتوبة بلغة سي (C) باستخدام الأداة gcc. لترجمة ملف باسم main.c إلى برنامج تنفيذي، نستخدم الأمر التالي:

gcc main.c -o myprogram

خيارات هامة عند استخدام هذا الأمر:

  • الخيار -o يحدد اسم الملف التنفيذي الناتج (Output). في حال عدم استخدامه، سيقوم النظام بإنشاء ملف افتراضي باسم a.out.
  • الخيار -Wall يقوم بتفعيل جميع التحذيرات (Warnings) لاكتشاف الأخطاء المحتملة في الكود مبكرا قبل تشغيله.
  • الخيار -O2 يقوم بتفعيل تحسينات الأداء (Optimization) لجعل البرنامج يستهلك موارد أقل ويعمل بشكل أسرع.

لتنفيذ البرنامج بعد الانتهاء من ترجمته، نكتب مسار الملف في الطرفية (Terminal) بهذا الشكل:

./myprogram

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

يعد فهم كيفية عمل المترجمات (Compilers) وإدارة التبعيات (Dependencies) باستخدام أدوات البناء مثل Make و CMake مهارة جوهرية لأي مدير نظام أو مطور في بيئة لينكس، حيث تمنحك القدرة على بناء البرامج من المصدر (Build from source) وتخصيصها لتلائم بنية النظام (Architecture) الخاص بك بأعلى كفاءة ممكنة بدلا من الاعتماد فقط على الحزم الجاهزة.